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;
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<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);
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<String, BigDecimal> 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);
}
}

View File

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

View File

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

View File

@ -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<ResultBean> getResult() {
return result;
}
// public List<List<ResultBean>> getResult() {
// return result;
// }
public void setResult(List<ResultBean> result) {
this.result = result;
}
// public void setResult(List<List<ResultBean>> 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;
}
}

View File

@ -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();