This commit is contained in:
parent
1ee7936bbb
commit
6272e4bcfc
|
|
@ -0,0 +1,72 @@
|
|||
package nc.bs.so.m30.rule.maintainprocess;
|
||||
|
||||
import nc.bs.dao.BaseDAO;
|
||||
import nc.bs.dao.DAOException;
|
||||
import nc.impl.pubapp.pattern.rule.IRule;
|
||||
import nc.jdbc.framework.processor.MapListProcessor;
|
||||
import nc.vo.ic.m46.entity.FinProdInBodyVO;
|
||||
import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO;
|
||||
import nc.vo.pub.lang.UFDouble;
|
||||
import nc.vo.so.m30.entity.SaleOrderBVO;
|
||||
import nc.vo.so.m30.entity.SaleOrderVO;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 销售订单在单价vbdef25变更后 需要同步变更流程生产订单和产成品入库
|
||||
* lihao
|
||||
*/
|
||||
public class UpdatePmoAndFinProdInRule implements IRule<SaleOrderVO> {
|
||||
@Override
|
||||
public void process(SaleOrderVO[] saleOrderVOS) {
|
||||
if (saleOrderVOS == null || saleOrderVOS.length == 0) {
|
||||
return;
|
||||
}try {
|
||||
BaseDAO dao = new BaseDAO();
|
||||
for (SaleOrderVO saleOrderVO : saleOrderVOS) {
|
||||
String id=saleOrderVO.getPrimaryKey();
|
||||
for (SaleOrderBVO saleOrderBVO:saleOrderVO.getChildrenVO()){
|
||||
// 无税单价
|
||||
UFDouble nqtorigprice=saleOrderBVO.getNqtorigprice();
|
||||
// 查询流程生产订单
|
||||
String mosql = "select cmoid,nastnum,vdef25 from mm_mo where vsrcbid = '"+saleOrderBVO.getCsaleorderbid()+"' and dr = 0";
|
||||
List<Map<String, Object>> mo = (List<Map<String, Object>>) dao.executeQuery(mosql, new MapListProcessor());
|
||||
for (Map<String, Object> map : mo) {
|
||||
UFDouble nastnum= new UFDouble(map.get("nastnum").toString());
|
||||
UFDouble vdef25= new UFDouble(map.get("vdef25") !=null ? map.get("vdef25").toString():"0");
|
||||
if(vdef25.compareTo(nqtorigprice) != 0){
|
||||
UFDouble newVdef26 = nqtorigprice.multiply(nastnum);
|
||||
String updatemosql = "update mm_mo set vdef25='"+nqtorigprice.toString()+"',vdef26='"+newVdef26.toString()+"' where cmoid = '"+map.get("cmoid")+"' and dr = 0";
|
||||
dao.executeUpdate(updatemosql);
|
||||
// 查询生产报告
|
||||
String wrsql = "select pk_wr_product from mm_wr_product where cbmobid = '"+map.get("cmoid")+"' and dr = 0";
|
||||
List<Map<String, Object>> wr = (List<Map<String, Object>>) dao.executeQuery(wrsql, new MapListProcessor());
|
||||
for (Map<String, Object> wr1 : wr) {
|
||||
// 查询产成品入库但
|
||||
String insql = "select cgeneralbid,vbdef25,vbdef26,nassistnum from ic_finprodin_b where VSOURCEROWNO = '"+wr1.get("pk_wr_product")+"' and dr = 0";
|
||||
List<Map<String, Object>> in = (List<Map<String, Object>>) dao.executeQuery(insql, new MapListProcessor());
|
||||
for (Map<String, Object> in1 : in) {
|
||||
UFDouble nassistnum= new UFDouble(in1.get("nassistnum").toString());
|
||||
UFDouble vbdef25= new UFDouble(in1.get("vbdef25")!=null ? in1.get("vbdef25").toString():"0");
|
||||
if(vbdef25.compareTo(nqtorigprice) != 0){
|
||||
UFDouble newVbdef26 = nqtorigprice.multiply(nastnum);
|
||||
String updateinsql = "update ic_finprodin_b set vbdef25='"+nqtorigprice.toString()+"',vbdef26='"+newVbdef26.toString()+"' where cgeneralbid = '"+in1.get("cgeneralbid")+"' and dr = 0";
|
||||
dao.executeUpdate(updateinsql);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
} catch (DAOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -169,8 +169,8 @@ public class ApproveSaleOrderAction {
|
|||
processer.addAfterRule(new AfterApprovingSynchronizeRuleMES());
|
||||
// 在审批后推送到QMS系统
|
||||
processer.addAfterRule(new AfterApprovingSynchronizeRuleQMS());
|
||||
// 在审批后推送到高压MES
|
||||
processer.addAfterRule(new AfterSoSyncRuleGyMes());
|
||||
// // 在审批后推送到高压MES
|
||||
// processer.addAfterRule(new AfterSoSyncRuleGyMes());
|
||||
}
|
||||
|
||||
private boolean isExistDelivery(String ctranstype) {
|
||||
|
|
|
|||
|
|
@ -2,9 +2,11 @@ package nc.impl.so.m30.action.main;
|
|||
|
||||
import nc.bs.so.m30.maintain.UpdateSaleOrderBP;
|
||||
import nc.bs.so.m30.plugin.Action30PlugInPoint;
|
||||
import nc.bs.so.m30.rule.approve.AfterSoSyncRuleGyMes;
|
||||
import nc.bs.so.m30.rule.maintainprocess.CompareDimensionModifyRule;
|
||||
import nc.bs.so.m30.rule.maintainprocess.FillupDataWhenUpdateRule;
|
||||
import nc.bs.so.m30.rule.maintainprocess.NullRule;
|
||||
import nc.bs.so.m30.rule.maintainprocess.UpdatePmoAndFinProdInRule;
|
||||
import nc.impl.pubapp.pattern.rule.IRule;
|
||||
import nc.impl.pubapp.pattern.rule.processer.CompareAroundProcesser;
|
||||
import nc.vo.pubapp.pattern.log.TimeLog;
|
||||
|
|
@ -40,6 +42,11 @@ public class UpdateSaleOrderAction {
|
|||
private void addAfterRule(CompareAroundProcesser<SaleOrderVO> processer) {
|
||||
processer.addAfterRule(new NullRule());
|
||||
processer.addAfterRule(new CompareDimensionModifyRule());
|
||||
// 在变更后推送到高压MES
|
||||
// processer.addAfterRule(new AfterSoSyncRuleGyMes());
|
||||
|
||||
// 销售订单在单价vbdef25变更后 需要同步变更流程生产订单和产成品入库
|
||||
processer.addAfterRule(new UpdatePmoAndFinProdInRule());
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,104 @@
|
|||
//
|
||||
// Source code recreated from a .class file by IntelliJ IDEA
|
||||
// (powered by FernFlower decompiler)
|
||||
//
|
||||
|
||||
package nc.impl.so.m30.revise.action;
|
||||
|
||||
import nc.bs.so.m30.maintain.util.VOCheckFor30R;
|
||||
import nc.bs.so.m30.plugin.Action30PlugInPoint;
|
||||
import nc.bs.so.m30.revise.SaveReviseSaleOrderBP;
|
||||
import nc.bs.so.m30.rule.feature.CfgMatchCheckRule;
|
||||
import nc.bs.so.m30.rule.feature.CfgMatchSaveRule;
|
||||
import nc.bs.so.m30.rule.maintaincheck.CheckNumPriceMnyRule;
|
||||
import nc.bs.so.m30.rule.maintainprocess.FillupFretexchangeRule;
|
||||
import nc.bs.so.m30.rule.maintainprocess.SaleOrderCheckNumAndMnyRule;
|
||||
import nc.bs.so.m30.rule.maintainprocess.UpdatePmoAndFinProdInRule;
|
||||
import nc.impl.pubapp.pattern.data.bill.tool.BillTransferTool;
|
||||
import nc.impl.pubapp.pattern.rule.ICompareRule;
|
||||
import nc.impl.pubapp.pattern.rule.IRule;
|
||||
import nc.impl.pubapp.pattern.rule.processer.CompareAroundProcesser;
|
||||
import nc.impl.so.m30.revise.action.rule.FillupDataRule;
|
||||
import nc.impl.so.m30.revise.action.rule.OffsetCheckRule;
|
||||
import nc.impl.so.m30.revise.action.rule.RenovateARByHidsBeginRule;
|
||||
import nc.impl.so.m30.revise.action.rule.RenovateARByHidsEndRule;
|
||||
import nc.impl.so.m30.revise.action.rule.ReviseFeatureCheckRule;
|
||||
import nc.impl.so.m30.revise.action.rule.RmNtotalorigmnyCheckRule;
|
||||
import nc.impl.so.m30.revise.action.rule.SHCrossRuleValidate;
|
||||
import nc.impl.so.m30.revise.action.rule.SaleOrderReviseCheckRule;
|
||||
import nc.vo.credit.engrossmaintain.pub.action.M30EngrossAction;
|
||||
import nc.vo.pub.BusinessException;
|
||||
import nc.vo.pubapp.pattern.log.TimeLog;
|
||||
import nc.vo.so.m30.entity.SaleOrderVO;
|
||||
import nc.vo.so.m30.revise.entity.SaleOrderHistoryVO;
|
||||
|
||||
public class ReviseSaveSaleOrderAction {
|
||||
public static final String BODY_METANAME = "so.orderhistory_b";
|
||||
public static final String HEAD_METANAME = "so.orderhistory";
|
||||
public static final String TABLE_HISTORY = "so_orderhistory";
|
||||
public static final String TABLE_HISTORY_B = "so_orderhistory_b";
|
||||
|
||||
public ReviseSaveSaleOrderAction() {
|
||||
}
|
||||
|
||||
public SaleOrderHistoryVO[] reviseSave(SaleOrderHistoryVO[] bills) throws BusinessException {
|
||||
TimeLog.logStart();
|
||||
BillTransferTool<SaleOrderHistoryVO> transferTool = new BillTransferTool(bills);
|
||||
SaleOrderHistoryVO[] fullbills = (SaleOrderHistoryVO[])transferTool.getClientFullInfoBill();
|
||||
TimeLog.info("补全前台VO、获得修改前VO");
|
||||
VOCheckFor30R vocheck = new VOCheckFor30R();
|
||||
SaleOrderHistoryVO[] originBills = vocheck.voCheckAndQueryOriginForRevise(bills);
|
||||
CompareAroundProcesser<SaleOrderVO> compareProcesser = new CompareAroundProcesser(Action30PlugInPoint.ReviseSaveAction);
|
||||
this.addBeforeRule(compareProcesser);
|
||||
TimeLog.logStart();
|
||||
compareProcesser.before(fullbills, originBills);
|
||||
TimeLog.info("调用修订保存前操作插入点");
|
||||
SaveReviseSaleOrderBP updateBP = new SaveReviseSaleOrderBP();
|
||||
SaleOrderHistoryVO[] ret = updateBP.update(fullbills, originBills);
|
||||
TimeLog.logStart();
|
||||
this.addAfterRule(compareProcesser);
|
||||
compareProcesser.after(ret, fullbills);
|
||||
TimeLog.info("调用修订保存后操作插入点");
|
||||
TimeLog.logStart();
|
||||
ret = (SaleOrderHistoryVO[])transferTool.getBillForToClient(ret);
|
||||
TimeLog.info("组织返回值,返回轻量级VO");
|
||||
TimeLog.logStart();
|
||||
TimeLog.info("业务日志");
|
||||
return ret;
|
||||
}
|
||||
|
||||
private void addBeforeRule(CompareAroundProcesser<SaleOrderVO> compareProcesser) {
|
||||
IRule<SaleOrderVO> rule = new FillupDataRule();
|
||||
compareProcesser.addBeforeRule(rule);
|
||||
IRule<SaleOrderVO> var4 = new SaleOrderReviseCheckRule();
|
||||
compareProcesser.addBeforeRule(var4);
|
||||
IRule<SaleOrderVO> var5 = new SaleOrderCheckNumAndMnyRule();
|
||||
compareProcesser.addBeforeRule(var5);
|
||||
IRule<SaleOrderVO> var6 = new OffsetCheckRule();
|
||||
compareProcesser.addBeforeRule(var6);
|
||||
ICompareRule<SaleOrderVO> comparerule = new ReviseFeatureCheckRule();
|
||||
compareProcesser.addBeforeRule(comparerule);
|
||||
IRule<SaleOrderVO> var7 = new CfgMatchSaveRule();
|
||||
compareProcesser.addBeforeRule(var7);
|
||||
IRule<SaleOrderVO> var8 = new CfgMatchCheckRule();
|
||||
compareProcesser.addBeforeRule(var8);
|
||||
IRule<SaleOrderVO> var9 = new FillupFretexchangeRule();
|
||||
compareProcesser.addBeforeRule(var9);
|
||||
IRule<SaleOrderVO> var10 = new RenovateARByHidsBeginRule(M30EngrossAction.M30ReVise);
|
||||
compareProcesser.addBeforeRule(var10);
|
||||
IRule<SaleOrderVO> var11 = new RmNtotalorigmnyCheckRule();
|
||||
compareProcesser.addBeforeRule(var11);
|
||||
IRule<SaleOrderVO> var12 = new SHCrossRuleValidate();
|
||||
compareProcesser.addBeforeRule(var12);
|
||||
}
|
||||
|
||||
private void addAfterRule(CompareAroundProcesser<SaleOrderVO> compareProcesser) {
|
||||
IRule<SaleOrderVO> rule = null;
|
||||
IRule<SaleOrderVO> var3 = new RenovateARByHidsEndRule(M30EngrossAction.M30ReVise);
|
||||
compareProcesser.addAfterRule(var3);
|
||||
IRule<SaleOrderVO> var4 = new CheckNumPriceMnyRule();
|
||||
compareProcesser.addAfterRule(var4);
|
||||
IRule<SaleOrderVO> updatePmoAndFinProdInRule = new UpdatePmoAndFinProdInRule();
|
||||
compareProcesser.addAfterRule(updatePmoAndFinProdInRule);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue