lc/lc123/cloud/app/api/controller/WMSChangeWhDiffAreaControll...

253 lines
14 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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);
}
}
}