销售订单保存时回写售价 + 开票云回写销售发票级下游单据逻辑
This commit is contained in:
		
							parent
							
								
									290b081039
								
							
						
					
					
						commit
						fed80fd269
					
				|  | @ -0,0 +1,223 @@ | |||
| /*     */ package nc.bs.so.m30.maintain; | ||||
| /*     */ | ||||
| /*     */ import nc.bs.scmpub.rule.CrossRuleValidateRule; | ||||
|           import nc.bs.so.m30.maintain.rule.insert.JudgeMaterialPriceInsertRule; | ||||
| /*     */ import nc.bs.so.m30.maintain.rule.insert.RewriteBillInsertRule; | ||||
| /*     */ import nc.bs.so.m30.maintain.rule.insert.RewritePromotePriceInsertRule; | ||||
| /*     */ import nc.bs.so.m30.maintain.rule.insert.WritebackMaterialPriceRule; | ||||
| import nc.bs.so.m30.plugin.BP30PlugInPoint; | ||||
| /*     */ import nc.bs.so.m30.rule.atp.SaleOrderVOATPAfterRule; | ||||
| /*     */ import nc.bs.so.m30.rule.atp.SaleOrderVOATPBeforeRule; | ||||
| /*     */ import nc.bs.so.m30.rule.billcode.AddNewBillCodeRule; | ||||
| /*     */ import nc.bs.so.m30.rule.billcode.CheckUniqueBillCodeRule; | ||||
| /*     */ import nc.bs.so.m30.rule.businessinfo.SaveTransferMsgRule; | ||||
| /*     */ import nc.bs.so.m30.rule.credit.RenovateARByHidsBeginRule; | ||||
| /*     */ import nc.bs.so.m30.rule.credit.RenovateARByHidsEndRule; | ||||
| /*     */ import nc.bs.so.m30.rule.feature.FeatureSelectSaveRule; | ||||
| /*     */ import nc.bs.so.m30.rule.m35.ArsubOffsetBeforeSaveRule; | ||||
| /*     */ import nc.bs.so.m30.rule.m35.LrgCashMarCheckRule; | ||||
| /*     */ import nc.bs.so.m30.rule.maintaincheck.CheckDateRule; | ||||
| /*     */ import nc.bs.so.m30.rule.maintaincheck.CheckLrgTotalMoney; | ||||
| /*     */ import nc.bs.so.m30.rule.maintaincheck.CheckNumPriceMnyRule; | ||||
| /*     */ import nc.bs.so.m30.rule.maintaincheck.CheckSaveBillRule; | ||||
| /*     */ import nc.bs.so.m30.rule.maintaincheck.CheckSettleOrgRepeat; | ||||
| /*     */ import nc.bs.so.m30.rule.maintainprocess.FillupFretexchangeRule; | ||||
| /*     */ import nc.bs.so.m30.rule.maintainprocess.FillupRedundanceDataRule; | ||||
| /*     */ import nc.bs.so.m30.rule.maintainprocess.InsertSoBalanceWhenAddNewRule; | ||||
| /*     */ import nc.bs.so.m30.rule.maintainprocess.SourceToSaleOrderMsgRule; | ||||
| /*     */ import nc.bs.so.m30.rule.maintainprocess.ThisGatheringRule; | ||||
| /*     */ import nc.bs.so.m30.rule.reserve.AutoReserveRule; | ||||
| /*     */ import nc.bs.so.m30.rule.rewrite.price.RewritePriceFormRule; | ||||
| /*     */ import nc.bs.so.pub.rule.FillBillTailInfoRuleForIns; | ||||
| /*     */ import nc.impl.pubapp.bd.userdef.UserDefSaveRule; | ||||
| /*     */ import nc.impl.pubapp.pattern.data.bill.BillInsert; | ||||
| /*     */ import nc.impl.pubapp.pattern.rule.IRule; | ||||
| /*     */ import nc.impl.pubapp.pattern.rule.processer.AroundProcesser; | ||||
| /*     */ import nc.itf.scmpub.reference.uap.group.SysInitGroupQuery; | ||||
| /*     */ import nc.vo.credit.engrossmaintain.pub.action.M30EngrossAction; | ||||
| /*     */ import nc.vo.pubapp.pattern.log.TimeLog; | ||||
| /*     */ import nc.vo.pubapp.util.SetAddAuditInfoRule; | ||||
| /*     */ import nc.vo.scmpub.rule.SaleOrgEnableCheckRule; | ||||
| /*     */ import nc.vo.so.m30.entity.SaleOrderBVO; | ||||
| /*     */ import nc.vo.so.m30.entity.SaleOrderHVO; | ||||
| /*     */ import nc.vo.so.m30.entity.SaleOrderVO; | ||||
| /*     */ import nccloud.bs.so.mobile.saleorder.operation.rule.MobAfterSaveMessageRule; | ||||
| /*     */ | ||||
| /*     */ | ||||
| /*     */ | ||||
| /*     */ | ||||
| /*     */ | ||||
| /*     */ | ||||
| /*     */ | ||||
| /*     */ | ||||
| /*     */ | ||||
| /*     */ | ||||
| /*     */ | ||||
| /*     */ public class InsertSaleOrderBP { | ||||
|     /*     */    public SaleOrderVO[] insert(SaleOrderVO[] bills) { | ||||
|         /*  56 */       AroundProcesser<SaleOrderVO> processer = new AroundProcesser(BP30PlugInPoint.InsertBP); | ||||
|         /*     */ | ||||
|         /*     */ | ||||
|         /*     */ | ||||
|         /*  60 */       TimeLog.logStart(); | ||||
|         /*  61 */       this.addBeforeRule(processer); | ||||
|         /*  62 */       processer.before(bills); | ||||
|         /*  63 */       TimeLog.info("调用新增保存前BP插入点"); | ||||
|         /*     */ | ||||
|         /*  65 */       TimeLog.logStart(); | ||||
|         /*  66 */       BillInsert<SaleOrderVO> bo = new BillInsert(); | ||||
|         /*  67 */       SaleOrderVO[] vos = (SaleOrderVO[])bo.insert(bills); | ||||
|         /*  68 */       TimeLog.info("保存单据到数据库"); | ||||
|         /*     */ | ||||
|         /*     */ | ||||
|         /*  71 */       TimeLog.logStart(); | ||||
|         /*  72 */       this.addAfterRule(processer); | ||||
|         /*  73 */       processer.after(vos); | ||||
|         /*  74 */       TimeLog.info("调用新增保存后BP插入点"); | ||||
|         /*     */ | ||||
|         /*  76 */       return vos; | ||||
|         /*     */    } | ||||
|     /*     */ | ||||
|     /*     */    private void addAfterRule(AroundProcesser<SaleOrderVO> processer) { | ||||
|         /*  80 */       IRule<SaleOrderVO> rule = null; | ||||
|         /*     */ | ||||
|         /*     */ | ||||
|         /*  83 */       rule = new InsertSoBalanceWhenAddNewRule(); | ||||
|         /*  84 */       processer.addAfterRule(rule); | ||||
|         /*     */ | ||||
|         /*     */ | ||||
|         /*  87 */       rule = new RenovateARByHidsEndRule(M30EngrossAction.M30Insert); | ||||
|         /*  88 */       processer.addAfterRule(rule); | ||||
|         /*     */ | ||||
|         /*     */ | ||||
|         /*  91 */       rule = new ThisGatheringRule(); | ||||
|         /*  92 */       processer.addAfterRule(rule); | ||||
|         /*     */ | ||||
|         /*     */ | ||||
|         /*  95 */        rule = new CheckUniqueBillCodeRule(); | ||||
|         /*  96 */       processer.addAfterRule(rule); | ||||
|         /*     */ | ||||
|         /*     */ | ||||
|         /*     */ | ||||
|         /*     */ | ||||
|         /*     */ | ||||
|         /* 102 */       rule = new RewriteBillInsertRule(); | ||||
|         /* 103 */       processer.addAfterRule(rule); | ||||
|         /*     */ | ||||
|         /*     */ | ||||
|         /* 106 */        rule = new SaveTransferMsgRule(); | ||||
|         /* 107 */       processer.addAfterRule(rule); | ||||
|         /*     */ | ||||
|         /*     */ | ||||
|         /* 110 */        rule = new RewritePriceFormRule(); | ||||
|         /* 111 */       processer.addAfterRule(rule); | ||||
|         /*     */ | ||||
|         /*     */ | ||||
|         /* 114 */       rule = new SourceToSaleOrderMsgRule(); | ||||
|         /* 115 */       processer.addAfterRule(rule); | ||||
| 
 | ||||
|                         rule = new WritebackMaterialPriceRule(); | ||||
|                         processer.addAfterRule(rule); | ||||
|         /*     */ | ||||
|         /* 117 */       boolean icEnable = SysInitGroupQuery.isICEnabled(); | ||||
|         /* 118 */       if (icEnable) { | ||||
|             /*     */ | ||||
|             /* 120 */          rule = new SaleOrderVOATPAfterRule(); | ||||
|             /* 121 */          processer.addAfterRule(rule); | ||||
|             /*     */ | ||||
|             /* 123 */          rule = new AutoReserveRule(); | ||||
|             /* 124 */          processer.addAfterRule(rule); | ||||
|             /*     */ | ||||
|             /*     */ | ||||
|             /*     */       } | ||||
|         /*     */ | ||||
|         /* 129 */       if (SysInitGroupQuery.isPRICEEnabled()) { | ||||
|             /* 130 */         rule = new RewritePromotePriceInsertRule(); | ||||
|             /* 131 */          processer.addAfterRule(rule); | ||||
|             /*     */ | ||||
|             /*     */ | ||||
|             /*     */       } | ||||
|         /*     */ | ||||
|         /* 136 */       processer.addAfterRule(new MobAfterSaveMessageRule()); | ||||
|         /* 137 */    } | ||||
|     /*     */ | ||||
|     /*     */ | ||||
|     /*     */ | ||||
|     /*     */    private void addBeforeRule(AroundProcesser<SaleOrderVO> processer) { | ||||
|         /* 142 */       IRule<SaleOrderVO> rule = new SaleOrgEnableCheckRule(); | ||||
|         /* 143 */       processer.addBeforeRule(rule); | ||||
|         /*     */ | ||||
|         /*     */ | ||||
|         /* 146 */        rule = new FillupRedundanceDataRule(); | ||||
|         /* 147 */       processer.addBeforeRule(rule); | ||||
|         /*     */ | ||||
|         /*     */ | ||||
|         /* 150 */        rule = new FillupFretexchangeRule(); | ||||
|         /* 151 */       processer.addBeforeRule(rule); | ||||
|         /*     */ | ||||
|         /*     */ | ||||
|         /* 154 */        rule = new AddNewBillCodeRule(); | ||||
|         /* 155 */       processer.addBeforeRule(rule); | ||||
|         /*     */ | ||||
|         /*     */ | ||||
|         /* 158 */        rule = new CheckNumPriceMnyRule(); | ||||
|         /* 159 */       processer.addBeforeRule(rule); | ||||
|         /*     */ | ||||
|         /* 161 */        rule = new CheckSettleOrgRepeat(); | ||||
|         /* 162 */       processer.addBeforeRule(rule); | ||||
|         /*     */ | ||||
|         /* 164 */       rule = new CheckDateRule(); | ||||
|         /* 165 */       processer.addBeforeRule(rule); | ||||
|         /*     */ | ||||
|         /* 167 */        rule = new CheckSaveBillRule(); | ||||
|         /* 168 */       processer.addBeforeRule(rule); | ||||
|         /*     */ | ||||
|         /*     */ | ||||
|         /* 171 */       rule = new FillBillTailInfoRuleForIns(); | ||||
|         /* 172 */       processer.addBeforeRule(rule); | ||||
|         /*     */ | ||||
|         /*     */ | ||||
|         /* 175 */       rule = new SetAddAuditInfoRule(); | ||||
|         /* 176 */       processer.addBeforeRule(rule); | ||||
|         /*     */ | ||||
|         /*     */ | ||||
|         /* 179 */        rule = new RenovateARByHidsBeginRule(M30EngrossAction.M30Insert); | ||||
|         /* 180 */       processer.addBeforeRule(rule); | ||||
|         /*     */ | ||||
|         /* 182 */       boolean icEnable = SysInitGroupQuery.isICEnabled(); | ||||
|         /* 183 */       if (icEnable) { | ||||
|             /*     */ | ||||
|             /* 185 */           rule = new SaleOrderVOATPBeforeRule(); | ||||
|             /* 186 */          processer.addBeforeRule(rule); | ||||
|             /*     */ | ||||
|             /*     */       } | ||||
|         /*     */ | ||||
|         /* 190 */        rule = new LrgCashMarCheckRule(); | ||||
|         /* 191 */       processer.addBeforeRule(rule); | ||||
|         /*     */ | ||||
|         /*     */ | ||||
|         /* 194 */       rule = new ArsubOffsetBeforeSaveRule(); | ||||
|         /* 195 */       processer.addBeforeRule(rule); | ||||
|         /*     */ | ||||
|         /*     */ | ||||
|         /* 198 */        rule = new CheckLrgTotalMoney(); | ||||
|         /* 199 */       processer.addBeforeRule(rule); | ||||
|         /*     */ | ||||
|         /*     */ | ||||
|         /* 202 */       rule = new FeatureSelectSaveRule(); | ||||
|         /* 203 */       processer.addBeforeRule(rule); | ||||
|         /*     */ | ||||
|         /*     */ | ||||
|         /* 206 */        rule = new UserDefSaveRule(new Class[]{SaleOrderHVO.class, SaleOrderBVO.class}); | ||||
|         /*     */ | ||||
|         /*     */ | ||||
|         /* 209 */       processer.addBeforeRule(rule); | ||||
|         /*     */ | ||||
|         /*     */ | ||||
|         /* 212 */      rule = new CrossRuleValidateRule(); | ||||
|         /* 213 */       processer.addBeforeRule(rule); | ||||
| 
 | ||||
|         rule = new JudgeMaterialPriceInsertRule(); | ||||
|         processer.addBeforeRule(rule); | ||||
|         /* 214 */    } | ||||
|     /*     */ } | ||||
|  | @ -0,0 +1,229 @@ | |||
| /*     */ package nc.bs.so.m30.maintain; | ||||
| /*     */  | ||||
| /*     */ import nc.bs.scmpub.rule.CrossRuleValidateRule; | ||||
| /*     */ import nc.bs.scmpub.rule.VOSagaFrozenValidateRule; | ||||
| import nc.bs.so.m30.maintain.rule.insert.JudgeMaterialPriceInsertRule; | ||||
| /*     */ import nc.bs.so.m30.maintain.rule.insert.WritebackMaterialPriceRule; | ||||
| import nc.bs.so.m30.maintain.rule.update.RewriteBillUpdateRule; | ||||
| /*     */ import nc.bs.so.m30.maintain.rule.update.RewritePromotePriceUpdateRule; | ||||
| /*     */ import nc.bs.so.m30.plugin.BP30PlugInPoint; | ||||
| /*     */ import nc.bs.so.m30.rule.atp.SaleOrderVOATPAfterRule; | ||||
| /*     */ import nc.bs.so.m30.rule.atp.SaleOrderVOATPBeforeRule; | ||||
| /*     */ import nc.bs.so.m30.rule.billcode.CheckUniqueBillCodeRule; | ||||
| /*     */ import nc.bs.so.m30.rule.billcode.UpdateBillCodeRule; | ||||
| /*     */ import nc.bs.so.m30.rule.businessinfo.SaveTransferMsgRule; | ||||
| /*     */ import nc.bs.so.m30.rule.credit.RenovateARByHidsBeginRule; | ||||
| /*     */ import nc.bs.so.m30.rule.credit.RenovateARByHidsEndRule; | ||||
| /*     */ import nc.bs.so.m30.rule.feature.ClearMffileSRCRule; | ||||
| /*     */ import nc.bs.so.m30.rule.feature.FeatureSelectSaveRule; | ||||
| /*     */ import nc.bs.so.m30.rule.feature.RestMffileSRCRule; | ||||
| /*     */ import nc.bs.so.m30.rule.m35.ArsubOffsetBeforeSaveRule; | ||||
| /*     */ import nc.bs.so.m30.rule.m35.LrgCashMarCheckRule; | ||||
| /*     */ import nc.bs.so.m30.rule.maintaincheck.CheckCanUpdateWhenAuditing; | ||||
| /*     */ import nc.bs.so.m30.rule.maintaincheck.CheckDateRule; | ||||
| /*     */ import nc.bs.so.m30.rule.maintaincheck.CheckLrgTotalMoney; | ||||
| /*     */ import nc.bs.so.m30.rule.maintaincheck.CheckNumPriceMnyRule; | ||||
| /*     */ import nc.bs.so.m30.rule.maintaincheck.CheckSaveBillRule; | ||||
| /*     */ import nc.bs.so.m30.rule.maintaincheck.CheckSettleOrgRepeat; | ||||
| /*     */ import nc.bs.so.m30.rule.maintainprocess.FillupFretexchangeRule; | ||||
| /*     */ import nc.bs.so.m30.rule.maintainprocess.FillupRedundanceDataRule; | ||||
| /*     */ import nc.bs.so.m30.rule.maintainprocess.ThisGatheringRule; | ||||
| /*     */ import nc.bs.so.m30.rule.maintainprocess.UpdateSoBalanceWhenUpdateM30HeadRule; | ||||
| /*     */ import nc.bs.so.m30.rule.maintainprocess.UpdateSoBalanceWhenUpdateRule; | ||||
| /*     */ import nc.bs.so.m30.rule.reserve.AutoReserveRule; | ||||
| /*     */ import nc.bs.so.m30.rule.reserve.ReserveUpdateRule; | ||||
| /*     */ import nc.bs.so.m30.rule.rewrite.price.RewritePriceFormRule; | ||||
| /*     */ import nc.bs.so.pub.rule.CheckApproverRule; | ||||
| /*     */ import nc.impl.pubapp.pattern.data.bill.BillUpdate; | ||||
| /*     */ import nc.impl.pubapp.pattern.rule.ICompareRule; | ||||
| /*     */ import nc.impl.pubapp.pattern.rule.IRule; | ||||
| /*     */ import nc.impl.pubapp.pattern.rule.processer.CompareAroundProcesser; | ||||
| /*     */ import nc.itf.scmpub.reference.uap.group.SysInitGroupQuery; | ||||
| /*     */ import nc.vo.credit.engrossmaintain.pub.action.M30EngrossAction; | ||||
| /*     */ import nc.vo.pubapp.pattern.log.TimeLog; | ||||
| /*     */ import nc.vo.pubapp.util.SetUpdateAuditInfoRule; | ||||
| /*     */ import nc.vo.so.m30.entity.SaleOrderVO; | ||||
| /*     */  | ||||
| /*     */  | ||||
| /*     */  | ||||
| /*     */  | ||||
| /*     */  | ||||
| /*     */  | ||||
| /*     */  | ||||
| /*     */ public class UpdateSaleOrderBP { | ||||
| /*     */    public SaleOrderVO[] update(SaleOrderVO[] bills, SaleOrderVO[] originBills) { | ||||
| /*  53 */       CompareAroundProcesser<SaleOrderVO> processer = new CompareAroundProcesser(BP30PlugInPoint.UpdateBP); | ||||
| /*     */  | ||||
| /*     */  | ||||
| /*     */  | ||||
| /*  57 */       TimeLog.logStart(); | ||||
| /*  58 */       this.addBeforeRule(processer); | ||||
| /*  59 */       processer.before(bills, originBills); | ||||
| /*     */  | ||||
| /*  61 */       TimeLog.info("???????????BP?????"); | ||||
| /*     */  | ||||
| /*  63 */       TimeLog.logStart(); | ||||
| /*  64 */       BillUpdate<SaleOrderVO> bo = new BillUpdate(); | ||||
| /*  65 */       SaleOrderVO[] vos = (SaleOrderVO[])bo.update(bills, originBills); | ||||
| /*     */  | ||||
| /*  67 */       TimeLog.info("????????????????"); | ||||
| /*     */  | ||||
| /*     */  | ||||
| /*  70 */       TimeLog.logStart(); | ||||
| /*  71 */       this.addAfterRule(processer); | ||||
| /*  72 */       processer.after(vos, originBills); | ||||
| /*     */  | ||||
| /*  74 */       TimeLog.info("???????????BP?????"); | ||||
| /*     */  | ||||
| /*  76 */       return vos; | ||||
| /*     */    } | ||||
| /*     */  | ||||
| /*     */    private void addAfterRule(CompareAroundProcesser<SaleOrderVO> processer) { | ||||
| /*  80 */       IRule<SaleOrderVO> rule = null; | ||||
| /*     */  | ||||
| /*     */  | ||||
| /*  83 */       rule = new UpdateSoBalanceWhenUpdateRule(); | ||||
| /*  84 */       processer.addAfterRule(rule); | ||||
| /*     */  | ||||
| /*     */  | ||||
| /*  87 */       rule = new RenovateARByHidsEndRule(M30EngrossAction.M30Edit); | ||||
| /*  88 */       processer.addAfterRule(rule); | ||||
| /*     */  | ||||
| /*     */  | ||||
| /*  91 */       rule = new ThisGatheringRule(); | ||||
| /*  92 */       processer.addAfterRule(rule); | ||||
| /*     */  | ||||
| /*     */  | ||||
| /*  95 */       rule = new CheckUniqueBillCodeRule(); | ||||
| /*  96 */       processer.addAfterRule(rule); | ||||
| /*     */  | ||||
| /*     */  | ||||
| /*  99 */       ICompareRule<SaleOrderVO> compareRule = new RewriteBillUpdateRule(); | ||||
| /* 100 */       processer.addAfterRule(compareRule); | ||||
| /*     */  | ||||
| /*     */  | ||||
| /* 103 */       rule = new SaveTransferMsgRule(); | ||||
| /* 104 */       processer.addAfterRule(rule); | ||||
| /*     */  | ||||
| /*     */  | ||||
| /* 107 */       rule = new RewritePriceFormRule(); | ||||
| /* 108 */       processer.addAfterRule(rule); | ||||
| /*     */  | ||||
| /*     */  | ||||
| /* 111 */       rule = new UpdateSoBalanceWhenUpdateM30HeadRule(); | ||||
| /* 112 */       processer.addAfterRule(rule); | ||||
| 
 | ||||
| 				rule = new WritebackMaterialPriceRule(); | ||||
| 				processer.addAfterRule(rule); | ||||
| /*     */  | ||||
| /* 114 */       boolean icEnable = SysInitGroupQuery.isICEnabled(); | ||||
| /* 115 */       if (icEnable) { | ||||
| /*     */  | ||||
| /* 117 */          rule = new SaleOrderVOATPAfterRule(); | ||||
| /* 118 */          processer.addAfterRule(rule); | ||||
| /*     */  | ||||
| /* 120 */          rule = new ReserveUpdateRule(); | ||||
| /* 121 */          processer.addAfterRule(rule); | ||||
| /*     */  | ||||
| /* 123 */          rule = new AutoReserveRule(); | ||||
| /* 124 */          processer.addAfterRule(rule); | ||||
| /*     */  | ||||
| /*     */       } | ||||
| /*     */  | ||||
| /* 128 */       if (SysInitGroupQuery.isPRICEEnabled()) { | ||||
| /* 129 */          compareRule = new RewritePromotePriceUpdateRule(); | ||||
| /* 130 */          processer.addAfterRule(compareRule); | ||||
| /*     */  | ||||
| /*     */       } | ||||
| /*     */  | ||||
| /* 134 */       compareRule = new RestMffileSRCRule(); | ||||
| /* 135 */       processer.addAfterRule(compareRule); | ||||
| /* 136 */    } | ||||
| /*     */  | ||||
| /*     */    private void addBeforeRule(CompareAroundProcesser<SaleOrderVO> processer) { | ||||
| /* 139 */       IRule<SaleOrderVO> rule = null; | ||||
| /*     */  | ||||
| /*     */  | ||||
| /* 142 */       rule = new VOSagaFrozenValidateRule(); | ||||
| /* 143 */       processer.addBeforeRule(rule); | ||||
| /*     */  | ||||
| /*     */  | ||||
| /* 146 */       rule = new CheckCanUpdateWhenAuditing(); | ||||
| /* 147 */       processer.addBeforeRule(rule); | ||||
| /*     */  | ||||
| /*     */  | ||||
| /*     */  | ||||
| /* 151 */       rule = new CheckApproverRule(); | ||||
| /* 152 */       processer.addBeforeRule(rule); | ||||
| /*     */  | ||||
| /*     */  | ||||
| /*     */  | ||||
| /*     */  | ||||
| /* 157 */       rule = new FillupRedundanceDataRule(); | ||||
| /* 158 */       processer.addBeforeRule(rule); | ||||
| /*     */  | ||||
| /*     */  | ||||
| /* 161 */       rule = new FillupFretexchangeRule(); | ||||
| /* 162 */       processer.addBeforeRule(rule); | ||||
| /*     */  | ||||
| /*     */  | ||||
| /* 165 */       rule = new SetUpdateAuditInfoRule(); | ||||
| /* 166 */       processer.addBeforeRule(rule); | ||||
| /*     */  | ||||
| /*     */  | ||||
| /* 169 */       ICompareRule<SaleOrderVO> compareRule = new UpdateBillCodeRule(); | ||||
| /* 170 */       processer.addBeforeRule(compareRule); | ||||
| /*     */  | ||||
| /*     */  | ||||
| /* 173 */       rule = new CheckNumPriceMnyRule(); | ||||
| /* 174 */       processer.addBeforeRule(rule); | ||||
| /*     */  | ||||
| /* 176 */       rule = new CheckSettleOrgRepeat(); | ||||
| /* 177 */       processer.addBeforeRule(rule); | ||||
| /*     */  | ||||
| /* 179 */       rule = new CheckDateRule(); | ||||
| /* 180 */       processer.addBeforeRule(rule); | ||||
| /*     */  | ||||
| /*     */  | ||||
| /* 183 */       rule = new CheckSaveBillRule(); | ||||
| /* 184 */       processer.addBeforeRule(rule); | ||||
| /*     */  | ||||
| /*     */  | ||||
| /* 187 */       rule = new RenovateARByHidsBeginRule(M30EngrossAction.M30Edit); | ||||
| /* 188 */       processer.addBeforeRule(rule); | ||||
| /*     */  | ||||
| /* 190 */       boolean icEnable = SysInitGroupQuery.isICEnabled(); | ||||
| /* 191 */       if (icEnable) { | ||||
| /*     */  | ||||
| /* 193 */          rule = new SaleOrderVOATPBeforeRule(); | ||||
| /* 194 */          processer.addBeforeRule(rule); | ||||
| /*     */  | ||||
| /*     */       } | ||||
| /*     */  | ||||
| /* 198 */       rule = new LrgCashMarCheckRule(); | ||||
| /* 199 */       processer.addBeforeRule(rule); | ||||
| /*     */  | ||||
| /*     */  | ||||
| /* 202 */       rule = new ArsubOffsetBeforeSaveRule(); | ||||
| /* 203 */       processer.addBeforeRule(rule); | ||||
| /*     */  | ||||
| /*     */  | ||||
| /* 206 */       rule = new CheckLrgTotalMoney(); | ||||
| /* 207 */       processer.addBeforeRule(rule); | ||||
| /*     */  | ||||
| /*     */  | ||||
| /* 210 */       rule = new FeatureSelectSaveRule(); | ||||
| /* 211 */       processer.addBeforeRule(rule); | ||||
| /*     */  | ||||
| /*     */  | ||||
| /* 214 */       rule = new CrossRuleValidateRule(); | ||||
| /* 215 */       processer.addBeforeRule(rule); | ||||
| /*     */  | ||||
| /*     */  | ||||
| /* 218 */       compareRule = new ClearMffileSRCRule(); | ||||
| /* 219 */       processer.addBeforeRule(compareRule); | ||||
| /*     */ 		 | ||||
| 				rule = new JudgeMaterialPriceInsertRule(); | ||||
| 				processer.addBeforeRule(rule); | ||||
| /* 221 */    } | ||||
| /*     */ } | ||||
|  | @ -0,0 +1,59 @@ | |||
| package nc.bs.so.m30.maintain.rule.insert; | ||||
| 
 | ||||
