lc/lc123/cloud/app/api/controller/WMSAdjustBillController.java

620 lines
34 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.JSON;
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.dataentity.entity.DynamicObjectCollection;
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 kd.bos.util.StringUtils;
import tqq9.lc123.cloud.app.api.model.WMSXmlReturn;
import tqq9.lc123.cloud.app.api.utils.ApiResultExt;
import tqq9.lc123.cloud.app.api.utils.Constants;
import tqq9.lc123.cloud.app.plugin.utils.BaseDataMatchUtils;
import java.util.*;
/**
* WMS形态转换单接口--库存异动
*/
@ApiController(value = "WMSAdjustBillController", desc = "WMS-形态转换单接口bg")
public class WMSAdjustBillController {
@ApiPostMapping(value = "/WMSAdjustBill", desc = "WMS库存异动api")
public CustomApiResult<ApiResultExt> wmsAdjustBill
(@NotNull @ApiParam(value = "调整单号", required = true) String cPACode,
@NotNull @ApiParam(value = "归属", required = true) String BelongTo,
@NotNull @ApiParam(value = "仓库编码", required = true) String cWhCode,
@NotNull @ApiParam(value = "明细", required = true) String Details) {
ApiResultExt resultExt = new ApiResultExt();
List<ApiResultExt.ResultBean> results = new ArrayList<>();
ApiResultExt.ResultBean resultBean = new ApiResultExt.ResultBean();
ApiResultExt.Error error = new ApiResultExt.Error();
ArrayList<String> rowMsg = new ArrayList<>();
JSONObject keys = new JSONObject();
boolean billStatus = true;
if(StringUtils.isBlank(cPACode)){
rowMsg.add("入参调整单号字段cPACode为空");
billStatus = false;
}else {
keys.put("cPACode", cPACode);
}
//仓库
DynamicObject warehouse = null;
if(StringUtils.isBlank(cWhCode)){
rowMsg.add("入参仓库编码字段cWhCode为空");
billStatus = false;
}else{
QFilter f = new QFilter("number", "=", cWhCode);
DynamicObject[] whArr = BusinessDataServiceHelper.load("bd_warehouse", "id,name,number", new QFilter[]{f});
if(whArr == null || whArr.length == 0){
rowMsg.add("根据仓库编码字段cWhCode【"+cWhCode+"】在金蝶系统中没有查询到对应的仓库信息");
billStatus = false;
}else {
warehouse = whArr[0];
warehouse = BusinessDataServiceHelper.loadSingle(warehouse.getPkValue(), "bd_warehouse");
}
}
//库存组织
DynamicObject org = null;
if(StringUtils.isBlank(BelongTo)){
rowMsg.add("入参归属字段BelongTo为空");
billStatus = false;
}else{
QFilter f = new QFilter("number", "=", BelongTo);
DynamicObject[] orgArr = BusinessDataServiceHelper.load("bos_org", "id,name,number", new QFilter[]{f});
if(orgArr == null || orgArr.length == 0){
rowMsg.add("根据归属字段BelongTo【"+BelongTo+"】在金蝶系统中没有查询到对应的组织信息");
billStatus = false;
}else {
org = orgArr[0];
}
}
JSONArray DetailsArr = JSON.parseArray(Details);
if(DetailsArr != null && DetailsArr.size() > 0){
for (int i = 0; i < DetailsArr.size(); i++) {
JSONObject detail = DetailsArr.getJSONObject(i);
String cInvCode = detail.getString("cInvCode");//产品编码
String cOBatch = detail.getString("cOBatch");//挑战前批次
String cIBatch = detail.getString("cIBatch");//调整后批次
Integer iPAQuantity = detail.getInteger("iPAQuantity");//数量
if(StringUtils.isBlank(cInvCode)){
rowMsg.add("入参产品编码字段cInvCode为空");
billStatus = false;
} else {
QFilter f = new QFilter("number", "=", cInvCode);
DynamicObject[] materialArr = BusinessDataServiceHelper.load("bd_material", "id,number,name", new QFilter[]{f});
if(materialArr == null || materialArr.length == 0){
rowMsg.add("根据产品编码字段cInvCode【"+cInvCode+"】在金蝶系统中没有查询到对应的物料信息");
billStatus = false;
}
}
if(StringUtils.isBlank(cOBatch)){
rowMsg.add("入参挑战前批次字段cOBatch为空");
billStatus = false;
}else {
QFilter f = new QFilter("number", "=", cOBatch);
DynamicObject[] lotArr = BusinessDataServiceHelper.load("bd_lot", "id,number,name", new QFilter[]{f});
if(lotArr == null || lotArr.length == 0){
rowMsg.add("根据挑战前批次字段cOBatch【"+cOBatch+"】在金蝶系统中没有查询到对应的批次信息");
billStatus = false;
}
}
if(StringUtils.isBlank(cIBatch)){
rowMsg.add("入参调整后批次字段cIBatch为空");
billStatus = false;
}else {
QFilter f = new QFilter("number", "=", cIBatch);
DynamicObject[] lotArr = BusinessDataServiceHelper.load("bd_lot", "id,number,name", new QFilter[]{f});
if(lotArr == null || lotArr.length == 0){
rowMsg.add("根据调整后批次字段cIBatch【"+cIBatch+"】在金蝶系统中没有查询到对应的批次信息");
billStatus = false;
}
}
if(iPAQuantity == null || iPAQuantity == 0){
rowMsg.add("入参数量字段iPAQuantity为空或为零");
billStatus = false;
}
}
}else{
rowMsg.add("入参明细字段Details为空");
billStatus = false;
}
resultBean.setBillIndex(0);
resultBean.setKeys(keys);
resultBean.setNumber(cPACode);
if(!billStatus){
//出现错误后返回
error.setKeys(keys);
error.setRowMsg(rowMsg);
error.setEntityKey("im_adjustbill");
resultBean.setId("");
resultBean.setBillStatus(billStatus);
resultBean.setErrors(error);
results.add(resultBean);
resultExt.setFailCount(0);
resultExt.setSuccessCount(1);
}else{
//常量准备-查询单据类型
QFilter f = new QFilter("number", "=", "im_Adjustbill_STD_BT_S");
DynamicObject[] billtypeArr = BusinessDataServiceHelper.load("bos_billtype", "id,name,number", new QFilter[]{f});
DynamicObject billtype = billtypeArr[0];
//业务类型
f = new QFilter("number", "=", "511");
DynamicObject[] biztypeArr = BusinessDataServiceHelper.load("bd_biztype", "id,name,number", new QFilter[]{f});
DynamicObject biztype = biztypeArr[0];
//出库库存类型
f = new QFilter("number", "=", "110");
DynamicObject[] invtypeArr = BusinessDataServiceHelper.load("bd_invtype", "id,number,name", new QFilter[]{f});
DynamicObject invtype = invtypeArr[0];
//出库库存状态
f = new QFilter("number", "=", "110");
DynamicObject[] invstatusArr = BusinessDataServiceHelper.load("bd_invstatus", "id,number,name", new QFilter[]{f});
DynamicObject invstatus = invstatusArr[0];
//必填校验通过,构建并保存数据
DynamicObject adjustbill = null;
QFilter qFilter = new QFilter("billno", "=", cPACode);
DynamicObject[] billArr = BusinessDataServiceHelper.load("im_adjustbill", "id,billno", new QFilter[]{qFilter});
if(billArr != null && billArr.length > 0){
adjustbill = billArr[0];
adjustbill = BusinessDataServiceHelper.loadSingle(adjustbill.getPkValue(), "im_adjustbill");
DynamicObjectCollection beforeEntries = adjustbill.getDynamicObjectCollection("billentry");
if(beforeEntries != null && beforeEntries.size() > 0){
beforeEntries.clear();
}
}else {
adjustbill = BusinessDataServiceHelper.newDynamicObject("im_adjustbill");
adjustbill.set("billno", cPACode);
}
adjustbill.set("billno", cPACode);
adjustbill.set("biztime", new Date());
adjustbill.set("org", org);
adjustbill.set("billtype", billtype);
adjustbill.set("biztype", biztype);
adjustbill.set("billstatus", "A");
adjustbill.set("billcretype", "1");
DynamicObjectCollection beforeEntries = adjustbill.getDynamicObjectCollection("billentry");//调整前明细
for (int i = 0; i < DetailsArr.size(); i++) {
JSONObject detail = DetailsArr.getJSONObject(i);
String cInvCode = detail.getString("cInvCode");//产品编码
String cOBatch = detail.getString("cOBatch");//挑战前批次
Date dOMDate = detail.getDate("dOMDate");//挑战前生产日期
Date dOVDate = detail.getDate("dOVDate");//挑战前有效期至
String cIBatch = detail.getString("cIBatch");//调整后批次
Date dIMDate = detail.getDate("dIMDate");//调整入生产日期
Date dIVDate = detail.getDate("dIVDate");//调整入有效期至
Integer iPAQuantity = detail.getInteger("iPAQuantity");//数量
//物料
f = new QFilter("number", "=", cInvCode);
DynamicObject[] materialArr = BusinessDataServiceHelper.load("bd_material", "id,number,name,baseunit", new QFilter[]{f});
DynamicObject material = materialArr[0];
//物料库存信息
f = new QFilter("masterid.id", "=", material.getPkValue());
DynamicObject[] materialinvArr = BusinessDataServiceHelper.load("bd_materialinventoryinfo", "id,number,name", new QFilter[]{f});
DynamicObject materialinv = materialinvArr[0];
materialinv = BusinessDataServiceHelper.loadSingle(materialinv.getPkValue(), "bd_materialinventoryinfo");
//调整前商品
DynamicObject oGoods = null;
DynamicObject[] oGoodsArr = BaseDataMatchUtils.materialMatchGoods(cInvCode, cOBatch, true);
if(oGoodsArr != null && oGoodsArr.length > 0){
oGoods = oGoodsArr[0];
}
//调整后商品
DynamicObject iGoods = null;
DynamicObject[] iGoodsArr = BaseDataMatchUtils.materialMatchGoods(cInvCode, cIBatch, true);
if(iGoodsArr != null && iGoodsArr.length > 0){
iGoods = iGoodsArr[0];
}
//调整前批号
f = new QFilter("number", "=", cOBatch);
DynamicObject[] olotArr = BusinessDataServiceHelper.load("bd_lot", "id,number,name", new QFilter[]{f});
DynamicObject olot = olotArr[0];
//调整后批次
f = new QFilter("number", "=", cIBatch);
DynamicObject[] ilotArr = BusinessDataServiceHelper.load("bd_lot", "id,number,name", new QFilter[]{f});
DynamicObject ilot = ilotArr[0];
//调整前明细
DynamicObject beforeEntry = beforeEntries.addNew();
beforeEntry.set("materialmasterid", material);
beforeEntry.set("material", materialinv);
beforeEntry.set("tqq9_goods", oGoods);
beforeEntry.set("unit", material.getDynamicObject("baseunit"));
beforeEntry.set("qty", iPAQuantity);
beforeEntry.set("baseunit", material.getDynamicObject("baseunit"));
beforeEntry.set("baseqty", iPAQuantity);
beforeEntry.set("lot", olot);
beforeEntry.set("lotnumber", cOBatch);
beforeEntry.set("producedate", dOMDate);
beforeEntry.set("expirydate", dOVDate);
beforeEntry.set("warehouse", warehouse);
beforeEntry.set("invtype", invtype);
beforeEntry.set("invstatus", invstatus);
beforeEntry.set("ownertype", "bos_org");
beforeEntry.set("owner", org);
beforeEntry.set("keepertype", "bos_org");
beforeEntry.set("keeper", org);
DynamicObjectCollection afterEntries = beforeEntry.getDynamicObjectCollection("afterentity");
//调整后明细
DynamicObject afterEntry = afterEntries.addNew();
afterEntry.set("materialmasterid1", material);
afterEntry.set("material1", materialinv);
afterEntry.set("tqq9_goods1", iGoods);
afterEntry.set("unit1", material.getDynamicObject("baseunit"));
afterEntry.set("qty1", iPAQuantity);
afterEntry.set("baseunit1", material.getDynamicObject("baseunit"));
afterEntry.set("baseqty1", iPAQuantity);
afterEntry.set("lot1", ilot);
afterEntry.set("lotnumber1", cIBatch);
afterEntry.set("producedate1", dIMDate);
afterEntry.set("expirydate1", dIVDate);
afterEntry.set("warehouse1", warehouse);
afterEntry.set("invtype1", invtype);
afterEntry.set("invstatus1", invstatus);
afterEntry.set("ownertype1", "bos_org");
afterEntry.set("owner1", org);
afterEntry.set("keepertype1", "bos_org");
afterEntry.set("keeper1", org);
}
OperationResult operationResult = OperationServiceHelper.executeOperate("save", "im_adjustbill", new DynamicObject[]{adjustbill}, OperateOption.create());
if(!operationResult.isSuccess()){
List<IOperateInfo> allErrorOrValidateInfo = operationResult.getAllErrorOrValidateInfo();
for (IOperateInfo iOperateInfo : allErrorOrValidateInfo) {
rowMsg.add(iOperateInfo.getMessage());
}
error.setKeys(keys);
error.setRowMsg(rowMsg);
error.setEntityKey("im_adjustbill");
resultBean.setId("");
resultBean.setBillStatus(false);
resultBean.setErrors(error);
results.add(resultBean);
resultExt.setFailCount(1);
resultExt.setSuccessCount(0);
}else {
operationResult = OperationServiceHelper.executeOperate("submit", "im_adjustbill", new DynamicObject[]{adjustbill}, OperateOption.create());
if(!operationResult.isSuccess()){
List<IOperateInfo> allErrorOrValidateInfo = operationResult.getAllErrorOrValidateInfo();
for (IOperateInfo iOperateInfo : allErrorOrValidateInfo) {
rowMsg.add(iOperateInfo.getMessage());
}
error.setKeys(keys);
error.setRowMsg(rowMsg);
error.setEntityKey("im_adjustbill");
resultBean.setId(adjustbill.getString("id"));
resultBean.setBillStatus(false);
resultBean.setErrors(error);
results.add(resultBean);
resultExt.setFailCount(1);
resultExt.setSuccessCount(0);
}else {
operationResult = OperationServiceHelper.executeOperate("audit", "im_adjustbill", new DynamicObject[]{adjustbill}, OperateOption.create());
if(!operationResult.isSuccess()){
List<IOperateInfo> allErrorOrValidateInfo = operationResult.getAllErrorOrValidateInfo();
for (IOperateInfo iOperateInfo : allErrorOrValidateInfo) {
rowMsg.add(iOperateInfo.getMessage());
}
error.setKeys(keys);
error.setRowMsg(rowMsg);
error.setEntityKey("im_adjustbill");
resultBean.setId(adjustbill.getString("id"));
resultBean.setBillStatus(false);
resultBean.setErrors(error);
results.add(resultBean);
resultExt.setFailCount(1);
resultExt.setSuccessCount(0);
}else {
resultBean.setId(adjustbill.getString("id"));
resultBean.setBillStatus(true);
results.add(resultBean);
resultExt.setFailCount(1);
resultExt.setSuccessCount(0);
}
}
}
}
resultExt.setResult(results);
return CustomApiResult.success(resultExt);
}
@ApiPostMapping(value = "/WMSAdjustBill_SH", desc = "WMS上海库存异动api")
public CustomApiResult<WMSXmlReturn> wmsAdjustBill_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 jsonObj0 = (JSONObject) itemArr.get(0);
JSONObject jsonObj1 = (JSONObject) itemArr.get(1);
//区分入库明细与出库明细
String orderType0 = jsonObj0.getString("orderType");//单据类型
if (ApiResultExt.validateRequired(orderType0, "String")) {
errormsg = errormsg.append("").append("传入参数 ownerCode 为空");
}else {
if ("QTRK".equals(orderType0)) {
ckObj = jsonObj0;
rkObj = jsonObj1;
} else {
ckObj = jsonObj1;
rkObj = jsonObj0;
}
}
String ownerCode = ckObj.getString("ownerCode");//货主编码-必填
DynamicObject org = null;
if (ApiResultExt.validateRequired(ownerCode, "String")) {
errormsg = errormsg.append("").append("传入参数 ownerCode 为空");
}else{
QFilter f = new QFilter("number", "=", ownerCode);
DynamicObject[] bos_orgs = BusinessDataServiceHelper.load("bos_org", "id,number,name", new QFilter[]{f});
if(bos_orgs != null && bos_orgs.length > 0){
org = bos_orgs[0];
}else{
errormsg = errormsg.append("").append("根据传入参数 ownerCode"+ ownerCode +" 没有查询到对应组织信息");
}
}
String warehouseCode = ckObj.getString("warehouseCode");//仓库编码-必填
DynamicObject warehouse = null;
if (ApiResultExt.validateRequired(warehouseCode, "String")) {
errormsg = errormsg.append("").append("传入参数 warehouseCode 为空");
}else{
QFilter f = new QFilter("number", "=", warehouseCode);
DynamicObject[] whArr = BusinessDataServiceHelper.load("bd_warehouse", "id,name,number", new QFilter[]{f});
if(whArr == null || whArr.length == 0){
errormsg = errormsg.append("").append("根据传入参数 warehouseCode"+ warehouseCode +" 没有查询到对应苍鹭信息");
}else {
warehouse = whArr[0];
warehouse = BusinessDataServiceHelper.loadSingle(warehouse.getPkValue(), "bd_warehouse");
}
}
String orderCode = ckObj.getString("orderCode");//异动单据编码-必填
if (ApiResultExt.validateRequired(orderCode, "String")) {
errormsg = errormsg.append("").append("传入参数 orderCode 为空");
}
String outBizCode = ckObj.getString("outBizCode");//外部业务编码,用于去重-必填
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=残次,JS=机损, XS= 箱损, ZT=在途库存DJ=冻结
String quantity = ckObj.getString("quantity");//异动数量-必填,有正负
if (ApiResultExt.validateRequired(quantity, "int")) {
errormsg = errormsg.append("").append("传入参数 quantity 为空");
}
String batchCode = ckObj.getString("batchCode");//批次编码-必填
DynamicObject olot = null;
if (ApiResultExt.validateRequired(batchCode, "String")) {
errormsg = errormsg.append("").append("传入参数 batchCode 为空");
}else{
//调整前批号
QFilter f = new QFilter("number", "=", batchCode);
DynamicObject[] olotArr = BusinessDataServiceHelper.load("bd_lot", "id,number,name", new QFilter[]{f});
if(olotArr != null && olotArr.length > 0){
olot = olotArr[0];
}else{
errormsg = errormsg.append("").append("根据传入参数 batchCode"+ batchCode +" 没有查询到对应批次信息");
}
}
Date productDate = ckObj.getDate("productDate");//生产日期
Date expireDate = ckObj.getDate("expireDate");//过期日期
String produceCode = ckObj.getString("produceCode");//生产批号
Date changeTime = ckObj.getDate("changeTime");//异动时间-必填
if (ApiResultExt.validateRequired(changeTime, "Date")) {
errormsg = errormsg.append("").append("传入参数 changeTime 为空");
}
String remark = ckObj.getString("remark");//备注
//调整前商品
DynamicObject oGoods = null;
DynamicObject[] oGoodsArr = BaseDataMatchUtils.materialMatchGoods(itemCode, batchCode, true);
if(oGoodsArr != null && oGoodsArr.length > 0){
oGoods = oGoodsArr[0];
}else{
errormsg = errormsg.append("").append("根据物料编码 itemCode"+ itemCode +"批次编号batchCode"+batchCode+" 没有查询到对应商品信息");
}
String batchCode_e = rkObj.getString("batchCode");//入库批号
//调整后商品
DynamicObject iGoods = null;
DynamicObject[] iGoodsArr = BaseDataMatchUtils.materialMatchGoods(itemCode, batchCode_e, true);
if(iGoodsArr != null && iGoodsArr.length > 0){
iGoods = iGoodsArr[0];
}else{
errormsg = errormsg.append("").append("根据物料编码 itemCode"+ itemCode +",批次编号 batch-batchCode"+batchCode_e+" 没有查询到对应商品信息");
}
//调整后批次
DynamicObject ilot = null;
if (ApiResultExt.validateRequired(batchCode_e, "String")) {
errormsg = errormsg.append("").append("传入参数 batch-batchCode 为空");
}else{
QFilter f = new QFilter("number", "=", batchCode_e);
DynamicObject[] ilotArr = BusinessDataServiceHelper.load("bd_lot", "id,number,name", new QFilter[]{f});
if(ilotArr != null && ilotArr.length > 0){
ilot = ilotArr[0];
}else{
errormsg = errormsg.append("").append("根据传入参数 batch-batchCode"+ batchCode_e +" 没有查询到对应批次信息");
}
}
int quantity_e = rkObj.getInteger("quantity");
//调整后生产日期
Date productDate_e = rkObj.getDate("productDate");
//调整后有效期
Date expireDate_e = rkObj.getDate("expireDate");
//常量准备-查询单据类型
QFilter f = new QFilter("number", "=", "im_Adjustbill_STD_BT_S");
DynamicObject[] billtypeArr = BusinessDataServiceHelper.load("bos_billtype", "id,name,number", new QFilter[]{f});
DynamicObject billtype = billtypeArr[0];
//业务类型
f = new QFilter("number", "=", "511");
DynamicObject[] biztypeArr = BusinessDataServiceHelper.load("bd_biztype", "id,name,number", new QFilter[]{f});
DynamicObject biztype = biztypeArr[0];
//出库库存类型
f = new QFilter("number", "=", "110");
DynamicObject[] invtypeArr = BusinessDataServiceHelper.load("bd_invtype", "id,number,name", new QFilter[]{f});
DynamicObject invtype = invtypeArr[0];
//出库库存状态
f = new QFilter("number", "=", "110");
DynamicObject[] invstatusArr = BusinessDataServiceHelper.load("bd_invstatus", "id,number,name", new QFilter[]{f});
DynamicObject invstatus = invstatusArr[0];
if (errormsg.length() > 0) {
response.setMessage(errormsg.substring(1));
response.setCode("-1");
response.setFlag("failure");
return CustomApiResult.success(wmsXmlReturn);
}else {
//单据构建
DynamicObject adjustbill = BusinessDataServiceHelper.newDynamicObject("im_adjustbill");
adjustbill.set("billno", orderCode);
adjustbill.set("biztime", changeTime);
adjustbill.set("org", org);
adjustbill.set("billtype", billtype);
adjustbill.set("biztype", biztype);
adjustbill.set("billstatus", "A");
adjustbill.set("billcretype", "1");
DynamicObjectCollection beforeEntries = adjustbill.getDynamicObjectCollection("billentry");//调整前明细
//调整前明细
DynamicObject beforeEntry = beforeEntries.addNew();
beforeEntry.set("materialmasterid", material);
beforeEntry.set("material", materialinv);
beforeEntry.set("tqq9_goods", oGoods);
beforeEntry.set("unit", material.getDynamicObject("baseunit"));
beforeEntry.set("qty", quantity);
beforeEntry.set("baseunit", material.getDynamicObject("baseunit"));
beforeEntry.set("baseqty", quantity);
beforeEntry.set("lot", olot);
beforeEntry.set("lotnumber", batchCode);
beforeEntry.set("producedate", productDate);
beforeEntry.set("expirydate", expireDate);
beforeEntry.set("warehouse", warehouse);
beforeEntry.set("invtype", invtype);
beforeEntry.set("invstatus", invstatus);
beforeEntry.set("ownertype", "bos_org");
beforeEntry.set("owner", org);
beforeEntry.set("keepertype", "bos_org");
beforeEntry.set("keeper", org);
DynamicObjectCollection afterEntries = beforeEntry.getDynamicObjectCollection("afterentity");
//调整后明细
DynamicObject afterEntry = afterEntries.addNew();
afterEntry.set("materialmasterid1", material);
afterEntry.set("material1", materialinv);
afterEntry.set("tqq9_goods1", iGoods);
afterEntry.set("unit1", material.getDynamicObject("baseunit"));
afterEntry.set("qty1", quantity_e);
afterEntry.set("baseunit1", material.getDynamicObject("baseunit"));
afterEntry.set("baseqty1", quantity_e);
afterEntry.set("lot1", ilot);
afterEntry.set("lotnumber1", batchCode_e);
afterEntry.set("producedate1", productDate_e);
afterEntry.set("expirydate1", expireDate_e);
afterEntry.set("warehouse1", warehouse);
afterEntry.set("invtype1", invtype);
afterEntry.set("invstatus1", invstatus);
afterEntry.set("ownertype1", "bos_org");
afterEntry.set("owner1", org);
afterEntry.set("keepertype1", "bos_org");
afterEntry.set("keeper1", org);
//保存
OperationResult operationResult = OperationServiceHelper.executeOperate("save", "im_adjustbill", new DynamicObject[]{adjustbill}, 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_adjustbill", new DynamicObject[]{adjustbill}, 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_adjustbill", new DynamicObject[]{adjustbill}, 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);
}
}
}