From d4636876810d42e6db8599a817b58ef07a289831 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BE=9A=E8=B1=86=E8=B1=86?= <13356128+sunandmoon60@user.noreply.gitee.com> Date: Mon, 3 Nov 2025 16:25:12 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=97=A5=E5=BF=97=E6=8E=A5=E5=8F=A3=EF=BC=8C?= =?UTF-8?q?=E8=BF=94=E5=88=A9=E8=A7=84=E5=88=99=EF=BC=8C=E5=85=A5=E5=BA=93?= =?UTF-8?q?=E8=B0=83=E6=95=B4=EF=BC=8C=E9=80=80=E8=B4=A7=E8=A1=A5=E8=B4=A7?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/controller/WMSPurInController.java | 11 ++- lc123/cloud/app/api/utils/Constants.java | 1 + lc123/cloud/app/eip/iscb/LCLogService.java | 2 +- .../conm/purconmAddRebateRulesPlugin.java | 23 +++++ .../operate/im/OtherInIotManagePlugin.java | 92 +++++++++++++++---- .../operate/im/PurInIotManagePlugin.java | 4 +- .../im/PurOrderPushReceiptNoticePlugin.java | 2 +- 7 files changed, 112 insertions(+), 23 deletions(-) diff --git a/lc123/cloud/app/api/controller/WMSPurInController.java b/lc123/cloud/app/api/controller/WMSPurInController.java index 987400e..250d7e5 100644 --- a/lc123/cloud/app/api/controller/WMSPurInController.java +++ b/lc123/cloud/app/api/controller/WMSPurInController.java @@ -471,9 +471,16 @@ public class WMSPurInController { } } + int i=0; //回传成功 - int failCount = 0;//失败数量 - int successCount = 1;//成功数量 + if(results.size()>0){ + boolean billStatus = results.get(0).isBillStatus(); + if (!billStatus){ + i=1; + } + } + int failCount = i;//失败数量 + int successCount = 1-i;//成功数量 resultExt.setFailCount(failCount); resultExt.setSuccessCount(successCount); resultExt.setResult(results); diff --git a/lc123/cloud/app/api/utils/Constants.java b/lc123/cloud/app/api/utils/Constants.java index 4095f1b..99e1a06 100644 --- a/lc123/cloud/app/api/utils/Constants.java +++ b/lc123/cloud/app/api/utils/Constants.java @@ -12,6 +12,7 @@ public class Constants { //操作类型 public static final String TYPE_SAVE = "save"; //保存类型 + public static final String TYPE_DELETE = "delete"; //保存类型 public static final String TYPE_PUSH = "push"; //下推类型 public static final String TYPE_SUBMIT = "submit"; //提交类型 public static final String TYPE_AUDIT = "audit"; //审核类型 diff --git a/lc123/cloud/app/eip/iscb/LCLogService.java b/lc123/cloud/app/eip/iscb/LCLogService.java index ff7a952..a1eedce 100644 --- a/lc123/cloud/app/eip/iscb/LCLogService.java +++ b/lc123/cloud/app/eip/iscb/LCLogService.java @@ -1,6 +1,6 @@ package tqq9.lc123.cloud.app.eip.iscb; public interface LCLogService { - public void savelog(String interfaceName,String interfaceUrl,Boolean isPost,Boolean isSucess,String request,String response); + public void savelog(String interfaceName,String interfaceUrl,Boolean isPost,Boolean isSucess,String request,String response); } diff --git a/lc123/cloud/app/plugin/form/conm/purconmAddRebateRulesPlugin.java b/lc123/cloud/app/plugin/form/conm/purconmAddRebateRulesPlugin.java index 88ebeea..9e1c2da 100644 --- a/lc123/cloud/app/plugin/form/conm/purconmAddRebateRulesPlugin.java +++ b/lc123/cloud/app/plugin/form/conm/purconmAddRebateRulesPlugin.java @@ -1,11 +1,14 @@ package tqq9.lc123.cloud.app.plugin.form.conm; import kd.bos.bill.BillShowParameter; +import kd.bos.dataentity.OperateOption; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.dataentity.utils.StringUtils; import kd.bos.entity.datamodel.IDataModel; import kd.bos.entity.datamodel.events.BeforeDeleteRowEventArgs; +import kd.bos.entity.operate.result.IOperateInfo; +import kd.bos.entity.operate.result.OperationResult; import kd.bos.form.CloseCallBack; import kd.bos.form.ShowType; import kd.bos.form.StyleCss; @@ -21,6 +24,8 @@ import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.operation.DeleteServiceHelper; +import kd.bos.servicehelper.operation.OperationServiceHelper; +import tqq9.lc123.cloud.app.api.utils.Constants; import java.math.BigDecimal; import java.util.*; @@ -59,6 +64,24 @@ public class purconmAddRebateRulesPlugin extends AbstractFormPlugin implements H String name = dynamicObject.getString("tqq9_rulename"); if (tqq9_pur_rebate.getString("status").equals("A")) { rebate.add(tqq9_pur_rebate.getLong("id")); + OperateOption option = OperateOption.create(); + OperationResult sumbitResult = OperationServiceHelper.executeOperate(Constants.TYPE_DELETE, "tqq9_pur_rebate", new DynamicObject[]{tqq9_pur_rebate}, option); + if (!sumbitResult.isSuccess()) { + List allErrorOrValidateInfo = sumbitResult.getAllErrorOrValidateInfo(); + if (allErrorOrValidateInfo.size() != 0) { + for (IOperateInfo iOperateInfo : allErrorOrValidateInfo) { + this.getView().showMessage("名称为:'" + name + "'的返利规则删除失败,原因为:"+iOperateInfo); + } + } else if (StringUtils.isNotBlank(sumbitResult.getMessage())) { + this.getView().showMessage("名称为:'" + name + "'的返利规则删除失败,原因为:"+sumbitResult.getMessage()); + } else { + this.getView().showMessage("名称为:'" + name + "'的返利规则删除失败,原因为:"+sumbitResult.getInteractionContext().getSimpleMessage()); + } + }else{ + this.getView().showMessage("名称为:'" + name + "'的返利规则删除成功"); + + } + } else { this.getView().showMessage("名称为:'" + name + "'的返利规则为非暂存状态,无法删除"); e.setCancel(true); diff --git a/lc123/cloud/app/plugin/operate/im/OtherInIotManagePlugin.java b/lc123/cloud/app/plugin/operate/im/OtherInIotManagePlugin.java index f2965c2..8700e21 100644 --- a/lc123/cloud/app/plugin/operate/im/OtherInIotManagePlugin.java +++ b/lc123/cloud/app/plugin/operate/im/OtherInIotManagePlugin.java @@ -13,6 +13,7 @@ import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.operation.SaveServiceHelper; import kd.sdk.plugin.Plugin; +import java.math.BigDecimal; import java.util.Date; import java.util.HashMap; @@ -35,12 +36,12 @@ public class OtherInIotManagePlugin extends AbstractOperationServicePlugIn imple for (DynamicObject dataEntity : e.getDataEntities()) { String billno = dataEntity.getString("billno"); QFilter qFilter = new QFilter("billno", QCP.equals, billno); - DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle("im_otherinbill", - "billentry.producedate,billentry.expirydate,billentry.lotnumber,billentry.tqq9_registration,billentry.material", + DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle("im_purinbill", + "billentry.producedate,billentry.expirydate,billentry.lotnumber,billentry.tqq9_zczh,billentry.material,billentry.warehouse,billentry.lot,billentry.qty,billentry.tqq9_goods", qFilter.toArray()); DynamicObjectCollection billentry = dynamicObject.getDynamicObjectCollection("billentry"); // DynamicObject[] tqq9_goodlotmanages=new DynamicObject[billentry.size()]; - boolean falg=false; + boolean falg = false; DynamicObjectCollection tqq9_goodlotmanages = new DynamicObjectCollection(); for (int i = 0; i < billentry.size(); i++) { @@ -56,29 +57,86 @@ public class OtherInIotManagePlugin extends AbstractOperationServicePlugIn imple DynamicObject tqq9_brand = material.getDynamicObject("tqq9_brand");//商品品牌 String number = material.getString("number");//商品编码 String name = null; - if(tqq9_registration!=null){ - name=tqq9_registration.getString("name"); + if (tqq9_registration != null) { + name = tqq9_registration.getString("name"); } - tqq9_goodlotmanage.set("number",number);//商品编码 - tqq9_goodlotmanage.set("tqq9_lot",lotnumber);//批号 + tqq9_goodlotmanage.set("number", number);//商品编码 + tqq9_goodlotmanage.set("tqq9_lot", lotnumber);//批号 - tqq9_goodlotmanage.set("name",name);//商品注册证名称 - tqq9_goodlotmanage.set("tqq9_brand",tqq9_brand);//商品品牌 - tqq9_goodlotmanage.set("tqq9_crreatdate",producedate);//生产日期 - tqq9_goodlotmanage.set("tqq9_invaliddate",expirydate);//到期日期 - tqq9_goodlotmanage.set("status","C");//数据状态 - tqq9_goodlotmanage.set("enable","1");//使用状态 + tqq9_goodlotmanage.set("name", name);//商品注册证名称 + tqq9_goodlotmanage.set("tqq9_brand", tqq9_brand);//商品品牌 + tqq9_goodlotmanage.set("tqq9_crreatdate", producedate);//生产日期 + tqq9_goodlotmanage.set("tqq9_invaliddate", expirydate);//到期日期 + tqq9_goodlotmanage.set("status", "C");//数据状态 + tqq9_goodlotmanage.set("enable", "1");//使用状态 QFilter f1 = new QFilter("number", QCP.equals, number); QFilter f2 = new QFilter("tqq9_lot", QCP.equals, lotnumber); QFilter f3 = new QFilter("tqq9_crreatdate", QCP.equals, producedate); QFilter f4 = new QFilter("tqq9_invaliddate", QCP.equals, expirydate); - DynamicObject tqq9_goodlotmanage1 = BusinessDataServiceHelper.loadSingle("tqq9_goodlotmanage",new QFilter[]{f1,f2,f3,f4}); - if(tqq9_goodlotmanage1==null&& StringUtils.isNotBlank(lotnumber)){ - falg=true; + DynamicObject tqq9_goodlotmanage1 = BusinessDataServiceHelper.loadSingle("tqq9_goodlotmanage", new QFilter[]{f1, f2, f3, f4}); + if (tqq9_goodlotmanage1 == null && StringUtils.isNotBlank(lotnumber)) { + falg = true; tqq9_goodlotmanages.add(tqq9_goodlotmanage); } + + + String warehouseNumber = null; + DynamicObject warehouse = entry.getDynamicObject("warehouse"); + if (warehouse != null) { + warehouseNumber = warehouse.getString("number"); + } + + // 将入库物料的批次信息写到商品明细中 + DynamicObject tqq9_goods = entry.getDynamicObject("tqq9_goods"); + if (tqq9_goods != null) { + tqq9_goods = BusinessDataServiceHelper.loadSingle(tqq9_goods.getPkValue(), tqq9_goods.getDynamicObjectType().getName()); + + // 物料已经被封装成了商品 + boolean isExistEntry = false;//在明细中是否能找到对应的商品信息 + DynamicObjectCollection entryies = tqq9_goods.getDynamicObjectCollection("tqq9_entry"); + for (DynamicObject entry1 : entryies) { + String lotNumber = null; + DynamicObject tqq9_lot = entry1.getDynamicObject("tqq9_lot"); + if (tqq9_lot != null) { + lotNumber = tqq9_lot.getString("number"); + } + String whNumber = ""; + DynamicObject wh = entry1.getDynamicObject("tqq9_basedatafield"); + if (wh != null) { + whNumber = wh.getString("number"); + } + Date tqq9_productdate = entry1.getDate("tqq9_productdate"); + Date tqq9_todate = entry1.getDate("tqq9_todate"); + if ((( kd.bos.dataentity.utils.StringUtils.isBlank(lotNumber) && kd.bos.dataentity.utils.StringUtils.isBlank(lotnumber)) || (lotNumber != null&&lotNumber.equals(lotnumber))) + && ((kd.bos.dataentity.utils.StringUtils.isBlank(whNumber) && kd.bos.dataentity.utils.StringUtils.isBlank(warehouseNumber)) || whNumber.equals(warehouseNumber)) + && ((tqq9_productdate == null && producedate == null) || (tqq9_productdate.equals(producedate))) + && ((tqq9_todate == null && expirydate == null) || (tqq9_todate.equals(expirydate)))) { + // 如果现有的商品数据存在 + BigDecimal tqq9_availablestock = entry1.getBigDecimal("tqq9_availablestock"); + entry1.set("tqq9_availablestock", tqq9_availablestock.add(entry.getBigDecimal("qty"))); + BigDecimal tqq9_upstock = entry1.getBigDecimal("tqq9_upstock"); + entry1.set("tqq9_upstock", tqq9_upstock.add(entry.getBigDecimal("qty"))); + isExistEntry = true; + } + if (isExistEntry) { + break; + } + } + if (!isExistEntry) { + DynamicObject entry1 = entryies.addNew(); + entry1.set("tqq9_lot", entry.getDynamicObject("lot"));//批号 + entry1.set("tqq9_basedatafield", warehouse);//仓库 + entry1.set("tqq9_productdate", producedate);//生产日期 + entry1.set("tqq9_todate", expirydate);//到期日期 + entry1.set("tqq9_availablestock", entry.getBigDecimal("qty"));//到期日期 + entry1.set("tqq9_upstock", entry.getBigDecimal("qty"));//到期日期 + } + SaveServiceHelper.save(new DynamicObject[]{tqq9_goods}); + } } - if(falg){ + + + if (falg) { DynamicObject[] objects = new DynamicObject[tqq9_goodlotmanages.size()]; for (int i = 0; i < tqq9_goodlotmanages.size(); i++) { objects[i] = tqq9_goodlotmanages.get(i); diff --git a/lc123/cloud/app/plugin/operate/im/PurInIotManagePlugin.java b/lc123/cloud/app/plugin/operate/im/PurInIotManagePlugin.java index f6b4c1c..4195ce6 100644 --- a/lc123/cloud/app/plugin/operate/im/PurInIotManagePlugin.java +++ b/lc123/cloud/app/plugin/operate/im/PurInIotManagePlugin.java @@ -71,7 +71,7 @@ public class PurInIotManagePlugin extends AbstractOperationServicePlugIn impleme QFilter f3 = new QFilter("tqq9_crreatdate", QCP.equals, producedate); QFilter f4 = new QFilter("tqq9_invaliddate", QCP.equals, expirydate); DynamicObject tqq9_goodlotmanage1 = BusinessDataServiceHelper.loadSingle("tqq9_goodlotmanage", new QFilter[]{f1,f2,f3,f4}); - if (tqq9_goodlotmanage1 == null && StringUtils.isNotBlank(lotnumber)) { + if (tqq9_goodlotmanage1 == null) { falg = true; tqq9_goodlotmanages.add(tqq9_goodlotmanage); } @@ -103,7 +103,7 @@ public class PurInIotManagePlugin extends AbstractOperationServicePlugIn impleme } Date tqq9_productdate = entry1.getDate("tqq9_productdate"); Date tqq9_todate = entry1.getDate("tqq9_todate"); - if(((StringUtils.isBlank(lotNumber) && StringUtils.isBlank(lotnumber)) || lotNumber.equals(lotnumber)) + if(((StringUtils.isBlank(lotNumber) && StringUtils.isBlank(lotnumber)) || (lotNumber!=null&&lotNumber.equals(lotnumber))) && ((StringUtils.isBlank(whNumber) && StringUtils.isBlank(warehouseNumber)) || whNumber.equals(warehouseNumber)) && ((tqq9_productdate == null && producedate == null) || (tqq9_productdate.equals(producedate))) && ((tqq9_todate == null && expirydate == null) || (tqq9_todate.equals(expirydate)))){ diff --git a/lc123/cloud/app/plugin/operate/im/PurOrderPushReceiptNoticePlugin.java b/lc123/cloud/app/plugin/operate/im/PurOrderPushReceiptNoticePlugin.java index f8ba363..452ea8b 100644 --- a/lc123/cloud/app/plugin/operate/im/PurOrderPushReceiptNoticePlugin.java +++ b/lc123/cloud/app/plugin/operate/im/PurOrderPushReceiptNoticePlugin.java @@ -50,7 +50,7 @@ public class PurOrderPushReceiptNoticePlugin extends AbstractConvertPlugIn imple if (jsonList != null) { for (int i = 0; i < jsonList.size(); i++) { HashMap jsonMap = jsonList.get(i); - BigDecimal entry_qty = (BigDecimal) jsonMap.get("qty");//类型 + BigDecimal entry_qty = new BigDecimal(jsonMap.get("qty").toString()).negate();//入库数量 dynamicObject.set("qty", entry_qty);//数量 dynamicObject.set("baseqty", entry_qty);//基本数量 }