From 4404fc4efa0cf40273911b98a4756298f3f95525 Mon Sep 17 00:00:00 2001 From: "tanfengling@x-ri.com" <123456> Date: Wed, 17 Dec 2025 16:01:05 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E3=80=90=E7=89=A9=E6=96=99=E5=8F=98?= =?UTF-8?q?=E6=9B=B4=E3=80=91=20url=E4=BD=BF=E7=94=A8=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lc123/cloud/app/plugin/trd/FWImpl.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/lc123/cloud/app/plugin/trd/FWImpl.java b/lc123/cloud/app/plugin/trd/FWImpl.java index 7d551e6..48ca2a0 100644 --- a/lc123/cloud/app/plugin/trd/FWImpl.java +++ b/lc123/cloud/app/plugin/trd/FWImpl.java @@ -6114,9 +6114,6 @@ public class FWImpl { tableName_2 = "formtable_main_105_dt2"; wfID = ConfigUtils.getThirdConfigByNumber("FW_WFID_GYSBG"); requestid = bill.getString("tqq9_fwupdid"); - if(StringUtils.isBlank(requestid)){ - requestid = bill.getString("tqq9_fwrequestid"); - } //修改供应商时,有可能修改供应商区域资质字段 if(StringUtils.isNotBlank(gysqyzzbg)){ @@ -6585,9 +6582,6 @@ public class FWImpl { requestName = "变更物料流程"; wfID = ConfigUtils.getThirdConfigByNumber("FW_WFID_WLBG"); requestid = bill.getString("tqq9_fwupdid"); - if(StringUtils.isBlank(requestid)){ - requestid = bill.getString("tqq9_fwrequestid"); - } JSONObject detail_change = new JSONObject(); JSONArray recordsArr_change = new JSONArray(); From d31b0452aeb4e55939e63452aef8cbb63cdc67e4 Mon Sep 17 00:00:00 2001 From: zhongqy <18262099959@163.com> Date: Wed, 17 Dec 2025 17:01:26 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E3=80=90=E5=95=86=E5=9F=8E=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E3=80=91--=E9=94=80=E5=94=AE=E9=80=80=E8=B4=A7?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=E6=8E=A5=E5=8F=A3=EF=BC=9A=E5=94=AE=E5=90=8E?= =?UTF-8?q?=E5=85=A5=E5=BA=93=E6=8B=A6=E6=88=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/api/controller/SmReturnApplyController.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/lc123/cloud/app/api/controller/SmReturnApplyController.java b/lc123/cloud/app/api/controller/SmReturnApplyController.java index 8caad17..4802c87 100644 --- a/lc123/cloud/app/api/controller/SmReturnApplyController.java +++ b/lc123/cloud/app/api/controller/SmReturnApplyController.java @@ -1,5 +1,4 @@ package tqq9.lc123.cloud.app.api.controller; - import com.alibaba.fastjson.JSONObject; import com.drew.lang.annotations.NotNull; import kd.bos.dataentity.entity.DynamicObject; @@ -19,14 +18,11 @@ import tqq9.lc123.cloud.app.api.utils.Constants; import tqq9.lc123.cloud.app.plugin.form.result.CloneBill; import tqq9.lc123.cloud.app.plugin.utils.BillCloseCancelUtils; import tqq9.lc123.cloud.app.plugin.utils.ConfigUtils; - import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Map; - import static tqq9.lc123.cloud.app.plugin.form.result.CloneBill.cloneOperation; - /** * 销售退货申请接口 */ @@ -52,9 +48,12 @@ public class SmReturnApplyController { resultBean.setKeys(key); resultBean.setNumber(orderBillNo); resultBean.setType(Constants.TYPE_CLOSE); - String message = null; DynamicObject dataEntity = BusinessDataServiceHelper.loadSingle("sm_returnapply", new QFilter[]{new QFilter("billno", QCP.equals, orderBillNo)}); + if(dataEntity==null){ + resultExt = ApiResultExt.errorRetrun("sm_returnapply", "没查询到单据", error, resultExt); + return CustomApiResult.success(resultExt); + } boolean tqq9_isclose = dataEntity.getBoolean("tqq9_isclose"); if (tqq9_isclose) { resultExt = ApiResultExt.errorRetrun("sm_returnapply", "该单据已关闭", error, resultExt); From 8df8d20e4cb4cbb096120d0cb9d356eac9e2e88a Mon Sep 17 00:00:00 2001 From: "tanfengling@x-ri.com" <123456> Date: Wed, 17 Dec 2025 17:58:19 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E3=80=90=E7=89=A9=E6=96=99=E5=BA=93?= =?UTF-8?q?=E5=AD=98=E6=9F=A5=E8=AF=A2=E3=80=91=20=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E6=B1=87=E6=80=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/controller/FWInvQueryController.java | 100 +++++++++++------- .../cloud/app/api/model/FWInvQueryModel.java | 11 ++ .../app/api/result/FWInvQueryResult.java | 31 ++++-- 3 files changed, 96 insertions(+), 46 deletions(-) diff --git a/lc123/cloud/app/api/controller/FWInvQueryController.java b/lc123/cloud/app/api/controller/FWInvQueryController.java index af758f5..96a7144 100644 --- a/lc123/cloud/app/api/controller/FWInvQueryController.java +++ b/lc123/cloud/app/api/controller/FWInvQueryController.java @@ -1,6 +1,9 @@ package tqq9.lc123.cloud.app.api.controller; import com.drew.lang.annotations.NotNull; +import kd.bos.algo.DataSet; +import kd.bos.algo.GroupbyDataSet; +import kd.bos.algo.Row; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.openapi.common.custom.annotation.ApiController; import kd.bos.openapi.common.custom.annotation.ApiParam; @@ -9,6 +12,7 @@ import kd.bos.openapi.common.result.CustomApiResult; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.QueryServiceHelper; import oadd.org.apache.commons.lang3.StringUtils; import tqq9.lc123.cloud.app.api.model.FWInvQueryModel; import tqq9.lc123.cloud.app.api.result.FWInvQueryResult; @@ -33,17 +37,37 @@ public class FWInvQueryController { String warehouseNumber = queryModel.getWarehouseNumber(); Date producedate = queryModel.getProducedate(); Date expirydate = queryModel.getExpirydate(); + String orgNumber = queryModel.getOrgNumber(); + String orgName = ""; + if("SHLC".equals(orgNumber)){ + orgName = "上海励齿"; + }else if("BJLC".equals(orgNumber)){ + orgName = "北京励齿"; + }else if("GZLC".equals(orgNumber)){ + orgName = "广州励齿"; + }else{ + + } + + boolean existLot = false; + boolean existWh = false; + + String key = materialNumber; List list = new ArrayList<>(); - QFilter qf1 = new QFilter("material.number", QCP.equals, materialNumber); + QFilter qf0 = new QFilter("material.number", QCP.equals, materialNumber); + QFilter qf1 = new QFilter("org.number", QCP.equals, orgNumber); + list.add(qf0); list.add(qf1); if(StringUtils.isNotBlank(lot)){ QFilter qf2 = new QFilter("lotnum", QCP.equals, lot); list.add(qf2); + existLot = true; } if(StringUtils.isNotBlank(warehouseNumber)){ QFilter qf3 = new QFilter("warehouse.number", QCP.equals, warehouseNumber); list.add(qf3); + existWh = true; } if(producedate != null){ QFilter qf4 = new QFilter("producedate", QCP.equals, producedate); @@ -53,49 +77,49 @@ public class FWInvQueryController { QFilter qf5 = new QFilter("expirydate", QCP.equals, expirydate); list.add(qf5); } + + String groupbyStr = "material,org"; + if(existLot){ + groupbyStr = groupbyStr + ",lotnum,producedate,expirydate"; + } + if(existWh){ + groupbyStr = groupbyStr + ",warehouse"; + } + + + QFilter[] filterArr = new QFilter[list.size()]; filterArr = list.toArray(filterArr); - DynamicObject[] realbalances = BusinessDataServiceHelper.load("im_inv_realbalance", - "id,material,org,warehouse,lotnum,avbbaseqty,qty", filterArr); - if(realbalances != null && realbalances.length > 0){ - Map map = new HashMap<>(); - for (DynamicObject realbalance : realbalances) { - //获取数量 - BigDecimal qty = realbalance.getBigDecimal("qty"); - //获取组织数据 - DynamicObject org = realbalance.getDynamicObject("org"); - String orgCode = org.getString("number"); - String orgName = org.getString("name"); - //获取仓库数据 - DynamicObject warehouse = realbalance.getDynamicObject("warehouse"); - String warehouseCode = warehouse.getString("number"); - String warehouseName = warehouse.getString("name"); - //批号 - String lotnum = realbalance.getString("lotnum"); + DataSet dataSet = QueryServiceHelper.queryDataSet(this.getClass().getName(), "im_inv_realbalance", + "qty,"+groupbyStr, filterArr, null); + DataSet groupbyDataSet = dataSet.groupBy(groupbyStr.split(",")).count("qty").finish(); + for (Row row : groupbyDataSet) { + FWInvQueryResult.ResultBean resultBean = new FWInvQueryResult.ResultBean(); + Long orgId = row.getLong("org"); + DynamicObject org = BusinessDataServiceHelper.loadSingle(orgId, "bos_org"); + BigDecimal qty = row.getBigDecimal("qty"); - String key = orgCode+"<>"+orgName+"<>"+warehouseCode+"<>"+warehouseName+"<>"+lotnum+"<>"+materialNumber; - if(map.containsKey(key)){ - BigDecimal sl = map.get(key); - map.put(key, qty.add(sl)); - }else{ - map.put(key, qty); - } + if(existLot){ + String lotnum = row.getString("lotnum"); + Date producedate1 = row.getDate("producedate"); + Date expirydate1 = row.getDate("expirydate"); + resultBean.setLot(lotnum); + resultBean.setProducedate(producedate1); + resultBean.setExpirydate(expirydate1); } - if(map.size() > 0){ - for (String s : map.keySet()) { - String[] split = s.split("<>"); - FWInvQueryResult.ResultBean resultBean = new FWInvQueryResult.ResultBean(); - resultBean.setOrgCode(split[0]); - resultBean.setOrgName(split[1]); - resultBean.setWarehouseCode(split[2]); - resultBean.setWarehouseName(split[3]); - resultBean.setLot(split[4]); - resultBean.setNumber(split[5]); - resultBean.setQty(map.get(s)); - resultBeanList.add(resultBean); - } + if(existWh){ + Long warehouseId = row.getLong("warehouse"); + DynamicObject warehouse = BusinessDataServiceHelper.loadSingle(warehouseId, "bd_warehouse"); + resultBean.setWarehouseCode(warehouse.getString("number")); + resultBean.setWarehouseName(warehouse.getString("name")); } + + resultBean.setOrgCode(orgNumber); + resultBean.setOrgName(org.getString("name")); + resultBean.setNumber(materialNumber); + resultBean.setQty(qty); + resultBeanList.add(resultBean); } } diff --git a/lc123/cloud/app/api/model/FWInvQueryModel.java b/lc123/cloud/app/api/model/FWInvQueryModel.java index 0fae4b1..78cc425 100644 --- a/lc123/cloud/app/api/model/FWInvQueryModel.java +++ b/lc123/cloud/app/api/model/FWInvQueryModel.java @@ -28,6 +28,9 @@ public class FWInvQueryModel implements Serializable { @ApiParam(value = "物料编码", example = "WL001", required = true) private String materialNumber; + @ApiParam(value = "业务归属编码", example = "SHLC", required = true) + private String orgNumber; + @ApiParam(value = "批次号", example = "20250101") private String lot; @@ -79,5 +82,13 @@ public class FWInvQueryModel implements Serializable { public void setExpirydate(Date expirydate) { this.expirydate = expirydate; } + + public String getOrgNumber() { + return orgNumber; + } + + public void setOrgNumber(String orgNumber) { + this.orgNumber = orgNumber; + } } } diff --git a/lc123/cloud/app/api/result/FWInvQueryResult.java b/lc123/cloud/app/api/result/FWInvQueryResult.java index 1cf50f5..2b2ca34 100644 --- a/lc123/cloud/app/api/result/FWInvQueryResult.java +++ b/lc123/cloud/app/api/result/FWInvQueryResult.java @@ -5,6 +5,7 @@ import kd.bos.openapi.common.custom.annotation.ApiParam; import java.io.Serializable; import java.math.BigDecimal; +import java.util.Date; import java.util.List; @ApiModel @@ -39,16 +40,10 @@ public class FWInvQueryResult implements Serializable { public List getResult() { return result; } -// public List> getResult() { -// return result; -// } public void setResult(List result) { this.result = result; } -// public void setResult(List> result) { -// this.result = result; -// } @ApiModel public static class ResultBean implements Serializable { @@ -66,14 +61,18 @@ public class FWInvQueryResult implements Serializable { @ApiParam("仓库名称") private String warehouseName; - - @ApiParam("物料编码") private String number; @ApiParam("批号") private String lot; + @ApiParam("生产日期") + private Date producedate; + + @ApiParam("有效期至") + private Date expirydate; + @ApiParam("可用库存数量") private BigDecimal qty; @@ -132,6 +131,22 @@ public class FWInvQueryResult implements Serializable { public void setLot(String lot) { this.lot = lot; } + + public Date getProducedate() { + return producedate; + } + + public void setProducedate(Date producedate) { + this.producedate = producedate; + } + + public Date getExpirydate() { + return expirydate; + } + + public void setExpirydate(Date expirydate) { + this.expirydate = expirydate; + } }