| import nc.bs.framework.common.NCLocator; | ||||
| import nc.impl.pubapp.pattern.rule.IRule; | ||||
| import nc.itf.bd.material.sale.IMaterialSaleService; | ||||
| import nc.md.persist.framework.IMDPersistenceQueryService; | ||||
| import nc.vo.bd.material.sale.MaterialSaleVO; | ||||
| import nc.vo.pub.BusinessException; | ||||
| 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; | ||||
| 
 | ||||
| public class WritebackMaterialPriceRule implements IRule<SaleOrderVO>{ | ||||
| 
 | ||||
| 
 | ||||
|     @Override | ||||
|     public void process(SaleOrderVO[] vos) { | ||||
|         // TODO Auto-generated method stub | ||||
|         List<SaleOrderBVO> list = new ArrayList<SaleOrderBVO>(); | ||||
|         for (SaleOrderVO vo : vos) { | ||||
|             //根据销售订单子表的物料编码和销售组织查询物料主表 | ||||
|             SaleOrderBVO[] saleOrderitems =  vo.getChildrenVO(); | ||||
|             //循环销售订单子表 | ||||
|             for(int i = 0; i < saleOrderitems.length; i++) { | ||||
|                 SaleOrderBVO item = saleOrderitems[i]; | ||||
|                 //取销售订单子表的物料编码和销售组织 | ||||
|                 String cmaterialvid = item.getCmaterialvid(); //物料主键 | ||||
|                 String pk_org = item.getPk_org(); //销售组织 | ||||
|                 UFDouble nqtorigprice = item.getNqtorigprice(); //无税单价 | ||||
|                 String whereSql = "nvl(bd_material.dr,0) = 0 and  bd_material.code = '" + cmaterialvid + "' and bd_material.pk_org = '" + pk_org + "'"; | ||||
| //				IMDPersistenceQueryService aggvoQueryService = ServiceLocator.find(IMDPersistenceQueryService.class); | ||||
|                 IMDPersistenceQueryService aggvoQueryService = NCLocator.getInstance().lookup(IMDPersistenceQueryService.class); | ||||
|                 // 条件查询得到物料MaterialSaleVO | ||||
|                 try { | ||||
|                     whereSql = "nvl(bd_materialsale.dr,0) = 0 and bd_materialsale.pk_material = '" + cmaterialvid + "' and bd_materialsale.pk_org = '" + pk_org + "'"; | ||||
|                     @SuppressWarnings("unchecked") | ||||
|                     ArrayList<MaterialSaleVO> materialSaleVOs = (ArrayList<MaterialSaleVO>)aggvoQueryService.queryBillOfVOByCond(MaterialSaleVO.class, whereSql, true, false); | ||||
|                     if(materialSaleVOs.size() <= 0) { | ||||
|                         continue; | ||||
|                     } | ||||
|                     for(MaterialSaleVO materialSaleVO : materialSaleVOs) { | ||||
|                         materialSaleVO.setResaleprice(nqtorigprice); | ||||
|                         //实体更新物料销售表 | ||||
| //							IMaterialSaleService iMaterialSaleService = ServiceLocator.find(IMaterialSaleService.class); | ||||
|                         IMaterialSaleService iMaterialSaleService = NCLocator.getInstance().lookup(IMaterialSaleService.class); | ||||
|                         iMaterialSaleService.updateMaterialSaleVO(materialSaleVO); | ||||
|                     } | ||||
|                 }catch(BusinessException e) { | ||||
|                     // TODO Auto-generated catch block | ||||
|                     e.printStackTrace(); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| } | ||||
|  | @ -0,0 +1,212 @@ | |||
| package nc.bs.uapbd.task; | ||||
| 
 | ||||
| import java.io.BufferedReader; | ||||
| import java.io.IOException; | ||||
| import java.io.InputStream; | ||||
| import java.io.InputStreamReader; | ||||
| import java.io.OutputStream; | ||||
| import java.net.URL; | ||||
| import java.net.URLEncoder; | ||||
| import java.nio.charset.StandardCharsets; | ||||
| import java.util.ArrayList; | ||||
| import java.util.Base64; | ||||
| import java.util.HashMap; | ||||
| import java.util.Map; | ||||
| import java.util.TreeMap; | ||||
| 
 | ||||
| import javax.crypto.Mac; | ||||
| import javax.crypto.spec.SecretKeySpec; | ||||
| import javax.net.ssl.HttpsURLConnection; | ||||
| import javax.net.ssl.SSLContext; | ||||
| import javax.net.ssl.TrustManager; | ||||
| 
 | ||||
| import org.apache.http.client.config.CookieSpecs; | ||||
| import org.apache.http.client.config.RequestConfig; | ||||
| import org.apache.http.client.methods.HttpGet; | ||||
| import org.apache.http.client.methods.HttpPost; | ||||
| import org.apache.http.entity.StringEntity; | ||||
| import org.apache.http.impl.client.CloseableHttpClient; | ||||
| import org.apache.http.impl.client.HttpClients; | ||||
| import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; | ||||
| import org.apache.http.util.EntityUtils; | ||||
| 
 | ||||
| import com.alibaba.fastjson.JSONObject; | ||||
| import com.google.gson.Gson; | ||||
| import com.yonyou.cloud.utils.StringUtils; | ||||
| 
 | ||||
| import nc.bs.dao.BaseDAO; | ||||
| import nc.bs.pub.pa.PreAlertObject; | ||||
| import nc.bs.pub.taskcenter.BgWorkingContext; | ||||
| import nc.bs.pub.taskcenter.IBackgroundWorkPlugin; | ||||
| import nc.bs.trade.business.HYSuperDMO; | ||||
| import nc.bs.uapbd.util.IgnoreSslUtil; | ||||
| import nc.jdbc.framework.processor.MapListProcessor; | ||||
| import nc.vo.pub.BusinessException; | ||||
| import nc.vo.sscivm.ivsale.IVApplicationHeadVO; | ||||
| import nc.vo.sscivm.ivsale.IVApplogVO; | ||||
| 
 | ||||
| import javax.net.ssl.HttpsURLConnection; | ||||
| 
 | ||||
| public class InvoiceTaskPlugin implements IBackgroundWorkPlugin{ | ||||
| 
 | ||||
|     @Override | ||||
|     public PreAlertObject executeTask(BgWorkingContext arg0) throws BusinessException { | ||||
|         // TODO Auto-generated method stub | ||||
|         try { | ||||
|             BaseDAO dao = new BaseDAO(); | ||||
|             String sql = " SELECT sscivm_invoice.pk_invoice,so_saleinvoice.csaleinvoiceid,so_saleinvoice.vbillcode billcode, sscivm_invoice.fphm, " + | ||||
|                     "sscivm_invoice.Gmfmc, sscivm_invoice.Jshj, sscivm_invoice.viewurl, sscivm_invoice.billno " + | ||||
|                     " FROM sscivm_invoice " + | ||||
|                     " left join sscivm_invoice_relation on sscivm_invoice_relation.PK_INVOICE = sscivm_invoice.pk_invoice " + | ||||
|                     " left join so_saleinvoice on so_saleinvoice.csaleinvoiceid = sscivm_invoice_relation.billid " + | ||||
|                     " left join sscivm_ivapplog on sscivm_ivapplog.fphm = sscivm_invoice.fphm " + | ||||
|                     " where " + | ||||
|                     " sscivm_invoice_relation.billtype = '32' " + | ||||
|                     " and so_saleinvoice.vdef20 <> 'Y' " + | ||||
|                     " and sscivm_invoice.dr = 0 " + | ||||
|                     " and sscivm_ivapplog.kpzt = 2 "; | ||||
| //						 + "         so_saleinvoice.vbillcode = 'SI2024070400000738' "; | ||||
|             ArrayList<HashMap<String, Object>> al = (ArrayList<HashMap<String, Object>>)dao.executeQuery(sql, new MapListProcessor()); | ||||
|             if(al.size() > 0) { | ||||
|                 for(HashMap<String, Object> sscivm_invoice : al) { | ||||
|                     Object pk_invoice = sscivm_invoice.get("pk_invoice"); //bip发票主键 | ||||
|                     Object csaleinvoiceid = sscivm_invoice.get("csaleinvoiceid"); //销售发票id | ||||
|                     Object billcode = sscivm_invoice.get("billcode"); //销售发票编码 | ||||
|                     Object billno = sscivm_invoice.get("billno"); //bip单据编码编码 | ||||
|                     Object fphm = sscivm_invoice.get("fphm"); | ||||
|                     Object Gmfmc = sscivm_invoice.get("Gmfmc"); | ||||
|                     Object Jshj = sscivm_invoice.get("Jshj"); | ||||
|                     Object viewurl = sscivm_invoice.get("viewurl"); | ||||
|                     String ctcode=""; | ||||
|                     HYSuperDMO dmo = new HYSuperDMO(); | ||||
|                     IVApplogVO[] ivApplogVO=(IVApplogVO[]) dmo.queryByWhereClause(IVApplogVO.class, "fphm='"+fphm+"' and dr=0 "); | ||||
|                     if(ivApplogVO!=null&&ivApplogVO.length>0) { | ||||
|                         ivApplogVO[0].getLyid();//开票申请单主键 | ||||
|                         IVApplicationHeadVO ivApplicationHeadVO =(IVApplicationHeadVO) dmo.queryByPrimaryKey(IVApplicationHeadVO.class, ivApplogVO[0].getLyid()); | ||||
|                         ctcode=ivApplicationHeadVO.getDef2();//合同号 | ||||
|                     } | ||||
|                     Object url = ctcode+"_"+Gmfmc+"_"+fphm+"_"+Jshj + ".pdf"; | ||||
|                     /** | ||||
|                      * 回写逻辑: | ||||
|                      * 1.修改发票关联关系单据编码 | ||||
|                      * 2.ERP销售发票回传,根据销售发票id,回写发票号和单据编号 | ||||
|                      * 3.根据销售发票id 回写下游应收单表头表体发票号 | ||||
|                      * 4.查询销售发票下游单据,如果有将下游单据表体字段【来源单据号】更新成新的发票号 | ||||
|                      */ | ||||
|                     String updateRecbillAndItemSql = "BEGIN\n" + | ||||
|                             "UPDATE sscivm_invoice_relation set billno = '" + billno +"' where pk_invoice = '"+ pk_invoice +"' and billid = '"+ csaleinvoiceid +"';\n" + | ||||
|                             "UPDATE so_saleinvoice set vdef20 = 'Y' , vdef13 = '" + fphm + "', vbillcode = '" + billno +"  where csaleinvoiceid = '" + csaleinvoiceid + "';\n" + | ||||
|                             "MERGE INTO ar_recbill a USING ar_recitem b ON ( a.pk_recbill = b.pk_recbill AND b.top_billid = '" + csaleinvoiceid + "' AND b.top_billtype = '32' ) \n" + | ||||
|                             "WHEN MATCHED THEN\n" + | ||||
|                             "UPDATE \n" + | ||||
|                             "SET a.invoiceno = '" + fphm + "';\n" + | ||||
|                             "UPDATE ar_recitem \n" + | ||||
|                             "SET invoiceno = '" + fphm + "' \n" + | ||||
|                             "WHERE\n" + | ||||
|                             "top_billid = '" + csaleinvoiceid + "'  \n" + | ||||
|                             "AND top_billtype = '32';\n" + | ||||
|                             "UPDATE ic_saleout_b \n" + | ||||
|                             "SET vsourcebillcode = '"+ billno +"' \n" + | ||||
|                             "WHERE\n" + | ||||
|                             "csourcetype = '32' \n" + | ||||
|                             "AND csourcebillhid = '" + csaleinvoiceid +"';\n" + | ||||
|                             "COMMIT;\n" + | ||||
|                             "EXCEPTION \n" + | ||||
|                             "WHEN OTHERS THEN\n" + | ||||
|                             "ROLLBACK;\n" + | ||||
|                             "RAISE;\n" + | ||||
|                             "END;"; | ||||
|                     dao.executeUpdate(updateRecbillAndItemSql); | ||||
|                 } | ||||
| 
 | ||||
| 
 | ||||
|             } | ||||
|         } catch(Exception e) { | ||||
|             e.printStackTrace(); | ||||
|         } | ||||
|         return null; | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     private String doPost(String requestUrl, JSONObject json) throws IOException { | ||||
|         URL u = new URL(requestUrl); | ||||
|         try { | ||||
|             if("https".equalsIgnoreCase(u.getProtocol())){//判定网址是否信任,不信任则调用忽略信任工具类SslUtil | ||||
|                 IgnoreSslUtil.ignoreSsl(); | ||||
|             } | ||||
|             HttpsURLConnection connection = (HttpsURLConnection)u.openConnection(); | ||||
|             // 设置请求方法 | ||||
|             connection.setRequestMethod("POST"); | ||||
|             // 设置请求属性 | ||||
|             connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8"); | ||||
|             // 发送POST请求必须设置如下两行 | ||||
|             connection.setDoOutput(true); | ||||
|             connection.setDoInput(true); | ||||
|             byte[] outputInBytes = json.toJSONString().getBytes(StandardCharsets.UTF_8); | ||||
|             // 写入数据到请求体 | ||||
|             OutputStream os = connection.getOutputStream(); | ||||
|             os.write(outputInBytes); | ||||
|             // 获取响应码 | ||||
|             int responseCode = connection.getResponseCode(); | ||||
|             System.out.println("Response Code: " + responseCode); | ||||
|             // 读取响应 | ||||
|             try(BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()))) { | ||||
|                 String response = br.readLine(); | ||||
|                 System.out.println("Response: " + response); | ||||
|             } | ||||
|             // 关闭连接 | ||||
|             connection.disconnect(); | ||||
|         } catch(Exception e) { | ||||
|             e.printStackTrace(); | ||||
|         } | ||||
|         return null; | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     private String doGet(String requestUrl, Map<String, String> paramMap) throws IOException { | ||||
| 
 | ||||
|         StringBuilder param = new StringBuilder("?"); | ||||
|         if (paramMap != null) { | ||||
|             for (Map.Entry<String, String> entry : paramMap.entrySet()) { | ||||
|                 param.append(entry.getKey()); | ||||
|                 param.append("="); | ||||
|                 param.append(entry.getValue()); | ||||
|                 param.append("&"); | ||||
|             } | ||||
|             param.deleteCharAt(param.length() - 1); | ||||
|         } | ||||
|         String url = requestUrl + param; | ||||
|         URL u = new URL(url); | ||||
|         try { | ||||
|             if("https".equalsIgnoreCase(u.getProtocol())){//判定网址是否信任,不信任则调用忽略信任工具类SslUtil | ||||
|                 IgnoreSslUtil.ignoreSsl(); | ||||
|             } | ||||
|             HttpsURLConnection connection = (HttpsURLConnection)u.openConnection(); | ||||
|             connection.setRequestMethod("GET"); | ||||
|             connection.setConnectTimeout(5000); | ||||
|             connection.setReadTimeout(5000); | ||||
|             connection.connect(); | ||||
|             StringBuilder response =new StringBuilder(); | ||||
|             int responsecode = connection.getResponseCode(); | ||||
|             if(responsecode == HttpsURLConnection.HTTP_OK) { | ||||
|                 InputStream inputstream =connection.getInputStream(); | ||||
|                 BufferedReader reader = new BufferedReader(new InputStreamReader(inputstream)); | ||||
|                 String line; | ||||
| 
 | ||||
|                 while((line =reader.readLine()) != null) { | ||||
|                     response.append(line); | ||||
|                 } | ||||
|                 reader.close(); | ||||
|             } | ||||
|             connection.disconnect(); | ||||
|             return response.toString(); | ||||
|         } catch(Exception  e) { | ||||
|             e.printStackTrace(); | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|         return null; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
		Loading…
	
		Reference in New Issue