2312流程生产订单同步自定义项-张鑫0412

This commit is contained in:
zhangxinah@yonyou.com 2025-04-12 12:26:39 +08:00
parent e8a05d8fc5
commit 0890860fd4
9 changed files with 2348 additions and 372 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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