2312流程生产订单同步自定义项-张鑫0412
This commit is contained in:
parent
e8a05d8fc5
commit
0890860fd4
|
@ -0,0 +1,114 @@
|
|||
//
|
||||
// Source code recreated from a .class file by IntelliJ IDEA
|
||||
// (powered by FernFlower decompiler)
|
||||
//
|
||||
|
||||
package nc.bs.mmpac.pickm.bp;
|
||||
|
||||
import nc.bs.mmpac.pickm.bp.rule.PickmFillInfoFormMORule;
|
||||
import nc.bs.mmpac.pickm.plugin.PickmPluginPoint;
|
||||
import nc.bs.mmpac.pickm.rule.PickmCheckItemMaterialPermissionRule;
|
||||
import nc.bs.mmpac.pickm.rule.PickmCheckMaterialPermissionRule;
|
||||
import nc.bs.mmpac.pickm.rule.PickmCheckSameStockRule;
|
||||
import nc.bs.mmpac.pickm.rule.PickmCreateSubItemRule;
|
||||
import nc.bs.mmpac.pickm.rule.PickmCreateSubMoForInsertRule;
|
||||
import nc.bs.mmpac.pickm.rule.PickmItemSortByRtForInsertRule;
|
||||
import nc.bs.mmpac.pickm.rule.PickmMakeDateRule;
|
||||
import nc.bs.mmpac.pickm.rule.PickmSaveRule;
|
||||
import nc.bs.mmpac.pickm.rule.SNMaterialNotBackFlushRule;
|
||||
import nc.bs.mmpac.pickm.rule.ic.PickmATPCheckRule;
|
||||
import nc.bs.mmpac.pickm.rule.ic.PickmAutoReserveRule;
|
||||
import nc.bs.mmpac.pickm.rule.ic.PickmSetReplaceSrcAndRowNoAfterInsertRule;
|
||||
import nc.bs.mmpac.pickm.rule.realsub.PickmRewritePLOWhenInsertRule;
|
||||
import nc.bs.pubapp.pub.rule.FieldLengthCheckRule;
|
||||
import nc.bs.pubapp.pub.rule.FillInsertDataRule;
|
||||
import nc.bs.pubapp.pub.rule.OrgDisabledCheckRule;
|
||||
import nc.impl.pubapp.bd.userdef.UserDefSaveRule;
|
||||
import nc.impl.pubapp.pattern.data.bill.template.InsertBPTemplate;
|
||||
import nc.impl.pubapp.pattern.data.bill.tool.BillTransferTool;
|
||||
import nc.impl.pubapp.pattern.rule.IRule;
|
||||
import nc.impl.pubapp.pattern.rule.processer.AroundProcesser;
|
||||
import nc.util.mmf.busi.rule.MMBillCodeCheckAndTrantypeRule;
|
||||
import nc.util.mmf.busi.rule.MMCreateBillcodeAndTrantypecodeRule;
|
||||
import nc.util.mmf.framework.base.MMValueCheck;
|
||||
import nc.vo.mmpac.pickm.entity.AggPickmVO;
|
||||
import nc.vo.mmpac.pickm.entity.PickmHeadVO;
|
||||
import nc.vo.mmpac.pickm.entity.PickmItemVO;
|
||||
|
||||
public class PickmInsertForMoBP {
|
||||
|
||||
public PickmInsertForMoBP() {
|
||||
}
|
||||
|
||||
public AggPickmVO[] insertForMo(AggPickmVO[] vos) {
|
||||
if (MMValueCheck.isEmpty(vos)) {
|
||||
return null;
|
||||
} else {
|
||||
BillTransferTool<AggPickmVO> transferTool = new BillTransferTool(vos);
|
||||
AggPickmVO[] mergedVOs = (AggPickmVO[]) transferTool.getClientFullInfoBill();
|
||||
InsertBPTemplate<AggPickmVO> bp = new InsertBPTemplate(PickmPluginPoint.SAVE);
|
||||
this.addBeforeRule(bp.getAroundProcesser());
|
||||
this.addAfterRule(bp.getAroundProcesser());
|
||||
AggPickmVO[] retvos = (AggPickmVO[]) bp.insert(mergedVOs);
|
||||
return retvos;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
*/
|
||||
@Deprecated
|
||||
protected PickmCreateSubItemRule getPickmCreateSubItemRule(boolean isBg) {
|
||||
return null;
|
||||
}
|
||||
|
||||
private void addAfterRule(AroundProcesser<AggPickmVO> processor) {
|
||||
IRule<AggPickmVO> setReplaceSrcRule = new PickmSetReplaceSrcAndRowNoAfterInsertRule(true);
|
||||
processor.addAfterRule(setReplaceSrcRule);
|
||||
IRule<AggPickmVO> billCodeRule = new MMBillCodeCheckAndTrantypeRule("55A3", "vbillcode", "pk_group", "pk_org",
|
||||
"vbusitype");
|
||||
processor.addAfterRule(billCodeRule);
|
||||
IRule<AggPickmVO> atpCheckRule = new PickmATPCheckRule(false, (AggPickmVO[]) null);
|
||||
processor.addAfterRule(atpCheckRule);
|
||||
IRule<AggPickmVO> pickmAutoReserveRule = new PickmAutoReserveRule();
|
||||
processor.addAfterRule(pickmAutoReserveRule);
|
||||
IRule<AggPickmVO> pickmRewritePLOWhenInsertRule = new PickmRewritePLOWhenInsertRule();
|
||||
processor.addAfterRule(pickmRewritePLOWhenInsertRule);
|
||||
IRule<AggPickmVO> pickmCreateSubMoRule = new PickmCreateSubMoForInsertRule();
|
||||
processor.addAfterRule(pickmCreateSubMoRule);
|
||||
}
|
||||
|
||||
private void addBeforeRule(AroundProcesser<AggPickmVO> processor) {
|
||||
IRule<AggPickmVO> orgRule = new OrgDisabledCheckRule("pk_org", "FACTORYTYPE000000000");
|
||||
processor.addBeforeRule(orgRule);
|
||||
IRule<AggPickmVO> fillDataRule = new FillInsertDataRule();
|
||||
processor.addBeforeRule(fillDataRule);
|
||||
IRule<AggPickmVO> getMakeDateRule = new PickmMakeDateRule();
|
||||
processor.addBeforeRule(getMakeDateRule);
|
||||
IRule<AggPickmVO> billcodeRule = new MMCreateBillcodeAndTrantypecodeRule("55A3", "vbillcode", "pk_group",
|
||||
"pk_org", "vbusitype");
|
||||
processor.addBeforeRule(billcodeRule);
|
||||
IRule<AggPickmVO> createSubItemRule = new PickmCreateSubItemRule(true);
|
||||
processor.addBeforeRule(createSubItemRule);
|
||||
IRule<AggPickmVO> sortItemRule = new PickmItemSortByRtForInsertRule();
|
||||
processor.addBeforeRule(sortItemRule);
|
||||
IRule<AggPickmVO> lengthCheckRule = new FieldLengthCheckRule();
|
||||
processor.addBeforeRule(lengthCheckRule);
|
||||
IRule<AggPickmVO> sameRule = new PickmCheckSameStockRule();
|
||||
processor.addBeforeRule(sameRule);
|
||||
IRule<AggPickmVO> marperRule = new PickmCheckMaterialPermissionRule();
|
||||
processor.addBeforeRule(marperRule);
|
||||
IRule<AggPickmVO> bmarperRule = new PickmCheckItemMaterialPermissionRule();
|
||||
processor.addBeforeRule(bmarperRule);
|
||||
IRule<AggPickmVO> pickmSaveRule = new PickmSaveRule();
|
||||
processor.addBeforeRule(pickmSaveRule);
|
||||
IRule<AggPickmVO> snMaterialCheckRule = new SNMaterialNotBackFlushRule();
|
||||
processor.addBeforeRule(snMaterialCheckRule);
|
||||
IRule<AggPickmVO> atpCheckRule = new PickmATPCheckRule(true, (AggPickmVO[]) null);
|
||||
processor.addBeforeRule(atpCheckRule);
|
||||
IRule<AggPickmVO> userDefSaveRule = new UserDefSaveRule(new String[]{"vdef", "vbdef"},
|
||||
new Class[]{PickmHeadVO.class, PickmItemVO.class});
|
||||
processor.addBeforeRule(userDefSaveRule);
|
||||
processor.addBeforeRule(new PickmFillInfoFormMORule());
|
||||
}
|
||||
}
|
|
@ -26,11 +26,9 @@ import nc.vo.so.m30.entity.SaleOrderBVO;
|
|||
import nc.bs.mmpac.pmo.pac0002.bp.PMORowPutBP;
|
||||
import nccloud.web.mmpac.pmo.action.PmoCardPutAction;
|
||||
|
||||
|
||||
public class putBeforeCheckRule implements IRule<PMOAggVO> {
|
||||
|
||||
private static IUifService service = (IUifService) NCLocator.getInstance()
|
||||
.lookup(IUifService.class.getName());
|
||||
private static IUifService service = (IUifService) NCLocator.getInstance().lookup(IUifService.class.getName());
|
||||
|
||||
@Override
|
||||
public void process(PMOAggVO[] vos) {
|
||||
|
@ -38,7 +36,7 @@ public class putBeforeCheckRule implements IRule<PMOAggVO> {
|
|||
// TODO Auto-generated method stub
|
||||
List<SaleOrderBVO> list = new ArrayList<SaleOrderBVO>();
|
||||
for (PMOAggVO vo : vos) {
|
||||
//判断是否是需要控制的业务单元
|
||||
// 判断是否是需要控制的业务单元
|
||||
PMOHeadVO pmoHeadVO = vo.getParentVO();
|
||||
String pkstockorgStr = getPk_stockorg(pmoHeadVO.getPk_org());
|
||||
if (pkstockorgStr == null || pkstockorgStr.equals("")) {
|
||||
|
@ -47,16 +45,19 @@ public class putBeforeCheckRule implements IRule<PMOAggVO> {
|
|||
PMOItemVO[] iSuperVOs = vo.getChildrenVO();
|
||||
for (int i = 0; i < iSuperVOs.length; i++) {
|
||||
PMOItemVO itemvo = iSuperVOs[i];
|
||||
//判断是否类型是否为30
|
||||
// 判断是否类型是否为30
|
||||
if (itemvo.getVsrctype() == null || !itemvo.getVsrctype().equals("30")) {
|
||||
return;
|
||||
}
|
||||
Map<String, Object> valMap = getVbdef6(itemvo.getVsrcbid());
|
||||
//销售发票表头pk_billtypecode=30-Cxx-12
|
||||
if (valMap.get("pk_billtypecode").equals("30-Cxx-12")||valMap.get("pk_billtypecode").equals("30-Cxx-02")||valMap.get("pk_billtypecode").equals("30-Cxx-08")||valMap.get("pk_billtypecode").equals("30-Cxx-13")) {
|
||||
// 销售发票表头pk_billtypecode=30-Cxx-12
|
||||
if (valMap.get("pk_billtypecode").equals("30-Cxx-12")
|
||||
|| valMap.get("pk_billtypecode").equals("30-Cxx-02")
|
||||
|| valMap.get("pk_billtypecode").equals("30-Cxx-08")
|
||||
|| valMap.get("pk_billtypecode").equals("30-Cxx-13")) {
|
||||
return;
|
||||
}
|
||||
//历史数据不考虑
|
||||
// 历史数据不考虑
|
||||
String storedDateStr = (String) valMap.get("creationtime");
|
||||
String targetDateStr = "2024-12-31 00:00:00";
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
||||
|
@ -65,15 +66,14 @@ public class putBeforeCheckRule implements IRule<PMOAggVO> {
|
|||
if (storedDate.isBefore(targetDate)) {
|
||||
return;
|
||||
}
|
||||
String vdef4Str = itemvo.getVdef4();//齐套率
|
||||
String vdef4Str = itemvo.getVdef4();// 齐套率
|
||||
String vdef4 = (vdef4Str != null) ? vdef4Str.toString() : "";
|
||||
double vdef4qty = (vdef4.isEmpty()) ? 0 : Double.parseDouble(vdef4);//齐套率
|
||||
String vdef10Str = itemvo.getVdef10();//齐套率标准
|
||||
double vdef4qty = (vdef4.isEmpty()) ? 0 : Double.parseDouble(vdef4);// 齐套率
|
||||
String vdef10Str = itemvo.getVdef10();// 齐套率标准
|
||||
String vdef10 = (vdef10Str != null) ? vdef10Str.toString() : "";
|
||||
double vdef10qty = (vdef10.isEmpty()) ? 0 : Double.parseDouble(vdef10);//齐套率标准
|
||||
double vdef10qty = (vdef10.isEmpty()) ? 0 : Double.parseDouble(vdef10);// 齐套率标准
|
||||
if (vdef4qty < vdef10qty) {
|
||||
throw new BusinessException(
|
||||
"齐套率" + vdef4qty + "小于齐套率标准'" + vdef10qty + "',无法保存!");
|
||||
throw new BusinessException("齐套率" + vdef4qty + "小于齐套率标准'" + vdef10qty + "',无法保存!");
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -87,19 +87,16 @@ public class putBeforeCheckRule implements IRule<PMOAggVO> {
|
|||
IUAPQueryBS queryBS = NCLocator.getInstance().lookup(IUAPQueryBS.class);
|
||||
String sql = " SELECT bt.pk_billtypecode,s.creationtime,b.vbdef12,d.nastnum FROM so_saleorder_b b\n"
|
||||
+ "INNER JOIN so_saleorder s ON s.csaleorderid = b.csaleorderid\n"
|
||||
+ "left join (select mm_mo.Vsrcbid,sum(nastnum) as nastnum \n"
|
||||
+ "from mm_mo\n"
|
||||
+ "where mm_mo.dr=0\n"
|
||||
+ "left join (select mm_mo.Vsrcbid,sum(nastnum) as nastnum \n" + "from mm_mo\n" + "where mm_mo.dr=0\n"
|
||||
+ "group by mm_mo.Vsrcbid) d on b.csaleorderbid=d.Vsrcbid\n"
|
||||
+ "INNER JOIN bd_billtype bt on bt.pk_billtypeid=s.ctrantypeid\n"
|
||||
+ "where b.csaleorderbid='" + vsrcbidStr + "' ";
|
||||
+ "INNER JOIN bd_billtype bt on bt.pk_billtypeid=s.ctrantypeid\n" + "where b.csaleorderbid='"
|
||||
+ vsrcbidStr + "' ";
|
||||
Map<String, Object> valList = (Map<String, Object>) queryBS.executeQuery(sql, new MapProcessor());
|
||||
return valList;
|
||||
}
|
||||
|
||||
private String getPk_stockorg(String pk_stockorg) throws BusinessException {
|
||||
String sql =
|
||||
" select pk_stockorg from org_stockorg where code in ('C018','C029','C033','C039','C020','C019') and pk_stockorg='"
|
||||
String sql = " select pk_stockorg from org_stockorg where code in ('C018','C029','C033','C039','C020','C019') and pk_stockorg='"
|
||||
+ pk_stockorg + "' ";
|
||||
String saleorderPK = (String) getQueryService().executeQuery(sql, new ColumnProcessor());
|
||||
return saleorderPK;
|
||||
|
|
|
@ -17,8 +17,7 @@ import nc.vo.pub.BusinessException;
|
|||
import nc.vo.so.m30.entity.SaleOrderBVO;
|
||||
|
||||
/**
|
||||
* 流程生成订单保存时验证销售订单累计排产状态,并验收首付款比例
|
||||
* zhangxinah 适配2312
|
||||
* 流程生成订单保存时验证销售订单累计排产状态,并验收首付款比例 zhangxinah 适配2312
|
||||
*/
|
||||
public class saveBeforeCheckRule implements IRule<PMOAggVO> {
|
||||
|
||||
|
@ -28,7 +27,7 @@ public class saveBeforeCheckRule implements IRule<PMOAggVO> {
|
|||
try {
|
||||
List<SaleOrderBVO> list = new ArrayList<SaleOrderBVO>();
|
||||
for (PMOAggVO vo : vos) {
|
||||
//判断是否是需要控制的业务单元
|
||||
// 判断是否是需要控制的业务单元
|
||||
PMOHeadVO pmoHeadVO = vo.getParentVO();
|
||||
String pkstockorgStr = getPk_stockorg(pmoHeadVO.getPk_org());
|
||||
if (pkstockorgStr == null || pkstockorgStr.equals("")) {
|
||||
|
@ -37,7 +36,7 @@ public class saveBeforeCheckRule implements IRule<PMOAggVO> {
|
|||
PMOItemVO[] iSuperVOs = vo.getChildrenVO();
|
||||
for (int i = 0; i < iSuperVOs.length; i++) {
|
||||
PMOItemVO itemvo = iSuperVOs[i];
|
||||
//判断是否类型是否为30
|
||||
// 判断是否类型是否为30
|
||||
if (itemvo.getVsrctype() == null || !itemvo.getVsrctype().equals("30")) {
|
||||
return;
|
||||
}
|
||||
|
@ -46,11 +45,14 @@ public class saveBeforeCheckRule implements IRule<PMOAggVO> {
|
|||
if (valMap == null || valMap.isEmpty()) {
|
||||
throw new BusinessException("无法关联到销售订单,无法保存!");
|
||||
}
|
||||
//销售发票表头pk_billtypecode=30-Cxx-12
|
||||
if (valMap.get("pk_billtypecode").equals("30-Cxx-12")||valMap.get("pk_billtypecode").equals("30-Cxx-02")||valMap.get("pk_billtypecode").equals("30-Cxx-08")||valMap.get("pk_billtypecode").equals("30-Cxx-13")) {
|
||||
// 销售发票表头pk_billtypecode=30-Cxx-12
|
||||
if (valMap.get("pk_billtypecode").equals("30-Cxx-12")
|
||||
|| valMap.get("pk_billtypecode").equals("30-Cxx-02")
|
||||
|| valMap.get("pk_billtypecode").equals("30-Cxx-08")
|
||||
|| valMap.get("pk_billtypecode").equals("30-Cxx-13")) {
|
||||
return;
|
||||
}
|
||||
//历史数据不考虑
|
||||
// 历史数据不考虑
|
||||
String storedDateStr = (String) valMap.get("creationtime");
|
||||
String targetDateStr = "2024-12-27 00:00:00";
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
||||
|
@ -60,19 +62,16 @@ public class saveBeforeCheckRule implements IRule<PMOAggVO> {
|
|||
return;
|
||||
}
|
||||
if (valMap.get("vbdef12") == null) {
|
||||
throw new BusinessException(
|
||||
"生产订单明细" + (i + 1) + ",累计排产申请数量为0,无法保存!");
|
||||
throw new BusinessException("生产订单明细" + (i + 1) + ",累计排产申请数量为0,无法保存!");
|
||||
} else {
|
||||
try {
|
||||
double sQty = Double.parseDouble((String) valMap.get("vbdef12"));//累计排产申请数量
|
||||
double sQty = Double.parseDouble((String) valMap.get("vbdef12"));// 累计排产申请数量
|
||||
Object ntotaloutnumsObj = valMap.get("nastnum");
|
||||
String ntotaloutnums = (ntotaloutnumsObj != null) ? ntotaloutnumsObj.toString() : "";
|
||||
double ntotaloutnum =
|
||||
(ntotaloutnums.isEmpty()) ? 0 : Double.parseDouble(ntotaloutnums);//累计生产数量
|
||||
double ntotaloutnum = (ntotaloutnums.isEmpty()) ? 0 : Double.parseDouble(ntotaloutnums);// 累计生产数量
|
||||
double bdnum = itemvo.getNastnum().getDouble();
|
||||
if (sQty < (ntotaloutnum + bdnum)) {
|
||||
throw new BusinessException(
|
||||
"生产订单明细" + (i + 1) + ",累计生产数量'" + (ntotaloutnum + bdnum)
|
||||
throw new BusinessException("生产订单明细" + (i + 1) + ",累计生产数量'" + (ntotaloutnum + bdnum)
|
||||
+ "'大于销售订单累计排产申请数量'" + sQty + "',无法保存!");
|
||||
}
|
||||
} catch (NumberFormatException e) {
|
||||
|
@ -90,19 +89,16 @@ public class saveBeforeCheckRule implements IRule<PMOAggVO> {
|
|||
IUAPQueryBS queryBS = NCLocator.getInstance().lookup(IUAPQueryBS.class);
|
||||
String sql = " SELECT bt.pk_billtypecode,s.creationtime,b.vbdef12,d.nastnum FROM so_saleorder_b b\n"
|
||||
+ "INNER JOIN so_saleorder s ON s.csaleorderid = b.csaleorderid\n"
|
||||
+ "left join (select mm_mo.Vsrcbid,sum(nastnum) as nastnum \n"
|
||||
+ "from mm_mo\n"
|
||||
+ "where mm_mo.dr=0\n"
|
||||
+ "left join (select mm_mo.Vsrcbid,sum(nastnum) as nastnum \n" + "from mm_mo\n" + "where mm_mo.dr=0\n"
|
||||
+ "group by mm_mo.Vsrcbid) d on b.csaleorderbid=d.Vsrcbid\n"
|
||||
+ "INNER JOIN bd_billtype bt on bt.pk_billtypeid=s.ctrantypeid\n"
|
||||
+ "where b.csaleorderbid='" + vsrcbidStr + "' ";
|
||||
+ "INNER JOIN bd_billtype bt on bt.pk_billtypeid=s.ctrantypeid\n" + "where b.csaleorderbid='"
|
||||
+ vsrcbidStr + "' ";
|
||||
Map<String, Object> valList = (Map<String, Object>) queryBS.executeQuery(sql, new MapProcessor());
|
||||
return valList;
|
||||
}
|
||||
|
||||
private String getPk_stockorg(String pk_stockorg) throws BusinessException {
|
||||
String sql =
|
||||
" select pk_stockorg from org_stockorg where code in ('C018','C029','C033','C039','C020','C019') and pk_stockorg='"
|
||||
String sql = " select pk_stockorg from org_stockorg where code in ('C018','C029','C033','C039','C020','C019') and pk_stockorg='"
|
||||
+ pk_stockorg + "' ";
|
||||
String saleorderPK = (String) getQueryService().executeQuery(sql, new ColumnProcessor());
|
||||
return saleorderPK;
|
||||
|
|
|
@ -47,23 +47,25 @@ public class WrInsertBP {
|
|||
Map<String, String> vbatchsMap = new HashMap();
|
||||
this.addBeforeRule(processor, vos, vbatchsMap);
|
||||
this.addAfterRule(processor, vbatchsMap);
|
||||
return (AggWrVO[])bp.insert(vos);
|
||||
return (AggWrVO[]) bp.insert(vos);
|
||||
}
|
||||
|
||||
private void addBeforeRule(AroundProcesser<AggWrVO> processer, AggWrVO[] vos, Map<String, String> vbatchsMap) {
|
||||
IRule<AggWrVO> wrNullRule = new WrNullRule();
|
||||
processer.addBeforeRule(wrNullRule);
|
||||
IRule<AggWrVO> mmatoMaterialCheckRule = new MMATOMaterialCheckRule((String)null, "cbmaterialvid", "cbffileid");
|
||||
IRule<AggWrVO> mmatoMaterialCheckRule = new MMATOMaterialCheckRule((String) null, "cbmaterialvid", "cbffileid");
|
||||
processer.addBeforeRule(mmatoMaterialCheckRule);
|
||||
IRule<AggWrVO> orgRule = new OrgDisabledCheckRule("pk_org", "FACTORYTYPE000000000");
|
||||
processer.addBeforeRule(orgRule);
|
||||
IRule<AggWrVO> checkDefRule = new UserDefSaveRule(new String[]{"vdef", "vbdef", "vgdef", "vpdef"}, new Class[]{WrVO.class, WrItemVO.class, WrQualityVO.class, WrPickVO.class});
|
||||
IRule<AggWrVO> checkDefRule = new UserDefSaveRule(new String[] { "vdef", "vbdef", "vgdef", "vpdef" },
|
||||
new Class[] { WrVO.class, WrItemVO.class, WrQualityVO.class, WrPickVO.class });
|
||||
processer.addBeforeRule(checkDefRule);
|
||||
MarAssistantSaveRule<AggWrVO> marRule = new MarAssistantSaveRule();
|
||||
processer.addBeforeRule(marRule);
|
||||
IRule<AggWrVO> fillInsertDataRule = new WrFillInsertDataRule();
|
||||
processer.addBeforeRule(fillInsertDataRule);
|
||||
IRule<AggWrVO> autoMaterialAssignRule = new MMAutoMaterialAssignRule((String)null, "cbmaterialvid", new String[]{"pk_org"}, (String[])null);
|
||||
IRule<AggWrVO> autoMaterialAssignRule = new MMAutoMaterialAssignRule((String) null, "cbmaterialvid",
|
||||
new String[] { "pk_org" }, (String[]) null);
|
||||
processer.addBeforeFinalRule(autoMaterialAssignRule);
|
||||
IRule<AggWrVO> orgPermissionRule = new WrCheckMaterialPermissionRule();
|
||||
processer.addBeforeRule(orgPermissionRule);
|
||||
|
@ -74,7 +76,8 @@ public class WrInsertBP {
|
|||
processer.addBeforeRule(wrSetDefaultValueWhenInsertRule);
|
||||
IRule<AggWrVO> wrSetItemDefaultValueRule = new WrSetItemDefaultValueRule();
|
||||
processer.addBeforeRule(wrSetItemDefaultValueRule);
|
||||
IRule<AggWrVO> billcodeRule = new MMCreateBillcodeAndTrantypecodeRule("55A4", "vbillcode", "pk_group", "pk_org", "vtrantypecode");
|
||||
IRule<AggWrVO> billcodeRule = new MMCreateBillcodeAndTrantypecodeRule("55A4", "vbillcode", "pk_group", "pk_org",
|
||||
"vtrantypecode");
|
||||
processer.addBeforeRule(billcodeRule);
|
||||
IRule<AggWrVO> wrHeadNotNullRule = new WrHeadNotNullRule();
|
||||
processer.addBeforeRule(wrHeadNotNullRule);
|
||||
|
@ -95,7 +98,8 @@ public class WrInsertBP {
|
|||
processer.addBeforeRule(wrConsumeNotNullRule);
|
||||
IRule<AggWrVO> lengthCheckRule = new FieldLengthCheckRule();
|
||||
processer.addBeforeRule(lengthCheckRule);
|
||||
IRule<AggWrVO> wrInsertAndDelInStockBatchCodeBeforeRule = new WrInsertAndDelInStockBatchCodeBeforeRule(vbatchsMap);
|
||||
IRule<AggWrVO> wrInsertAndDelInStockBatchCodeBeforeRule = new WrInsertAndDelInStockBatchCodeBeforeRule(
|
||||
vbatchsMap);
|
||||
processer.addBeforeRule(wrInsertAndDelInStockBatchCodeBeforeRule);
|
||||
WrSetQualityVODefaultValueRule wrSetQualityVODefaultValueRule = new WrSetQualityVODefaultValueRule();
|
||||
processer.addBeforeRule(wrSetQualityVODefaultValueRule);
|
||||
|
@ -114,7 +118,8 @@ public class WrInsertBP {
|
|||
}
|
||||
|
||||
private void addAfterRule(AroundProcesser<AggWrVO> processor, Map<String, String> vbatchsMap) {
|
||||
IRule<AggWrVO> rule = new MMBillCodeCheckAndTrantypeRule("55A4", "vbillcode", "pk_group", "pk_org", "vtrantypecode");
|
||||
IRule<AggWrVO> rule = new MMBillCodeCheckAndTrantypeRule("55A4", "vbillcode", "pk_group", "pk_org",
|
||||
"vtrantypecode");
|
||||
processor.addAfterRule(rule);
|
||||
IRule<AggWrVO> wrCreateInStockBatchCodeAfterRule = new WrInsertInStockBatchCodeAfterRule(vbatchsMap);
|
||||
processor.addAfterRule(wrCreateInStockBatchCodeAfterRule);
|
||||
|
|
|
@ -0,0 +1,70 @@
|
|||
package nc.bs.mmpac.wr.rule;
|
||||
|
||||
import nc.impl.pubapp.pattern.rule.IRule;
|
||||
import nc.util.mmf.framework.base.MMArrayUtil;
|
||||
import nc.util.mmf.framework.base.MMValueCheck;
|
||||
import nc.util.mmpac.wr.WrCheckRuleUtil;
|
||||
import nc.vo.mmpac.wr.entity.AggWrVO;
|
||||
import nc.vo.mmpac.wr.entity.WrItemVO;
|
||||
import nc.vo.mmpac.wr.entity.WrVO;
|
||||
import nc.vo.mmpac.wr.enumeration.WrProdModeEnum;
|
||||
import nc.vo.pub.VOStatus;
|
||||
import nc.vo.pubapp.AppContext;
|
||||
|
||||
/**
|
||||
* 生产报告新增时,设置默认值规则
|
||||
*
|
||||
* @since 6.1
|
||||
* @author zhoudi
|
||||
*/
|
||||
public class WrSetDefaultValueWhenInsertRule implements IRule<AggWrVO> {
|
||||
|
||||
@Override
|
||||
public void process(AggWrVO[] vos) {
|
||||
|
||||
if (MMValueCheck.isEmpty(vos)) {
|
||||
return;
|
||||
}
|
||||
|
||||
WrVO headVO;
|
||||
|
||||
for (AggWrVO aggVO : vos) {
|
||||
|
||||
headVO = (WrVO) aggVO.getParent();
|
||||
|
||||
if (MMValueCheck.isEmpty(headVO)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// 新增状态
|
||||
headVO.setStatus(VOStatus.NEW);
|
||||
|
||||
// 制单人、制单时间
|
||||
headVO.setBillmaker(AppContext.getInstance().getPkUser());
|
||||
if (headVO.getDmakedate() == null) {
|
||||
headVO.setDmakedate(AppContext.getInstance().getBusiDate());
|
||||
}
|
||||
|
||||
if (!WrProdModeEnum.FLOW.equalsValue(vos[0].getParentVO().getFprodmode())) {
|
||||
continue;
|
||||
}
|
||||
WrItemVO[] wrItemVOs = (WrItemVO[]) aggVO.getChildren(WrItemVO.class);
|
||||
if (MMArrayUtil.isEmpty(wrItemVOs)) {
|
||||
continue;
|
||||
}
|
||||
// 生产部门等,表体字段均相等,则同步表体字段到表头
|
||||
for (String[] headitemKey : this.headKeyToitemKey) {
|
||||
if (WrCheckRuleUtil.isItemKeyValueAllSame(wrItemVOs, headitemKey[1])) {
|
||||
headVO.setAttributeValue(headitemKey[0], wrItemVOs[0].getAttributeValue(headitemKey[1]));
|
||||
}
|
||||
}
|
||||
if (MMValueCheck.isEmpty(headVO.getCdeptvid()) && MMValueCheck.isNotEmpty(headVO.getCdeptid())) {
|
||||
headVO.setCdeptid(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private String[][] headKeyToitemKey = { { WrVO.CDEPTID, WrItemVO.CBDEPTID }, { WrVO.CDEPTVID, WrItemVO.CBDEPTVID },
|
||||
{ WrVO.CWKID, WrItemVO.CBWKID }, { WrVO.CTEAMID, WrItemVO.CBTEAMID }, { WrVO.CSHIFTID, WrItemVO.CBSHIFTID },
|
||||
{ WrVO.CWORKMANID, WrItemVO.CBWORKMANID } };
|
||||
}
|
|
@ -18,76 +18,67 @@ import nc.vo.pub.BusinessException;
|
|||
|
||||
import java.util.ArrayList;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public class PickMFinishRule
|
||||
extends Object
|
||||
implements IRule<AggWrVO>
|
||||
{
|
||||
public class PickMFinishRule extends Object implements IRule<AggWrVO> {
|
||||
public void process(AggWrVO[] vos) {
|
||||
if (MMValueCheck.isEmpty(vos)) {
|
||||
return;
|
||||
}
|
||||
/**
|
||||
* 业务逻辑:
|
||||
* 1.根据生产报告子表中生产订单行查看生产订单明细表
|
||||
* 2.查看生产订单明细行的状态是否为完工(2)
|
||||
* 3.若为完工状态,则根据生成报告子表中生产订单行查询备料计划
|
||||
* 4.修改备料计划为完成状态(3)
|
||||
* 业务逻辑: 1.根据生产报告子表中生产订单行查看生产订单明细表 2.查看生产订单明细行的状态是否为完工(2)
|
||||
* 3.若为完工状态,则根据生成报告子表中生产订单行查询备料计划 4.修改备料计划为完成状态(3)
|
||||
*/
|
||||
for(int i = 0; i < vos.length; i++) {
|
||||
for (int i = 0; i < vos.length; i++) {
|
||||
AggWrVO vo = vos[i];
|
||||
WrItemVO[] items = vo.getChildrenVO();
|
||||
//循环生产报告子表
|
||||
for(int j = 0; j < items.length; j++) {
|
||||
// 循环生产报告子表
|
||||
for (int j = 0; j < items.length; j++) {
|
||||
WrItemVO item = items[j];
|
||||
String cbmobid = item.getCbmobid();
|
||||
String[] keys = {cbmobid};
|
||||
//生产订单行查询
|
||||
String[] keys = { cbmobid };
|
||||
// 生产订单行查询
|
||||
PMOItemVO[] pmoItemvos = (new PMOItemVOQueryBP()).getPMOItemVOsByids(keys);
|
||||
//查看生产订单行状态是否为完工(2)
|
||||
if(pmoItemvos.length > 0) {
|
||||
// 查看生产订单行状态是否为完工(2)
|
||||
if (pmoItemvos.length > 0) {
|
||||
PMOItemVO pmoItem = pmoItemvos[0];
|
||||
int fitemStatus = pmoItem.getFitemstatus();
|
||||
if(fitemStatus != 2) {
|
||||
if (fitemStatus != 2) {
|
||||
continue;
|
||||
}
|
||||
//根据生产订单行查询备料计划
|
||||
// 根据生产订单行查询备料计划
|
||||
// BillQuery<AggPickmVO> query = new BillQuery<AggPickmVO>(AggPickmVO.class);
|
||||
// AggPickmVO[] aggVOs = (AggPickmVO[])query.query(keys);
|
||||
|
||||
String whereSql = "nvl(mm_pickm.dr,0) = 0 and mm_pickm.vsourcemorowid = '" + cbmobid + "'";
|
||||
IMDPersistenceQueryService aggvoQueryService = NCLocator.getInstance().lookup(IMDPersistenceQueryService.class);
|
||||
IMDPersistenceQueryService aggvoQueryService = NCLocator.getInstance()
|
||||
.lookup(IMDPersistenceQueryService.class);
|
||||
// ¸ù¾ÝÖ÷¼ü²éѯµÃµ½aggvo
|
||||
try {
|
||||
@SuppressWarnings("unchecked")
|
||||
ArrayList<AggPickmVO> aggVOs = (ArrayList<AggPickmVO>)aggvoQueryService.queryBillOfVOByCond(AggPickmVO.class, whereSql, true, false);
|
||||
if(aggVOs.size() <= 0) {
|
||||
ArrayList<AggPickmVO> aggVOs = (ArrayList<AggPickmVO>) aggvoQueryService
|
||||
.queryBillOfVOByCond(AggPickmVO.class, whereSql, true, false);
|
||||
if (aggVOs.size() <= 0) {
|
||||
continue;
|
||||
}
|
||||
//数组转换
|
||||
// 数组转换
|
||||
AggPickmVO[] aggVOsArr = new AggPickmVO[aggVOs.size()];
|
||||
boolean flag = false;
|
||||
for(int z=0; z<aggVOs.size(); z++) {
|
||||
for (int z = 0; z < aggVOs.size(); z++) {
|
||||
AggPickmVO aggPickmVO = aggVOs.get(z);
|
||||
PickmHeadVO pickmHeadVO = aggPickmVO.getParentVO();
|
||||
Integer fbillstatus = pickmHeadVO.getFbillstatus();
|
||||
if(fbillstatus != 2){
|
||||
aggVOsArr[z] =aggVOs.get(z);
|
||||
if (fbillstatus != 2) {
|
||||
aggVOsArr[z] = aggVOs.get(z);
|
||||
flag = true;
|
||||
}
|
||||
|
||||
}
|
||||
if(flag){
|
||||
//备料计划完工
|
||||
IPickmMaintainService ipickmMaintainService = NCLocator.getInstance().lookup(IPickmMaintainService.class);
|
||||
if (flag) {
|
||||
// 备料计划完工
|
||||
IPickmMaintainService ipickmMaintainService = NCLocator.getInstance()
|
||||
.lookup(IPickmMaintainService.class);
|
||||
ipickmMaintainService.finishPickm(aggVOsArr);
|
||||
}
|
||||
}catch(BusinessException e) {
|
||||
} catch (BusinessException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
@ -102,5 +93,3 @@ public class PickMFinishRule
|
|||
inSertControl.process(aggChangeVOs);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
package nc.bs.pub.action;
|
||||
|
||||
import nc.bs.mmpac.pmo.pac0002.bp.PMOCommitBP;
|
||||
import nc.bs.mmpac.pmo.pac0002.flowbiz.PMOCommitFlowCheckRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.pluginpoint.PMOPluginPoint;
|
||||
import nc.bs.pubapp.pf.action.AbstractPfAction;
|
||||
import nc.impl.pubapp.pattern.rule.processer.CompareAroundProcesser;
|
||||
import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO;
|
||||
import nc.bs.mmpac.pmo.pac0002.bp.rule.saveBeforeCheckRule;
|
||||
|
||||
public class N_55A2_SAVE extends AbstractPfAction<PMOAggVO> {
|
||||
protected CompareAroundProcesser<PMOAggVO> getCompareAroundProcesserWithRules(Object userObj) {
|
||||
CompareAroundProcesser<PMOAggVO> processer = new CompareAroundProcesser<PMOAggVO>(PMOPluginPoint.COMMIT);
|
||||
|
||||
addBeforeRule(processer);
|
||||
|
||||
addAfterRule(processer);
|
||||
return processer;
|
||||
}
|
||||
|
||||
private void addBeforeRule(CompareAroundProcesser<PMOAggVO> processer) {
|
||||
processer.addBeforeFinalRule(new PMOCommitFlowCheckRule());
|
||||
processer.addBeforeRule(new saveBeforeCheckRule());
|
||||
}
|
||||
|
||||
private void addAfterRule(CompareAroundProcesser<PMOAggVO> processer) {
|
||||
}
|
||||
|
||||
protected PMOAggVO[] processBP(Object userObj, PMOAggVO[] clientFullVOs, PMOAggVO[] originBills) {
|
||||
return (new PMOCommitBP()).commit(clientFullVOs, originBills);
|
||||
}
|
||||
}
|
|
@ -21,10 +21,8 @@ import nc.vo.pub.BusinessException;
|
|||
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
|
||||
import nc.pubitf.mmpac.pickm.pub.IPickmPubQueryService;
|
||||
|
||||
|
||||
/**
|
||||
* 适配2312MPR运算时把合同编号合同销售订单号标前项目号带到计划订单
|
||||
* zhangxinah
|
||||
* 巠饜2312MPR堍呾奀參磁肮晤瘍磁肮种忮隆等瘍梓ゴ砐醴瘍湍善數赫隆等 zhangxinah
|
||||
*/
|
||||
|
||||
public class PloProdDeptRule extends Object implements IRule<AggregatedPoVO> {
|
||||
|
@ -55,8 +53,8 @@ public class PloProdDeptRule extends Object implements IRule<AggregatedPoVO> {
|
|||
vids.add(vid);
|
||||
}
|
||||
}
|
||||
String vsrcbid = plo.getVsrcbid();// 来源单据表体主键
|
||||
int fdemandbill = plo.getFdemandbill();// 需求来源
|
||||
String vsrcbid = plo.getVsrcbid();// 懂埭等擂桶极翋瑩
|
||||
int fdemandbill = plo.getFdemandbill();// 剒А懂埭
|
||||
if (PoSourceEnum.COMPUT == posource && fdemandbill == 1) {
|
||||
vsrcbidList.add(vsrcbid);
|
||||
}
|
||||
|
@ -72,23 +70,23 @@ public class PloProdDeptRule extends Object implements IRule<AggregatedPoVO> {
|
|||
pickmVOMap.getClass();
|
||||
for (AggregatedPoVO agg : vos) {
|
||||
PoVO plo = agg.getParentVO();
|
||||
String vsrcbid = plo.getVsrcbid();// 来源单据表体主键
|
||||
String vsrcbid = plo.getVsrcbid();// 懂埭等擂桶极翋瑩
|
||||
AggPickmVO aggPickmVOData = pickmVOMap.get(vsrcbid);
|
||||
if (aggPickmVOData != null) {
|
||||
PickmItemVO[] children = (PickmItemVO[]) aggPickmVOData.getChildren(PickmItemVO.class);
|
||||
String vbdef5 = "";// 合同编号
|
||||
String vbdef6 = "";// 合同销售订单号
|
||||
String vbdef7 = "";// 标前项目号
|
||||
String vbdef5 = "";// 磁肮晤瘍
|
||||
String vbdef6 = "";// 磁肮种忮隆等瘍
|
||||
String vbdef7 = "";// 梓ゴ砐醴瘍
|
||||
for (PickmItemVO pickmItemVO : children) {
|
||||
if (pickmItemVO.getCpickm_bid().equals(vsrcbid)) {
|
||||
vbdef5 = pickmItemVO.getVbdef5();// 合同编号
|
||||
vbdef6 = pickmItemVO.getVbdef6();// 合同销售订单号
|
||||
vbdef7 = pickmItemVO.getVbdef7();// 标前项目号
|
||||
vbdef5 = pickmItemVO.getVbdef5();// 磁肮晤瘍
|
||||
vbdef6 = pickmItemVO.getVbdef6();// 磁肮种忮隆等瘍
|
||||
vbdef7 = pickmItemVO.getVbdef7();// 梓ゴ砐醴瘍
|
||||
}
|
||||
}
|
||||
plo.setVdef2(vbdef5);// 合同编号
|
||||
plo.setVdef3(vbdef6);// 合同销售订单号
|
||||
plo.setVdef4(vbdef7);// 标前项目号
|
||||
plo.setVdef2(vbdef5);// 磁肮晤瘍
|
||||
plo.setVdef3(vbdef6);// 磁肮种忮隆等瘍
|
||||
plo.setVdef4(vbdef7);// 梓ゴ砐醴瘍
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue