取消生产报告保存时候校验回写生产订单

This commit is contained in:
lihao 2025-12-02 13:56:39 +08:00
parent 3e251cdc30
commit 06ba782f15
1 changed files with 76 additions and 76 deletions

View File

@ -243,43 +243,43 @@ public class PublicPMOService4WrImpl implements IPublicPMOService4Wr {
PMOHeadVO head = (PMOHeadVO)headMap.get(item.getCpmohid()); PMOHeadVO head = (PMOHeadVO)headMap.get(item.getCpmohid());
UFBoolean autoFlag = (UFBoolean)autodonepara.get(head.getCtrantypeid()); UFBoolean autoFlag = (UFBoolean)autodonepara.get(head.getCtrantypeid());
if (autoFlag.booleanValue()) { if (autoFlag.booleanValue()) {
BaseDAO dao = new BaseDAO(); // BaseDAO dao = new BaseDAO();
// 查询备料计划 如果下游备料计划未出库数量计划出库-累计出库小于0生产订单自动完工取消 naccoutnum 累计出库数量 nplanoutnum计划出库 // // 查询备料计划 如果下游备料计划未出库数量计划出库-累计出库小于0生产订单自动完工取消 naccoutnum 累计出库数量 nplanoutnum计划出库
String pickmsql = "select cbmaterialvid,vrowno,nplanoutnum,naccoutnum from mm_pickm_b where cpickmid in ( select cpickmid from mm_pickm where csourcebillrowid='" + item.getCmoid() + "' and dr=0) and dr = 0"; // String pickmsql = "select cbmaterialvid,vrowno,nplanoutnum,naccoutnum from mm_pickm_b where cpickmid in ( select cpickmid from mm_pickm where csourcebillrowid='" + item.getCmoid() + "' and dr=0) and dr = 0";
List<Map<String,Object>> hmateral = (List<Map<String,Object>>) dao.executeQuery(pickmsql, new MapListProcessor()); // List<Map<String,Object>> hmateral = (List<Map<String,Object>>) dao.executeQuery(pickmsql, new MapListProcessor());
List<String> vrownos = new ArrayList(); // List<String> vrownos = new ArrayList();
List<Map<String,Object>> maps = new ArrayList(); // List<Map<String,Object>> maps = new ArrayList();
//
Boolean l=false; // Boolean l=false;
for (Map<String,Object> map : hmateral) { // for (Map<String,Object> map : hmateral) {
String material =MaterialVO.CODE+","+MaterialVO.NAME+","+MaterialVO.OUTTOLERANCE; // String material =MaterialVO.CODE+","+MaterialVO.NAME+","+MaterialVO.OUTTOLERANCE;
// 物料出库容差 % 0.0000 // // 物料出库容差 % 0.0000
Map<String, Object> goodsMap = MyHelper.transferFields(MaterialVO.getDefaultTableName(), material, MaterialVO.PK_MATERIAL, item.getCmaterialvid()); // Map<String, Object> goodsMap = MyHelper.transferFields(MaterialVO.getDefaultTableName(), material, MaterialVO.PK_MATERIAL, item.getCmaterialvid());
String Outtolerance= null !=goodsMap.get("outtolerance") ? goodsMap.get("outtolerance").toString() : "0"; // String Outtolerance= null !=goodsMap.get("outtolerance") ? goodsMap.get("outtolerance").toString() : "0";
if(null != map.get("nplanoutnum") && null != map.get("naccoutnum") && (new UFDouble(String.valueOf(map.get("nplanoutnum").toString())).sub(new UFDouble(String.valueOf(map.get("naccoutnum").toString()))).abs()).compareTo(new UFDouble(String.valueOf(map.get("nplanoutnum").toString())).multiply(new UFDouble(String.valueOf(Outtolerance.toString())))) > 0) { // if(null != map.get("nplanoutnum") && null != map.get("naccoutnum") && (new UFDouble(String.valueOf(map.get("nplanoutnum").toString())).sub(new UFDouble(String.valueOf(map.get("naccoutnum").toString()))).abs()).compareTo(new UFDouble(String.valueOf(map.get("nplanoutnum").toString())).multiply(new UFDouble(String.valueOf(Outtolerance.toString())))) > 0) {
l=true; // l=true;
Map<String, Object> map1 =new HashMap<>(); // Map<String, Object> map1 =new HashMap<>();
map1.put("vrowno",map.get("vrowno").toString()); // map1.put("vrowno",map.get("vrowno").toString());
map1.put("mrlname",goodsMap.get("name").toString()); // map1.put("mrlname",goodsMap.get("name").toString());
map1.put("mrlcode",goodsMap.get("code").toString()); // map1.put("mrlcode",goodsMap.get("code").toString());
maps.add(map1); // maps.add(map1);
} // }
} // }
if(l){ // if(l){
// String pickm = " select vbillcode,cpickmid from mm_pickm where csourcebillrowid='" + item.getCmoid() + "' and dr=0"; // // String pickm = " select vbillcode,cpickmid from mm_pickm where csourcebillrowid='" + item.getCmoid() + "' and dr=0";
// List<Map<String,Object>> pickms = (List<Map<String,Object>>) dao.executeQuery(pickm, new MapListProcessor()); // // List<Map<String,Object>> pickms = (List<Map<String,Object>>) dao.executeQuery(pickm, new MapListProcessor());
String err=""; // String err="";
for (Map<String,Object> vrowno : maps) { // for (Map<String,Object> vrowno : maps) {
String pmobillcode= head.getVbillcode(); // String pmobillcode= head.getVbillcode();
String pmovrowno= item.getVrowno(); // String pmovrowno= item.getVrowno();
// String pickmbillcode= pickms.get(0).get("vbillcode").toString(); // // String pickmbillcode= pickms.get(0).get("vbillcode").toString();
String pickmvrowno= vrowno.get("vrowno").toString(); // String pickmvrowno= vrowno.get("vrowno").toString();
String mrlname= vrowno.get("mrlname").toString(); // String mrlname= vrowno.get("mrlname").toString();
String mrlcode= vrowno.get("mrlcode").toString(); // String mrlcode= vrowno.get("mrlcode").toString();
err=err+"生产订单"+pmobillcode+""+pmovrowno+"的备料计划行"+pickmvrowno+"物料【"+mrlcode+","+mrlname+"】检查不通过\n"; // err=err+"生产订单"+pmobillcode+""+pmovrowno+"的备料计划行"+pickmvrowno+"物料【"+mrlcode+","+mrlname+"】检查不通过\n";
} // }
throw new BusinessException(err); // throw new BusinessException(err);
} // }
item.setFitemstatus(Integer.valueOf(PMOFItemStatusEnum.FINISH.getEnumValue().getValue())); item.setFitemstatus(Integer.valueOf(PMOFItemStatusEnum.FINISH.getEnumValue().getValue()));
item.setTactendtime(new UFDateTime(AppBsContext.getInstance().getBusiDate().toPersisted())); item.setTactendtime(new UFDateTime(AppBsContext.getInstance().getBusiDate().toPersisted()));
item.setStatus(1); item.setStatus(1);
@ -306,45 +306,45 @@ public class PublicPMOService4WrImpl implements IPublicPMOService4Wr {
PMOHeadVO head = (PMOHeadVO)headMap.get(item.getCpmohid()); PMOHeadVO head = (PMOHeadVO)headMap.get(item.getCpmohid());
UFBoolean autoFlag = (UFBoolean)autodonepara.get(head.getCtrantypeid()); UFBoolean autoFlag = (UFBoolean)autodonepara.get(head.getCtrantypeid());
if (autoFlag.booleanValue()) { if (autoFlag.booleanValue()) {
BaseDAO dao = new BaseDAO(); // BaseDAO dao = new BaseDAO();
// 查询备料计划 如果下游备料计划未出库数量计划出库-累计出库小于0生产订单自动完工取消 naccoutnum 累计出库数量 nplanoutnum计划出库 // // 查询备料计划 如果下游备料计划未出库数量计划出库-累计出库小于0生产订单自动完工取消 naccoutnum 累计出库数量 nplanoutnum计划出库
String pickmsql = "select cbmaterialvid,vrowno,nplanoutnum,naccoutnum from mm_pickm_b where cpickmid in ( select cpickmid from mm_pickm where csourcebillrowid='" + item.getCmoid() + "' and dr=0) and dr = 0"; // String pickmsql = "select cbmaterialvid,vrowno,nplanoutnum,naccoutnum from mm_pickm_b where cpickmid in ( select cpickmid from mm_pickm where csourcebillrowid='" + item.getCmoid() + "' and dr=0) and dr = 0";
List<Map<String,Object>> hmateral = (List<Map<String,Object>>) dao.executeQuery(pickmsql, new MapListProcessor()); // List<Map<String,Object>> hmateral = (List<Map<String,Object>>) dao.executeQuery(pickmsql, new MapListProcessor());
List<String> vrownos = new ArrayList(); // List<String> vrownos = new ArrayList();
List<Map<String,Object>> maps = new ArrayList(); // List<Map<String,Object>> maps = new ArrayList();
//
Boolean l=false; // Boolean l=false;
for (Map<String,Object> map : hmateral) { // for (Map<String,Object> map : hmateral) {
String material =MaterialVO.CODE+","+MaterialVO.NAME+","+MaterialVO.OUTTOLERANCE; // String material =MaterialVO.CODE+","+MaterialVO.NAME+","+MaterialVO.OUTTOLERANCE;
// 物料出库容差 % 0.0000 // // 物料出库容差 % 0.0000
Map<String, Object> goodsMap = MyHelper.transferFields(MaterialVO.getDefaultTableName(), material, MaterialVO.PK_MATERIAL, item.getCmaterialvid()); // Map<String, Object> goodsMap = MyHelper.transferFields(MaterialVO.getDefaultTableName(), material, MaterialVO.PK_MATERIAL, item.getCmaterialvid());
String Outtolerance= null !=goodsMap.get("outtolerance") ? goodsMap.get("outtolerance").toString() : "0"; // String Outtolerance= null !=goodsMap.get("outtolerance") ? goodsMap.get("outtolerance").toString() : "0";
if(null != map.get("nplanoutnum") && null != map.get("naccoutnum") && (new UFDouble(map.get("nplanoutnum").toString()).sub(new UFDouble(String.valueOf(map.get("naccoutnum").toString()))).abs()).compareTo(new UFDouble(String.valueOf(map.get("nplanoutnum").toString())).multiply(new UFDouble(String.valueOf(Outtolerance.toString())))) > 0) { // if(null != map.get("nplanoutnum") && null != map.get("naccoutnum") && (new UFDouble(map.get("nplanoutnum").toString()).sub(new UFDouble(String.valueOf(map.get("naccoutnum").toString()))).abs()).compareTo(new UFDouble(String.valueOf(map.get("nplanoutnum").toString())).multiply(new UFDouble(String.valueOf(Outtolerance.toString())))) > 0) {
UFDouble num1 = new UFDouble(map.get("nplanoutnum").toString()).sub(new UFDouble(String.valueOf(map.get("naccoutnum").toString()))).abs(); // UFDouble num1 = new UFDouble(map.get("nplanoutnum").toString()).sub(new UFDouble(String.valueOf(map.get("naccoutnum").toString()))).abs();
//
l=true; // l=true;
Map<String, Object> map1 =new HashMap<>(); // Map<String, Object> map1 =new HashMap<>();
map1.put("vrowno",map.get("vrowno").toString()); // map1.put("vrowno",map.get("vrowno").toString());
map1.put("mrlname",goodsMap.get("name").toString()); // map1.put("mrlname",goodsMap.get("name").toString());
map1.put("mrlcode",goodsMap.get("code").toString()); // map1.put("mrlcode",goodsMap.get("code").toString());
maps.add(map1); // maps.add(map1);
} // }
} // }
if(l){ // if(l){
// String pickm = " select vbillcode,cpickmid from mm_pickm where csourcebillrowid='" + item.getCmoid() + "' and dr=0"; // // String pickm = " select vbillcode,cpickmid from mm_pickm where csourcebillrowid='" + item.getCmoid() + "' and dr=0";
// List<Map<String,Object>> pickms = (List<Map<String,Object>>) dao.executeQuery(pickm, new MapListProcessor()); // // List<Map<String,Object>> pickms = (List<Map<String,Object>>) dao.executeQuery(pickm, new MapListProcessor());
String err=""; // String err="";
for (Map<String,Object> vrowno : maps) { // for (Map<String,Object> vrowno : maps) {
String pmobillcode= head.getVbillcode(); // String pmobillcode= head.getVbillcode();
String pmovrowno= item.getVrowno(); // String pmovrowno= item.getVrowno();
// String pickmbillcode= pickms.get(0).get("vbillcode").toString(); // // String pickmbillcode= pickms.get(0).get("vbillcode").toString();
String pickmvrowno= vrowno.get("vrowno").toString(); // String pickmvrowno= vrowno.get("vrowno").toString();
String mrlname= vrowno.get("mrlname").toString(); // String mrlname= vrowno.get("mrlname").toString();
String mrlcode= vrowno.get("mrlcode").toString(); // String mrlcode= vrowno.get("mrlcode").toString();
err=err+"生产订单"+pmobillcode+""+pmovrowno+"的备料计划行"+pickmvrowno+"物料【"+mrlcode+","+mrlname+"】检查不通过\n"; // err=err+"生产订单"+pmobillcode+""+pmovrowno+"的备料计划行"+pickmvrowno+"物料【"+mrlcode+","+mrlname+"】检查不通过\n";
} // }
throw new BusinessException(err); // throw new BusinessException(err);
} // }
item.setFitemstatus(Integer.valueOf(PMOFItemStatusEnum.FINISH.getEnumValue().getValue())); item.setFitemstatus(Integer.valueOf(PMOFItemStatusEnum.FINISH.getEnumValue().getValue()));
item.setTactendtime(new UFDateTime(AppBsContext.getInstance().getBusiDate().toPersisted())); item.setTactendtime(new UFDateTime(AppBsContext.getInstance().getBusiDate().toPersisted()));
item.setStatus(1); item.setStatus(1);