【WMS跨区移库接口】构建
This commit is contained in:
		
							parent
							
								
									b1ff0ea6e8
								
							
						
					
					
						commit
						8ef191d605
					
				|  | @ -0,0 +1,252 @@ | ||||||
|  | package tqq9.lc123.cloud.app.api.controller; | ||||||
|  | 
 | ||||||
|  | import com.alibaba.fastjson.JSONArray; | ||||||
|  | import com.alibaba.fastjson.JSONObject; | ||||||
|  | import com.drew.lang.annotations.NotNull; | ||||||
|  | import kd.bos.dataentity.OperateOption; | ||||||
|  | import kd.bos.dataentity.entity.DynamicObject; | ||||||
|  | import kd.bos.entity.operate.result.IOperateInfo; | ||||||
|  | import kd.bos.entity.operate.result.OperationResult; | ||||||
|  | import kd.bos.openapi.common.custom.annotation.ApiController; | ||||||
|  | import kd.bos.openapi.common.custom.annotation.ApiParam; | ||||||
|  | import kd.bos.openapi.common.custom.annotation.ApiPostMapping; | ||||||
|  | import kd.bos.openapi.common.result.CustomApiResult; | ||||||
|  | import kd.bos.orm.query.QFilter; | ||||||
|  | import kd.bos.servicehelper.BusinessDataServiceHelper; | ||||||
|  | import kd.bos.servicehelper.operation.OperationServiceHelper; | ||||||
|  | import org.apache.commons.lang3.StringUtils; | ||||||
|  | import tqq9.lc123.cloud.app.api.model.WMSXmlReturn; | ||||||
|  | import tqq9.lc123.cloud.app.api.utils.ApiResultExt; | ||||||
|  | 
 | ||||||
|  | import java.text.ParseException; | ||||||
|  | import java.text.SimpleDateFormat; | ||||||
|  | import java.util.Date; | ||||||
|  | import java.util.List; | ||||||
|  | import java.util.Map; | ||||||
|  | 
 | ||||||
