Merge remote-tracking branch 'origin/master'

This commit is contained in:
龚豆豆 2025-12-17 18:02:54 +08:00
commit 25ce2a3164
5 changed files with 100 additions and 57 deletions

View File

@ -1,6 +1,9 @@
package tqq9.lc123.cloud.app.api.controller; package tqq9.lc123.cloud.app.api.controller;
import com.drew.lang.annotations.NotNull; 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.dataentity.entity.DynamicObject;
import kd.bos.openapi.common.custom.annotation.ApiController; import kd.bos.openapi.common.custom.annotation.ApiController;
import kd.bos.openapi.common.custom.annotation.ApiParam; 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.QCP;
import kd.bos.orm.query.QFilter; import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.servicehelper.QueryServiceHelper;
import oadd.org.apache.commons.lang3.StringUtils; import oadd.org.apache.commons.lang3.StringUtils;
import tqq9.lc123.cloud.app.api.model.FWInvQueryModel; import tqq9.lc123.cloud.app.api.model.FWInvQueryModel;
import tqq9.lc123.cloud.app.api.result.FWInvQueryResult; import tqq9.lc123.cloud.app.api.result.FWInvQueryResult;
@ -33,17 +37,37 @@ public class FWInvQueryController {
String warehouseNumber = queryModel.getWarehouseNumber(); String warehouseNumber = queryModel.getWarehouseNumber();
Date producedate = queryModel.getProducedate(); Date producedate = queryModel.getProducedate();
Date expirydate = queryModel.getExpirydate(); 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<QFilter> list = new ArrayList<>(); List<QFilter> 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); list.add(qf1);
if(StringUtils.isNotBlank(lot)){ if(StringUtils.isNotBlank(lot)){
QFilter qf2 = new QFilter("lotnum", QCP.equals, lot); QFilter qf2 = new QFilter("lotnum", QCP.equals, lot);
list.add(qf2); list.add(qf2);
existLot = true;
} }
if(StringUtils.isNotBlank(warehouseNumber)){ if(StringUtils.isNotBlank(warehouseNumber)){
QFilter qf3 = new QFilter("warehouse.number", QCP.equals, warehouseNumber); QFilter qf3 = new QFilter("warehouse.number", QCP.equals, warehouseNumber);
list.add(qf3); list.add(qf3);
existWh = true;
} }
if(producedate != null){ if(producedate != null){
QFilter qf4 = new QFilter("producedate", QCP.equals, producedate); QFilter qf4 = new QFilter("producedate", QCP.equals, producedate);
@ -53,49 +77,49 @@ public class FWInvQueryController {
QFilter qf5 = new QFilter("expirydate", QCP.equals, expirydate); QFilter qf5 = new QFilter("expirydate", QCP.equals, expirydate);
list.add(qf5); 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()]; QFilter[] filterArr = new QFilter[list.size()];
filterArr = list.toArray(filterArr); filterArr = list.toArray(filterArr);
DynamicObject[] realbalances = BusinessDataServiceHelper.load("im_inv_realbalance", DataSet dataSet = QueryServiceHelper.queryDataSet(this.getClass().getName(), "im_inv_realbalance",
"id,material,org,warehouse,lotnum,avbbaseqty,qty", filterArr); "qty,"+groupbyStr, filterArr, null);
if(realbalances != null && realbalances.length > 0){ DataSet groupbyDataSet = dataSet.groupBy(groupbyStr.split(",")).count("qty").finish();
Map<String, BigDecimal> map = new HashMap<>(); for (Row row : groupbyDataSet) {
for (DynamicObject realbalance : realbalances) { FWInvQueryResult.ResultBean resultBean = new FWInvQueryResult.ResultBean();
//获取数量 Long orgId = row.getLong("org");
BigDecimal qty = realbalance.getBigDecimal("qty"); DynamicObject org = BusinessDataServiceHelper.loadSingle(orgId, "bos_org");
//获取组织数据 BigDecimal qty = row.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");
String key = orgCode+"<>"+orgName+"<>"+warehouseCode+"<>"+warehouseName+"<>"+lotnum+"<>"+materialNumber; if(existLot){
if(map.containsKey(key)){ String lotnum = row.getString("lotnum");
BigDecimal sl = map.get(key); Date producedate1 = row.getDate("producedate");
map.put(key, qty.add(sl)); Date expirydate1 = row.getDate("expirydate");
}else{
map.put(key, qty);
}
resultBean.setLot(lotnum);
resultBean.setProducedate(producedate1);
resultBean.setExpirydate(expirydate1);
} }
if(map.size() > 0){ if(existWh){
for (String s : map.keySet()) { Long warehouseId = row.getLong("warehouse");
String[] split = s.split("<>"); DynamicObject warehouse = BusinessDataServiceHelper.loadSingle(warehouseId, "bd_warehouse");
FWInvQueryResult.ResultBean resultBean = new FWInvQueryResult.ResultBean(); resultBean.setWarehouseCode(warehouse.getString("number"));
resultBean.setOrgCode(split[0]); resultBean.setWarehouseName(warehouse.getString("name"));
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);
}
} }
resultBean.setOrgCode(orgNumber);
resultBean.setOrgName(org.getString("name"));
resultBean.setNumber(materialNumber);
resultBean.setQty(qty);
resultBeanList.add(resultBean);
} }
} }

View File

@ -1,5 +1,4 @@
package tqq9.lc123.cloud.app.api.controller; package tqq9.lc123.cloud.app.api.controller;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.drew.lang.annotations.NotNull; import com.drew.lang.annotations.NotNull;
import kd.bos.dataentity.entity.DynamicObject; 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.form.result.CloneBill;
import tqq9.lc123.cloud.app.plugin.utils.BillCloseCancelUtils; import tqq9.lc123.cloud.app.plugin.utils.BillCloseCancelUtils;
import tqq9.lc123.cloud.app.plugin.utils.ConfigUtils; import tqq9.lc123.cloud.app.plugin.utils.ConfigUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import static tqq9.lc123.cloud.app.plugin.form.result.CloneBill.cloneOperation; import static tqq9.lc123.cloud.app.plugin.form.result.CloneBill.cloneOperation;
/** /**
* 销售退货申请接口 * 销售退货申请接口
*/ */
@ -52,9 +48,12 @@ public class SmReturnApplyController {
resultBean.setKeys(key); resultBean.setKeys(key);
resultBean.setNumber(orderBillNo); resultBean.setNumber(orderBillNo);
resultBean.setType(Constants.TYPE_CLOSE); resultBean.setType(Constants.TYPE_CLOSE);
String message = null; String message = null;
DynamicObject dataEntity = BusinessDataServiceHelper.loadSingle("sm_returnapply", new QFilter[]{new QFilter("billno", QCP.equals, orderBillNo)}); 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"); boolean tqq9_isclose = dataEntity.getBoolean("tqq9_isclose");
if (tqq9_isclose) { if (tqq9_isclose) {
resultExt = ApiResultExt.errorRetrun("sm_returnapply", "该单据已关闭", error, resultExt); resultExt = ApiResultExt.errorRetrun("sm_returnapply", "该单据已关闭", error, resultExt);

View File

@ -28,6 +28,9 @@ public class FWInvQueryModel implements Serializable {
@ApiParam(value = "物料编码", example = "WL001", required = true) @ApiParam(value = "物料编码", example = "WL001", required = true)
private String materialNumber; private String materialNumber;
@ApiParam(value = "业务归属编码", example = "SHLC", required = true)
private String orgNumber;
@ApiParam(value = "批次号", example = "20250101") @ApiParam(value = "批次号", example = "20250101")
private String lot; private String lot;
@ -79,5 +82,13 @@ public class FWInvQueryModel implements Serializable {
public void setExpirydate(Date expirydate) { public void setExpirydate(Date expirydate) {
this.expirydate = expirydate; this.expirydate = expirydate;
} }
public String getOrgNumber() {
return orgNumber;
}
public void setOrgNumber(String orgNumber) {
this.orgNumber = orgNumber;
}
} }
} }

View File

@ -5,6 +5,7 @@ import kd.bos.openapi.common.custom.annotation.ApiParam;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date;
import java.util.List; import java.util.List;
@ApiModel @ApiModel
@ -39,16 +40,10 @@ public class FWInvQueryResult implements Serializable {
public List<ResultBean> getResult() { public List<ResultBean> getResult() {
return result; return result;
} }
// public List<List<ResultBean>> getResult() {
// return result;
// }
public void setResult(List<ResultBean> result) { public void setResult(List<ResultBean> result) {
this.result = result; this.result = result;
} }
// public void setResult(List<List<ResultBean>> result) {
// this.result = result;
// }
@ApiModel @ApiModel
public static class ResultBean implements Serializable { public static class ResultBean implements Serializable {
@ -66,14 +61,18 @@ public class FWInvQueryResult implements Serializable {
@ApiParam("仓库名称") @ApiParam("仓库名称")
private String warehouseName; private String warehouseName;
@ApiParam("物料编码") @ApiParam("物料编码")
private String number; private String number;
@ApiParam("批号") @ApiParam("批号")
private String lot; private String lot;
@ApiParam("生产日期")
private Date producedate;
@ApiParam("有效期至")
private Date expirydate;
@ApiParam("可用库存数量") @ApiParam("可用库存数量")
private BigDecimal qty; private BigDecimal qty;
@ -132,6 +131,22 @@ public class FWInvQueryResult implements Serializable {
public void setLot(String lot) { public void setLot(String lot) {
this.lot = 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;
}
} }

View File

@ -6114,9 +6114,6 @@ public class FWImpl {
tableName_2 = "formtable_main_105_dt2"; tableName_2 = "formtable_main_105_dt2";
wfID = ConfigUtils.getThirdConfigByNumber("FW_WFID_GYSBG"); wfID = ConfigUtils.getThirdConfigByNumber("FW_WFID_GYSBG");
requestid = bill.getString("tqq9_fwupdid"); requestid = bill.getString("tqq9_fwupdid");
if(StringUtils.isBlank(requestid)){
requestid = bill.getString("tqq9_fwrequestid");
}
//修改供应商时有可能修改供应商区域资质字段 //修改供应商时有可能修改供应商区域资质字段
if(StringUtils.isNotBlank(gysqyzzbg)){ if(StringUtils.isNotBlank(gysqyzzbg)){
@ -6585,9 +6582,6 @@ public class FWImpl {
requestName = "变更物料流程"; requestName = "变更物料流程";
wfID = ConfigUtils.getThirdConfigByNumber("FW_WFID_WLBG"); wfID = ConfigUtils.getThirdConfigByNumber("FW_WFID_WLBG");
requestid = bill.getString("tqq9_fwupdid"); requestid = bill.getString("tqq9_fwupdid");
if(StringUtils.isBlank(requestid)){
requestid = bill.getString("tqq9_fwrequestid");
}
JSONObject detail_change = new JSONObject(); JSONObject detail_change = new JSONObject();
JSONArray recordsArr_change = new JSONArray(); JSONArray recordsArr_change = new JSONArray();