This commit is contained in:
lihao 2025-10-14 19:34:34 +08:00
parent 9bee99b80b
commit c4a24b683c
2 changed files with 68 additions and 10 deletions

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding='gb2312'?>
<module>
<rest>
<resource classname="nccloud.api.mmbd.dchangemanage.dchangemaster.DchangeMasterManageResources" exinfo=""/>
</rest>
</module>

View File

@ -12,6 +12,7 @@ import java.util.*;
import java.util.Map.Entry;
import nc.bs.dao.BaseDAO;
import nc.bs.dao.DAOException;
import nc.bs.trade.business.HYPubBO;
import nc.bs.uapbd.util.MyHelper;
import nc.itf.mmbd.dchange.dchangemaster.IDchangeMasterVOService;
@ -20,10 +21,7 @@ import nc.jdbc.framework.processor.MapListProcessor;
import nc.jdbc.framework.processor.MapProcessor;
import nc.uif.pub.exception.UifException;
import nc.util.mmf.framework.base.MMValueCheck;
import nc.vo.dchange.dchange.DchangeMasterVO;
import nc.vo.dchange.dchange.DchangeSlave0VO;
import nc.vo.dchange.dchange.DchangeSlave1VO;
import nc.vo.dchange.dchange.DchangeSlave2VO;
import nc.vo.dchange.dchange.*;
import nc.vo.mmpac.pickm.entity.AggPickmVO;
import nc.vo.mmpps.mps0202.AggregatedPoVO;
import nccloud.framework.service.ServiceLocator;
@ -260,6 +258,17 @@ public class DchangeMasterManageResources extends AbstractNCCRestResource {
JSONObject headJson = (JSONObject) json.get("dchangeMaster");
// BOM版本号-父项编码-子项编码-变更前数量-变更后数量
String bomVersion = headJson.getString("bomVersion");
/*bom版本号等于销售订单号加行号*/
String[] s=bomVersion.split("\\+");
if(s.length!=2){
throw new NullPointerException("传入参数中BOM版本号格式错误");
}
String so_saleorder=s[0];
String vrow=s[1];
// Object pk_material = hy.findColValue("bd_material", "pk_material", "code = '"+pcode+"' and nvl(dr,0)=0 ");
String pcode=headJson.getString("pcode");
String ccode=headJson.getString("ccode");
UFDouble beforenum=new UFDouble(headJson.getString("beforenum")) ;
@ -269,8 +278,12 @@ public class DchangeMasterManageResources extends AbstractNCCRestResource {
Object cmrl = hy.findColValue("bd_material", "pk_material", "code = '"+ccode+"' and nvl(dr,0)=0 ");
Object cbomid = hy.findColValue("bd_bom", "cbomid", "hcmaterialvid = '"+pk_material+"' and hversion=¡®"+bomVersion+"¡¯ and nvl(dr,0)=0 ");
Object pmoid = hy.findColValue("cpickmid", "mm_pickm", "vfirstmocode = '"+so_saleorder+"' and vfirstmorowcode="+vrow+" and nvl(dr,0)=0 ");
Object cbomid = hy.findColValue("vbomversion", "mm_pickm", "cpickmid = '"+pmoid+"' and nvl(dr,0)=0 ");
if(null ==cbomid){
return null;
}
Object cpickmid=hy.findColValue("mm_pickm", "cpickmid", "cmaterialvid = '"+pk_material+"' and vbomversion="+cbomid+" and nvl(dr,0)=0 ");
@ -288,13 +301,13 @@ public class DchangeMasterManageResources extends AbstractNCCRestResource {
code.add(aggVOs.getParentVO().getVbillcode());
for (int j=0;j<aggVOs.getChildrenVO().length;j++) {
Map<String,Object> map = new HashMap<>();
// if(aggVOs.getChildrenVO()[j].getAttributeValue("cbmaterialvid").equals(cmrl)){
if(aggVOs.getChildrenVO()[j].getAttributeValue("cbmaterialvid").equals(cmrl)){
DchangeSlave0VO slave0VO=new DchangeSlave0VO();
slave0VO.setAfternum(afternum);
slave0VO.setCbmaterialvid((String) cmrl);
slave0VO.setBeforenum(beforenum);
list.add(slave0VO);
// }
}
}
}
dchangeMasterVO.setDchangeslave0_dchangeslave0(list.toArray(new DchangeSlave0VO[0]));
@ -316,23 +329,51 @@ public class DchangeMasterManageResources extends AbstractNCCRestResource {
List<Map<String,Object>> mrpPlan=getMRPPlan(code);
List<DchangeSlave1VO> list1=new ArrayList<>();
for (Map<String,Object> map : mrpPlan) {
if(!map.get("cmaterialvid").equals(cmrl)){
continue;
}
DchangeSlave1VO slave1VO=new DchangeSlave1VO();
slave1VO.setPlannum((UFDouble) map.get("nassaccpraynum"));
slave1VO.setCbmaterialvid((String) map.get("cmaterialvid"));
slave1VO.setMrpbillcode((String) map.get("mrpbillcode"));
slave1VO.setMrpbillcode((String) map.get("vbillcode"));
list1.add(slave1VO);
}
dchangeMasterVO.setDchangeslave1_dchangeslave1(list1.toArray(new DchangeSlave1VO[0]));
List<DchangeSlave2VO> list2=new ArrayList<>();
List<String> mrpbillcode=new ArrayList<>();
for (Map<String,Object> map : mrpPlan) {
if(!map.get("cmaterialvid").equals(cmrl)){
continue;
}
DchangeSlave2VO slave1VO=new DchangeSlave2VO();
slave1VO.setPlannum((UFDouble) map.get("nassaccpraynum"));
slave1VO.setCbmaterialvid((String) map.get("cmaterialvid"));
slave1VO.setMrpbillcode((String) map.get("mrpbillcode"));
list2.add(slave1VO);
mrpbillcode.add((String) map.get("mrpbillcode"));
}
dchangeMasterVO.setDchangeslave2_dchangeslave2(list2.toArray(new DchangeSlave2VO[0]));
//根据计划订单查询采购订单
List<Map<String,Object>> buyingreq=getbuyingreq(mrpbillcode);
List<DchangeSlave3VO> list3=new ArrayList<>();
for (Map<String,Object> map : buyingreq) {
if(!map.get("cmaterialvid").equals(cmrl)){
continue;
}
DchangeSlave3VO slave1VO=new DchangeSlave3VO();
// slave1VO.setNewnum(new UFDouble((Double) map.get("nastnum")).add());
slave1VO.setNewnum(afternum);
slave1VO.setPk_material((String) map.get("cmaterialvid"));
slave1VO.setParybillcode((String) map.get("mrpbillcode"));
list3.add(slave1VO);
// mrpbillcode.add((String) map.get("mrpbillcode"));
}
dchangeMasterVO.setDchangeslave3_dchangeslave3(list3.toArray(new DchangeSlave3VO[0]));
Object pk_org = hy.findColValue("org_orgs", "pk_org", "code = '"+headJson.get("pk_org")+"' and nvl(dr,0)=0 and isbusinessunit='Y' ");
headJson.put("pk_org", pk_org);
DchangeMasterVO headVO = new DchangeMasterVO();
@ -345,12 +386,23 @@ public class DchangeMasterManageResources extends AbstractNCCRestResource {
return headVO;
}
// »ñÈ¡mrp¼Æ»®©µ¥
private List<Map<String, Object>> getbuyingreq(List<String> code) throws DAOException {
String placeholders = String.join(",", Collections.nCopies(code.size(), "?"));
String sql = " SELECT * from po_praybill_b WHERE vsourcecode IN (" + placeholders + ")";
List<Map<String,Object>> remain = (List<Map<String, Object>>) new BaseDAO().executeQuery(sql, new MapListProcessor());
return remain;
}
// 获取mrp计划订单
private List<Map<String,Object>> getMRPPlan(List<String> codes) throws BusinessException {
// 生成与codes数量匹配的占位符: ?, ?, ?
String placeholders = String.join(",", Collections.nCopies(codes.size(), "?"));
String sql = " \t\tSELECT\n" +
"\tcmaterialvid,\n" +
"\tcmaterialvid," +
" vbillcode,\n" +
"\tnassaccponum,\n" +
"\tnassaccpraynum\n" +
"FROM\n" +