|  | @ApiController(value = "WMSChangeWhDiffAreaController", desc = "WMS跨区移库通知接口,自定义插件") | ||||||
|  | public class WMSChangeWhDiffAreaController { | ||||||
|  | 
 | ||||||
|  |     @ApiPostMapping(value = "/WMS_ChgWhDiffArea_SH", desc = "WMS跨区移库通知接口_SH") | ||||||
|  |     public CustomApiResult<WMSXmlReturn> WMS_ChgWhDiffArea_SH | ||||||
|  |             (@NotNull @ApiParam(value = "入参", required = true) Map<String, Object> dataMap) { | ||||||
|  |         WMSXmlReturn wmsXmlReturn = new WMSXmlReturn(); | ||||||
|  |         WMSXmlReturn.Response response = new WMSXmlReturn.Response(); | ||||||
|  |         wmsXmlReturn.setResponse(response); | ||||||
|  |         response.setCode("0"); | ||||||
|  |         response.setFlag("success"); | ||||||
|  |         response.setMessage("成功"); | ||||||
|  |         StringBuilder errormsg = new StringBuilder(); | ||||||
|  | 
 | ||||||
|  |         JSONObject data = new JSONObject(dataMap); | ||||||
|  |         JSONObject request = data.getJSONObject("request"); | ||||||
|  |         JSONObject items = request.getJSONObject("items"); | ||||||
|  |         JSONArray itemArr = items.getJSONArray("item"); | ||||||
|  |         if (itemArr != null && itemArr.size() == 2){ | ||||||
|  |             JSONObject ckObj = null; | ||||||
|  |             JSONObject rkObj = null; | ||||||
|  |             JSONObject item0 = (JSONObject) itemArr.get(0); | ||||||
|  |             JSONObject item1 = (JSONObject) itemArr.get(1); | ||||||
|  |             String orderType = item0.getString("orderType");//单据类型:YDCK=移动出库,YDRK= 移动入库,必填 | ||||||
|  |             if (ApiResultExt.validateRequired(orderType, "String")) { | ||||||
|  |                 errormsg = errormsg.append(";").append("传入参数 warehouseCode 为空"); | ||||||
|  |             }else { | ||||||
|  |                 if("YDCK".equals(orderType)){ | ||||||
|  |                     ckObj = item0; | ||||||
|  |                 }else{ | ||||||
|  |                     rkObj = item1; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             //数据校验 | ||||||
|  |             String ownerCode = ckObj.getString("ownerCode");//货主编码-默认 LICHI | ||||||
|  |             String warehouseCode = ckObj.getString("warehouseCode");//仓库编码 | ||||||
|  |             DynamicObject warehouse = null; | ||||||
|  |             DynamicObject org = null; | ||||||
|  |             if (ApiResultExt.validateRequired(warehouseCode, "String")) { | ||||||
|  |                 errormsg = errormsg.append(";").append("传入参数 warehouseCode 为空"); | ||||||
|  |             }else{ | ||||||
|  |                 //查询仓库 | ||||||
|  |                 QFilter f = new QFilter("number", "=", warehouseCode); | ||||||
|  |                 DynamicObject[] bd_warehouseArr = BusinessDataServiceHelper.load("bd_warehouse", "id,number,name", new QFilter[]{f}); | ||||||
|  |                 if(bd_warehouseArr != null && bd_warehouseArr.length > 0){ | ||||||
|  |                     warehouse = bd_warehouseArr[0]; | ||||||
|  |                     //TODO 根据仓库获取对应的组织 | ||||||
|  | 
 | ||||||
|  |                 }else{ | ||||||
|  |                     errormsg = errormsg.append(";").append("根据传入参数 warehouseCode:"+warehouseCode+" 没有查询到仓库信息"); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             String orderCode = ckObj.getString("orderCode");//单据编码 | ||||||
|  |             if (ApiResultExt.validateRequired(orderCode, "String")) { | ||||||
|  |                 errormsg = errormsg.append(";").append("传入参数 orderCode 为空"); | ||||||
|  |             } | ||||||
|  |             String outBizCode = ckObj.getString("outBizCode");//消息ID,去重用 | ||||||
|  |             String itemCode = ckObj.getString("itemCode");//物料编码 | ||||||
|  |             DynamicObject material = null; | ||||||
|  |             DynamicObject materialinv = null; | ||||||
|  |             if (ApiResultExt.validateRequired(itemCode, "String")) { | ||||||
|  |                 errormsg = errormsg.append(";").append("传入参数 itemCode 为空"); | ||||||
|  |             }else{ | ||||||
|  |                 //物料 | ||||||
|  |                 QFilter f = new QFilter("number", "=", itemCode); | ||||||
|  |                 DynamicObject[] materialArr = BusinessDataServiceHelper.load("bd_material", "id,number,name,baseunit", new QFilter[]{f}); | ||||||
|  |                 if(materialArr != null && materialArr.length > 0){ | ||||||
|  |                     material = materialArr[0]; | ||||||
|  |                     //物料库存信息 | ||||||
|  |                     f = new QFilter("masterid.id", "=", material.getPkValue()); | ||||||
|  |                     DynamicObject[] materialinvArr = BusinessDataServiceHelper.load("bd_materialinventoryinfo", "id,number,name", new QFilter[]{f}); | ||||||
|  |                     if(materialinvArr != null && materialinvArr.length > 0){ | ||||||
|  |                         materialinv = materialinvArr[0]; | ||||||
|  |                         materialinv = BusinessDataServiceHelper.loadSingle(materialinv.getPkValue(), "bd_materialinventoryinfo"); | ||||||
|  |                     }else{ | ||||||
|  |                         errormsg = errormsg.append(";").append("物料编码:"+ itemCode +" 没有生成对应物料库存信息"); | ||||||
|  |                     } | ||||||
|  |                 }else{ | ||||||
|  |                     errormsg = errormsg.append(";").append("根据传入参数 itemCode:"+ itemCode +" 没有查询到对应物料信息"); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             String itemId = ckObj.getString("itemId");//仓库系统物料ID | ||||||
|  |             String inventoryType = ckObj.getString("inventoryType");//库存类型:ZP=正品, CC=残次 | ||||||
|  |             int quantity = ckObj.getInteger("quantity");//数量 | ||||||
|  |             if (ApiResultExt.validateRequired(quantity, "String")) { | ||||||
|  |                 errormsg = errormsg.append(";").append("传入参数 quantity 为空"); | ||||||
|  |             } | ||||||
|  |             String transferZone = ckObj.getString("transferZone");//移入移出区域 | ||||||
|  |             if (ApiResultExt.validateRequired(transferZone, "String")) { | ||||||
|  |                 errormsg = errormsg.append(";").append("传入参数 transferZone 为空"); | ||||||
|  |             }else{ | ||||||
|  |                 //TODO 处理区域信息 | ||||||
|  | 
 | ||||||
|  |             } | ||||||
|  |             String batchCode = ckObj.getString("batchCode");//批次 | ||||||
|  |             DynamicObject lot = null; | ||||||
|  |             if (ApiResultExt.validateRequired(batchCode, "String")) { | ||||||
|  |                 errormsg = errormsg.append(";").append("传入参数 batchCode 为空"); | ||||||
|  |             }else{ | ||||||
|  |                 //查询批号 | ||||||
|  |                 QFilter f = new QFilter("number", "=", batchCode); | ||||||
|  |                 DynamicObject[] bd_lotArr = BusinessDataServiceHelper.load("bd_lot", "id,name,number", new QFilter[]{f}); | ||||||
|  |                 if(bd_lotArr != null && bd_lotArr.length > 0){ | ||||||
|  |                     lot = bd_lotArr[0]; | ||||||
|  |                 }else{ | ||||||
|  |                     errormsg = errormsg.append(";").append("根据传入参数 batchCode:"+ batchCode +" 没有查询到对应批次信息"); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             Date productDate = ckObj.getDate("productDate");//生产日期 | ||||||
|  |             Date expireDate = ckObj.getDate("expireDate");//过期日期 | ||||||
|  |             String produceCode = ckObj.getString("produceCode");//生产批号 | ||||||
|  |             String changeTimeStr = ckObj.getString("changeTime");//移出时间 | ||||||
|  |             Date changeTime = new Date(); | ||||||
|  |             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | ||||||
|  |             if (ApiResultExt.validateRequired(changeTime, "String")) { | ||||||
|  |                 errormsg = errormsg.append(";").append("传入参数 batchCode 为空"); | ||||||
|  |             }else{ | ||||||
|  |                 try { | ||||||
|  |                     changeTime = sdf.parse(changeTimeStr); | ||||||
|  |                 } catch (ParseException e) { | ||||||
|  |                     throw new RuntimeException(e); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             String remark = ckObj.getString("remark");//备注 | ||||||
|  | 
 | ||||||
|  |             //入库信息 | ||||||
|  |             String ownerCode_1 = rkObj.getString("ownerCode");//货主编码-默认 LICHI | ||||||
|  |             String warehouseCode_1 = rkObj.getString("warehouseCode");//仓库编码 | ||||||
|  |             DynamicObject warehouse_1 = null; | ||||||
|  |             DynamicObject org_1 = null; | ||||||
|  |             if (ApiResultExt.validateRequired(warehouseCode_1, "String")) { | ||||||
|  |                 errormsg = errormsg.append(";").append("传入参数 warehouseCode 为空"); | ||||||
|  |             }else{ | ||||||
|  |                 //查询仓库 | ||||||
|  |                 QFilter f = new QFilter("number", "=", warehouseCode_1); | ||||||
|  |                 DynamicObject[] bd_warehouseArr = BusinessDataServiceHelper.load("bd_warehouse", "id,number,name", new QFilter[]{f}); | ||||||
|  |                 if(bd_warehouseArr != null && bd_warehouseArr.length > 0){ | ||||||
|  |                     warehouse_1 = bd_warehouseArr[0]; | ||||||
|  |                     //TODO 根据仓库获取对应的组织 | ||||||
|  | 
 | ||||||
|  |                 }else{ | ||||||
|  |                     errormsg = errormsg.append(";").append("根据传入参数 warehouseCode:"+warehouseCode_1+" 没有查询到仓库信息"); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             String orderCode_1 = rkObj.getString("orderCode");//单据编码 | ||||||
|  |             String outBizCode_1 = rkObj.getString("outBizCode");//消息ID,去重用 | ||||||
|  |             String itemCode_1 = rkObj.getString("itemCode");//物料编码 | ||||||
|  |             String itemId_1 = rkObj.getString("itemId");//仓库系统物料ID | ||||||
|  |             String inventoryType_1 = rkObj.getString("inventoryType");//库存类型:ZP=正品, CC=残次 | ||||||
|  |             int quantity_1 = rkObj.getInteger("quantity");//数量 | ||||||
|  |             String transferZone_1 = rkObj.getString("transferZone");//移入移出区域 | ||||||
|  |             if (ApiResultExt.validateRequired(transferZone_1, "String")) { | ||||||
|  |                 errormsg = errormsg.append(";").append("传入参数 transferZone 为空"); | ||||||
|  |             }else{ | ||||||
|  |                 //TODO 处理区域信息 | ||||||
|  | 
 | ||||||
|  |             } | ||||||
|  |             String batchCode_1 = rkObj.getString("batchCode");//批次 | ||||||
|  |             Date productDate_1 = rkObj.getDate("productDate");//生产日期 | ||||||
|  |             Date expireDate_1 = rkObj.getDate("expireDate");//过期日期 | ||||||
|  |             String produceCode_1 = rkObj.getString("produceCode");//生产批号 | ||||||
|  |             Date changeTime_1 = rkObj.getDate("changeTime");//移出时间 | ||||||
|  |             String remark_1 = rkObj.getString("remark");//备注 | ||||||
|  | 
 | ||||||
|  |             if (errormsg.length() > 0) { | ||||||
|  |                 response.setMessage(errormsg.substring(1)); | ||||||
|  |                 response.setCode("-1"); | ||||||
|  |                 response.setFlag("failure"); | ||||||
|  |                 return CustomApiResult.success(wmsXmlReturn); | ||||||
|  |             }else { | ||||||
|  |                 DynamicObject outBill = BusinessDataServiceHelper.newDynamicObject("im_otheroutbill"); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |                 //保存 | ||||||
|  |                 OperationResult operationResult = OperationServiceHelper.executeOperate("save", "im_otheroutbill", new DynamicObject[]{outBill}, OperateOption.create()); | ||||||
|  |                 if (!operationResult.isSuccess()) { | ||||||
|  |                     List<IOperateInfo> allErrorOrValidateInfo = operationResult.getAllErrorOrValidateInfo(); | ||||||
|  |                     for (IOperateInfo iOperateInfo : allErrorOrValidateInfo) { | ||||||
|  |                         errormsg = errormsg.append(";").append(iOperateInfo.getMessage()); | ||||||
|  |                     } | ||||||
|  |                     response.setMessage(errormsg.substring(1)); | ||||||
|  |                     response.setCode("-1"); | ||||||
|  |                     response.setFlag("failure"); | ||||||
|  |                     return CustomApiResult.success(wmsXmlReturn); | ||||||
|  |                 } else { | ||||||
|  |                     //提交 | ||||||
|  |                     operationResult = OperationServiceHelper.executeOperate("submit", "im_otheroutbill", new DynamicObject[]{outBill}, OperateOption.create()); | ||||||
|  |                     if (!operationResult.isSuccess()) { | ||||||
|  |                         List<IOperateInfo> allErrorOrValidateInfo = operationResult.getAllErrorOrValidateInfo(); | ||||||
|  |                         for (IOperateInfo iOperateInfo : allErrorOrValidateInfo) { | ||||||
|  |                             errormsg = errormsg.append(";").append(iOperateInfo.getMessage()); | ||||||
|  |                         } | ||||||
|  |                         response.setMessage(errormsg.substring(1)); | ||||||
|  |                         response.setCode("-1"); | ||||||
|  |                         response.setFlag("failure"); | ||||||
|  |                         return CustomApiResult.success(wmsXmlReturn); | ||||||
|  |                     } else { | ||||||
|  |                         //审核 | ||||||
|  |                         operationResult = OperationServiceHelper.executeOperate("audit", "im_otheroutbill", new DynamicObject[]{outBill}, OperateOption.create()); | ||||||
|  |                         if (!operationResult.isSuccess()) { | ||||||
|  |                             List<IOperateInfo> allErrorOrValidateInfo = operationResult.getAllErrorOrValidateInfo(); | ||||||
|  |                             for (IOperateInfo iOperateInfo : allErrorOrValidateInfo) { | ||||||
|  |                                 errormsg = errormsg.append(";").append(iOperateInfo.getMessage()); | ||||||
|  |                             } | ||||||
|  |                             response.setMessage(errormsg.substring(1)); | ||||||
|  |                             response.setCode("-1"); | ||||||
|  |                             response.setFlag("failure"); | ||||||
|  |                             return CustomApiResult.success(wmsXmlReturn); | ||||||
|  |                         } | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  | 
 | ||||||
|  |                 response.setCode("0"); | ||||||
|  |                 response.setFlag("success"); | ||||||
|  |                 response.setMessage("成功"); | ||||||
|  |                 return CustomApiResult.success(wmsXmlReturn); | ||||||
|  |             } | ||||||
|  |         }else { | ||||||
|  |             response.setMessage("传入参数items为空或者items数量不对 "); | ||||||
|  |             response.setCode("-1"); | ||||||
|  |             response.setFlag("failure"); | ||||||
|  |             return CustomApiResult.success(wmsXmlReturn); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue