Merge remote-tracking branch 'origin/main'

This commit is contained in:
张明 2025-05-15 11:03:29 +08:00
commit e890d08065
13 changed files with 470 additions and 279 deletions

View File

@ -71,23 +71,25 @@ public class GatheringbillEditSaveBatchBSAction extends BillUpdateBatchBSAction
UFDouble changeMoney = money.sub(oriMoney);
// 몽앴饋簡땐데id혼꿴璂饋簡땐데
BaseDAO dao = new BaseDAO();
String sql = "select nreceivedmny,ntotalorigmny from so_saleorder where dr = 0 and csaleorderid = '" + def3
String sql = "select vbillcode,nreceivedmny,ntotalorigmny from so_saleorder where dr = 0 and csaleorderid = '" + def3
+ "'";
Map saleMap = (Map) dao.executeQuery(sql, new MapProcessor());
// 饋簡땐데송江북셕
UFDouble ntotalorigmny = UFDouble.ZERO_DBL;
// 饋簡땐데茄셥澗운쏜띨
UFDouble nreceivedmny = UFDouble.ZERO_DBL;
if (saleMap != null) {
String vbillcode = "";
if(saleMap != null) {
nreceivedmny = new UFDouble(
saleMap.get("nreceivedmny") == null ? "0" : saleMap.get("nreceivedmny").toString());
ntotalorigmny = new UFDouble(
saleMap.get("ntotalorigmny") == null ? "0" : saleMap.get("ntotalorigmny").toString());
vbillcode = saleMap.get("vbillcode") == null ? "" : saleMap.get("vbillcode").toString();
}
if (money.compareTo(ntotalorigmny) > 0) {
UFDouble moreMoney = money.sub(ntotalorigmny);
throw new BusinessException("【该笔收款已超销售订单" + moreMoney + "元,无法传输!请检查订单累计收款金额!】");
throw new BusinessException("【该笔收款税收合计" + money + "已超销售订单 [" + vbillcode + "] " + moreMoney + "元,无法传输!请检查订单累计收款金额!】");
}
}

View File

@ -82,20 +82,22 @@ public class GatheringbillSaveBatchBSAction extends BillInsertBatchBSAction {
//몽앴饋簡땐데id혼꿴璂饋簡땐데
BaseDAO dao = new BaseDAO();
String sql = "select nreceivedmny,ntotalorigmny from so_saleorder where dr = 0 and csaleorderid = '" +def3+"'";
String sql = "select vbillcode,nreceivedmny,ntotalorigmny from so_saleorder where dr = 0 and csaleorderid = '" +def3+"'";
Map saleMap = (Map)dao.executeQuery(sql, new MapProcessor());
//饋簡땐데송江북셕
UFDouble ntotalorigmny = UFDouble.ZERO_DBL;
//饋簡땐데茄셥澗운쏜띨
UFDouble nreceivedmny = UFDouble.ZERO_DBL;
String vbillcode = "";
if(saleMap != null) {
nreceivedmny = new UFDouble(saleMap.get("nreceivedmny") == null ? "0" : saleMap.get("nreceivedmny").toString());
ntotalorigmny = new UFDouble(saleMap.get("ntotalorigmny") == null ? "0" : saleMap.get("ntotalorigmny").toString());
vbillcode = saleMap.get("vbillcode") == null ? "" : saleMap.get("vbillcode").toString();
}
if (money.compareTo(ntotalorigmny) > 0) {
UFDouble moreMoney = money.sub(ntotalorigmny);
throw new BusinessException("【该笔收款已超销售订单" + moreMoney + "元,无法传输!请检查订单累计收款金额!】");
throw new BusinessException("【该笔收款税收合计" + money + "已超销售订单 [" + vbillcode + "] " + moreMoney + "元,无法传输!请检查订单累计收款金额!】");
}
}
}

View File

@ -212,7 +212,7 @@ class ApplyRequest extends EInvoiceRequest implements IFactoryRequest {
motor.setHGZH(psd.getHgzh());
motor.setFDJHM(psd.getFdjhm());
motor.setDUWEI(psd.getDunwei());
motor.setDUNWEI(psd.getDunwei());
// ***********************************************************************
ad.setDetailMotor(motor);
}
@ -1377,7 +1377,7 @@ class ApplyRequest extends EInvoiceRequest implements IFactoryRequest {
//Öλ
private String DUWEI;
private String DUNWEI;
public String getHGZH() {
return HGZH;
@ -1395,12 +1395,12 @@ class ApplyRequest extends EInvoiceRequest implements IFactoryRequest {
this.FDJHM = FDJHM;
}
public String getDUWEI() {
return DUWEI;
public String getDUNWEI() {
return DUNWEI;
}
public void setDUWEI(String DUWEI) {
this.DUWEI = DUWEI;
public void setDUNWEI(String DUNWEI) {
this.DUNWEI = DUNWEI;
}

View File

@ -8,7 +8,6 @@ package nc.bs.mmpac.pmo.pac0002.bp;
import nc.bs.mmpac.pmo.pac0002.pluginpoint.PMOPluginPoint;
import nc.bs.mmpac.pmo.pac0002.rule.PMOFilterBillStatusRule;
import nc.bs.mmpac.pmo.pac0002.rule.PMOFinishAutoFinishPutPlanRule;
import nc.bs.mmpac.pmo.pac0002.rule.PMOToFinishPickMRule;
import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillFinishValueRule;
import nc.bs.mmpub.rule.MMVOSagaFrozenValidateRule;
import nc.impl.pubapp.pattern.rule.IFilterRule;
@ -43,9 +42,9 @@ public class PMOFinishBP {
private void addFinishAfterRule(CompareAroundProcesser<PMOAggVO> processer) {
IRule<PMOAggVO> finishPutPlanRule = new PMOFinishAutoFinishPutPlanRule();
processer.addAfterRule(finishPutPlanRule);
/** 同步修改备料计划完成(生产订单强制完工时) */
IRule<PMOAggVO> pMOToFinishPickMRule = new PMOToFinishPickMRule();
processer.addAfterRule(pMOToFinishPickMRule);
// /** 同步修改备料计划完成(生产订单强制完工时) */
// IRule<PMOAggVO> pMOToFinishPickMRule = new PMOToFinishPickMRule();
// processer.addAfterRule(pMOToFinishPickMRule);
}
public PMOAggVO[] finishCancel(PMOAggVO[] fullBills, PMOAggVO[] originBills) {

View File

@ -5,13 +5,16 @@
package nc.bs.mmpac.pmo.pac0002.bp;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import nc.bs.mmpac.pmo.pac0002.bp.service.PMOBPService;
import nc.bs.mmpac.pmo.pac0002.bp.util.PMOBPUtil;
import nc.bs.mmpac.pmo.pac0002.pluginpoint.PMOPluginPoint;
import nc.bs.mmpac.pmo.pac0002.rule.PMOFilterBillStatusRule;
import nc.bs.mmpac.pmo.pac0002.rule.PMOFilterRowStatusRule;
import nc.bs.mmpac.pmo.pac0002.rule.PMOFinishAutoFinishPutPlanRule;
import nc.bs.mmpac.pmo.pac0002.rule.PMOToFinishPickMRule;
import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillFinishValueRule;
import nc.bs.mmpub.rule.MMVOSagaFrozenValidateRule;
import nc.impl.pubapp.pattern.rule.IRule;
@ -28,11 +31,6 @@ import nc.vo.pub.BusinessException;
import nc.vo.pub.CircularlyAccessibleValueObject;
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class PMORowFinishBP {
public PMORowFinishBP() {
}
@ -88,10 +86,10 @@ public class PMORowFinishBP {
returnvos[0].setChildrenVO((CircularlyAccessibleValueObject[])newitemMap.values().toArray(new PMOItemVO[0]));
processer.after(returnvos, returnvos);
/** 同步修改备料计划完成(生产订单强制完工时) */
IRule<PMOAggVO> pMOToFinishPickMRule = new PMOToFinishPickMRule();
pMOToFinishPickMRule.process(newaggvos);
/** ******************** */
// /** 同步修改备料计划完成(生产订单强制完工时) */
// IRule<PMOAggVO> pMOToFinishPickMRule = new PMOToFinishPickMRule();
// pMOToFinishPickMRule.process(newaggvos);
// /** ******************** */
PMOAggVO newaggvo = PMOBPService.getIPMOQueryService().queryByPk(vos[0].getParentVO().getCpmohid());
return new PMOAggVO[]{newaggvo};

View File

@ -27,52 +27,53 @@ public class PMOToFinishPickMRule
* 3.若为完工状态则根据生产订单明细表中生产订单行查询备料计划
* 4.修改备料计划为完成状态3
*/
for(int i = 0; i < vos.length; i++) {
PMOAggVO vo = vos[i];
PMOItemVO[] items = vo.getChildrenVO();
//循环生产订单明细
for(int j = 0; j < items.length; j++) {
PMOItemVO item = items[j];
//查看生产订单行状态是否为完工2
int fitemStatus = item.getFitemstatus();
if(fitemStatus != 2) {
continue;
}
//根据生产订单行查询备料计划
String cmoid = item.getCmoid();
String whereSql = "nvl(mm_pickm.dr,0) = 0 and mm_pickm.vsourcemorowid = '" + cmoid + "'";
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) {
continue;
}
//数组转换
AggPickmVO[] aggVOsArr = new AggPickmVO[aggVOs.size()];
boolean flag = false;
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);
flag = true;
}
}
if(flag) {
//备料计划完工
IPickmMaintainService ipickmMaintainService = NCLocator.getInstance().lookup(IPickmMaintainService.class);
ipickmMaintainService.finishPickm(aggVOsArr);
}
}catch(BusinessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//20250514弃用
// for(int i = 0; i < vos.length; i++) {
// PMOAggVO vo = vos[i];
// PMOItemVO[] items = vo.getChildrenVO();
// //循环生产订单明细
// for(int j = 0; j < items.length; j++) {
// PMOItemVO item = items[j];
// //查看生产订单行状态是否为完工2
// int fitemStatus = item.getFitemstatus();
// if(fitemStatus != 2) {
// continue;
// }
// //根据生产订单行查询备料计划
// String cmoid = item.getCmoid();
// String whereSql = "nvl(mm_pickm.dr,0) = 0 and mm_pickm.vsourcemorowid = '" + cmoid + "'";
// 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) {
// continue;
// }
// //数组转换
// AggPickmVO[] aggVOsArr = new AggPickmVO[aggVOs.size()];
// boolean flag = false;
// 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);
// flag = true;
// }
// }
// if(flag) {
// //备料计划完工
// IPickmMaintainService ipickmMaintainService = NCLocator.getInstance().lookup(IPickmMaintainService.class);
// ipickmMaintainService.finishPickm(aggVOsArr);
// }
// }catch(BusinessException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//
// }
// }
}
}

View File

@ -5,8 +5,25 @@
package nc.bs.mmpac.wr.bp;
import java.util.HashMap;
import java.util.Map;
import nc.bs.mmpac.wr.plugin.WrPluginPoint;
import nc.bs.mmpac.wr.rule.*;
import nc.bs.mmpac.wr.rule.WrAuditAndApplyCheckRule;
import nc.bs.mmpac.wr.rule.WrAuditAndProdInRule;
import nc.bs.mmpac.wr.rule.WrCheckMaterialPermissionRule;
import nc.bs.mmpac.wr.rule.WrCheckMoIsCloseRule;
import nc.bs.mmpac.wr.rule.WrCheckTranstypeCodeRule;
import nc.bs.mmpac.wr.rule.WrClearNullBodyRule;
import nc.bs.mmpac.wr.rule.WrFillInsertDataRule;
import nc.bs.mmpac.wr.rule.WrHeadNotNullRule;
import nc.bs.mmpac.wr.rule.WrIsSaveAndApproveRule;
import nc.bs.mmpac.wr.rule.WrNoneMainProductBomCheckRule;
import nc.bs.mmpac.wr.rule.WrPickFilterRule;
import nc.bs.mmpac.wr.rule.WrQualityFilterRule;
import nc.bs.mmpac.wr.rule.WrRowNoRule;
import nc.bs.mmpac.wr.rule.WrSetDefaultValueWhenInsertRule;
import nc.bs.mmpac.wr.rule.WrSetItemDefaultValueRule;
import nc.bs.mmpac.wr.rule.WrSetQualityVODefaultValueRule;
import nc.bs.mmpac.wr.rule.batch.WrCreateBatProdRule;
import nc.bs.mmpac.wr.rule.batch.WrCreateBatchCodeRule;
import nc.bs.mmpac.wr.rule.check.WrNullRule;
@ -17,7 +34,12 @@ import nc.bs.mmpac.wr.rule.mo.WrMORewriteRule;
import nc.bs.mmpac.wr.rule.output.WrOutputNotNullRule;
import nc.bs.mmpac.wr.rule.pick.WrPickNotNullRule;
import nc.bs.mmpac.wr.rule.putplan.WrInsertRewriteWrNumForPutPlanRule;
import nc.bs.mmpac.wr.rule.serialno.*;
import nc.bs.mmpac.wr.rule.serialno.WrMoSerialNoMarkIRule;
import nc.bs.mmpac.wr.rule.serialno.WrSerialNoAutoCreateBeforeRule;
import nc.bs.mmpac.wr.rule.serialno.WrSerialNoCheckCodeRepeat;
import nc.bs.mmpac.wr.rule.serialno.WrSerialNoCheckRule;
import nc.bs.mmpac.wr.rule.serialno.WrSerialNoSaveRule;
import nc.bs.mmpac.wr.rule.serialno.WrSnSynToQualtiyRule;
import nc.bs.mmpub.rule.MMATOMaterialCheckRule;
import nc.bs.mmpub.rule.MMAutoMaterialAssignRule;
import nc.bs.pubapp.pub.rule.FieldLengthCheckRule;
@ -30,10 +52,11 @@ import nc.util.mmf.busi.rule.MMBillCodeCheckAndTrantypeRule;
import nc.util.mmf.busi.rule.MMCheckMaterialVirtualRule;
import nc.util.mmf.busi.rule.MMCreateBillcodeAndTrantypecodeRule;
import nc.util.mmf.framework.gc.GCInsertBPTemplate;
import nc.vo.mmpac.wr.entity.*;
import java.util.HashMap;
import java.util.Map;
import nc.vo.mmpac.wr.entity.AggWrVO;
import nc.vo.mmpac.wr.entity.WrItemVO;
import nc.vo.mmpac.wr.entity.WrPickVO;
import nc.vo.mmpac.wr.entity.WrQualityVO;
import nc.vo.mmpac.wr.entity.WrVO;
public class WrInsertBP {
private boolean isOnlyInsert = false;
@ -130,10 +153,10 @@ public class WrInsertBP {
processor.addAfterRule(moDiscadNumRewriteRule);
IRule<AggWrVO> snSaveRule = new WrSerialNoSaveRule();
processor.addAfterRule(snSaveRule);
/** 同步修改备料计划完成 */
IRule<AggWrVO> pickMFinishRule = new PickMFinishRule();
processor.addAfterRule(pickMFinishRule);
/** ******************** */
// /** ͬ²½Ð޸ı¸Áϼƻ®Íê³É */
// IRule<AggWrVO> pickMFinishRule = new PickMFinishRule();
// processor.addAfterRule(pickMFinishRule);
// /** ******************** */
if (!this.isOnlyInsert) {
processor.addAfterRule(new WrIsSaveAndApproveRule());

View File

@ -27,69 +27,69 @@ public class PickMFinishRule extends Object implements IRule<AggWrVO> {
* 业务逻辑 1.根据生产报告子表中生产订单行查看生产订单明细表 2.查看生产订单明细行的状态是否为完工2
* 3.若为完工状态则根据生成报告子表中生产订单行查询备料计划 4.修改备料计划为完成状态3
*/
for (int i = 0; i < vos.length; i++) {
AggWrVO vo = vos[i];
WrItemVO[] items = vo.getChildrenVO();
// 循环生产报告子表
for (int j = 0; j < items.length; j++) {
WrItemVO item = items[j];
String cbmobid = item.getCbmobid();
String[] keys = { cbmobid };
// 生产订单行查询
PMOItemVO[] pmoItemvos = (new PMOItemVOQueryBP()).getPMOItemVOsByids(keys);
// 查看生产订单行状态是否为完工2
if (pmoItemvos.length > 0) {
PMOItemVO pmoItem = pmoItemvos[0];
int fitemStatus = pmoItem.getFitemstatus();
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);
// 根据主键查询得到aggvo
try {
@SuppressWarnings("unchecked")
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++) {
AggPickmVO aggPickmVO = aggVOs.get(z);
PickmHeadVO pickmHeadVO = aggPickmVO.getParentVO();
Integer fbillstatus = pickmHeadVO.getFbillstatus();
if (fbillstatus != 2) {
aggVOsArr[z] = aggVOs.get(z);
flag = true;
}
}
if (flag) {
// 备料计划完工
IPickmMaintainService ipickmMaintainService = NCLocator.getInstance()
.lookup(IPickmMaintainService.class);
ipickmMaintainService.finishPickm(aggVOsArr);
}
} catch (BusinessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
AggWrChangeVO[] aggChangeVOs = WrBusiVOToChangeVO.changeOnlySerialNoVO(vos);
WrSerialNoDocInsertControl inSertControl = new WrSerialNoDocInsertControl();
inSertControl.process(aggChangeVOs);
// for (int i = 0; i < vos.length; i++) {
// AggWrVO vo = vos[i];
// WrItemVO[] items = vo.getChildrenVO();
// // 循环生产报告子表
// for (int j = 0; j < items.length; j++) {
// WrItemVO item = items[j];
// String cbmobid = item.getCbmobid();
// String[] keys = { cbmobid };
// // 生产订单行查询
// PMOItemVO[] pmoItemvos = (new PMOItemVOQueryBP()).getPMOItemVOsByids(keys);
// // 查看生产订单行状态是否为完工2
// if (pmoItemvos.length > 0) {
// PMOItemVO pmoItem = pmoItemvos[0];
// int fitemStatus = pmoItem.getFitemstatus();
// 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);
// // 根据主键查询得到aggvo
// try {
// @SuppressWarnings("unchecked")
// 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++) {
// AggPickmVO aggPickmVO = aggVOs.get(z);
// PickmHeadVO pickmHeadVO = aggPickmVO.getParentVO();
// Integer fbillstatus = pickmHeadVO.getFbillstatus();
// if (fbillstatus != 2) {
// aggVOsArr[z] = aggVOs.get(z);
// flag = true;
// }
//
// }
// if (flag) {
// // 备料计划完工
// IPickmMaintainService ipickmMaintainService = NCLocator.getInstance()
// .lookup(IPickmMaintainService.class);
// ipickmMaintainService.finishPickm(aggVOsArr);
// }
// } catch (BusinessException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//
// }
//
// }
// }
// AggWrChangeVO[] aggChangeVOs = WrBusiVOToChangeVO.changeOnlySerialNoVO(vos);
//
// WrSerialNoDocInsertControl inSertControl = new WrSerialNoDocInsertControl();
// inSertControl.process(aggChangeVOs);
}
}

View File

@ -32,129 +32,123 @@ import nc.vo.mmpac.pickm.entity.PickmItemVO;
public class PloProdDeptRule implements IRule<AggregatedPoVO> {
@Override
public void process(AggregatedPoVO[] vos) {
if (null == vos) {
return;
}
Map<String, List<String>> map = new HashMap<String, List<String>>();
ArrayList<String> vsrcbidList = new ArrayList<>();
for (AggregatedPoVO agg : vos) {
PoVO plo = agg.getParentVO();
String vid = plo.getCmaterialvid();
String stockorgid = plo.getCstockorgid();
String stockorgvid = plo.getCstockorgvid();
String prodDeptid = plo.getCproddeptid();
String prodDeptvid = plo.getCproddeptvid();
Integer posource = plo.getFposource();
if (PoSourceEnum.COMPUT == posource && MMValueCheck.isEmpty(prodDeptid)
&& MMValueCheck.isEmpty(prodDeptvid) && MMValueCheck.isNotEmpty(stockorgid)
&& MMValueCheck.isNotEmpty(stockorgvid)) {
List<String> vids = map.get(stockorgid);
if (null == vids) {
List<String> list = new ArrayList<String>();
list.add(vid);
map.put(stockorgid, list);
}
else {
vids.add(vid);
}
}
String vsrcbid = plo.getVsrcbid();//来源单据表体主键
int fdemandbill = plo.getFdemandbill();//需求来源
if (PoSourceEnum.COMPUT == posource && fdemandbill == 1) {
vsrcbidList.add(vsrcbid);
}
}
if (vsrcbidList != null && vsrcbidList.size() > 0) {
String[] vsrcbids = vsrcbidList.toArray(new String[vsrcbidList.size()]);
Map<String, AggPickmVO> pickmVOMap;
try {
pickmVOMap = NCLocator.getInstance().lookup(IPickmPubQueryService.class)
.queryPickm4Issue(vsrcbids);
} catch (BusinessException e) {
throw new RuntimeException(e);
}
pickmVOMap.getClass();
for (AggregatedPoVO agg : vos) {
PoVO plo = agg.getParentVO();
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 = "";//标前项目号
for (PickmItemVO pickmItemVO : children) {
if (pickmItemVO.getCpickm_bid().equals(vsrcbid)) {
vbdef5 = pickmItemVO.getVbdef5();//合同编号
vbdef6 = pickmItemVO.getVbdef6();//合同销售订单号
vbdef7 = pickmItemVO.getVbdef7();//标前项目号
}
}
plo.setVdef2(vbdef5);//合同编号
plo.setVdef3(vbdef6);//合同销售订单号
plo.setVdef4(vbdef7);//标前项目号
}
}
}
Set<String> stockorgids = map.keySet();
Iterator<String> i = stockorgids.iterator();
while (i.hasNext()) {
String key = i.next();
List<String> vids = map.get(key);
Map<String, MaterialProdVO> results =
MaterialPubService.queryMaterialProduceInfoByPks(vids.toArray(new String[0]), key, new String[] {
MaterialProdVO.PK_PRODEPTDOC
});
for (AggregatedPoVO agg : vos) {
PoVO plo = agg.getParentVO();
String vid = plo.getCmaterialvid();
String stockorgid = plo.getCstockorgid();
String stockorgvid = plo.getCstockorgvid();
Integer posource = plo.getFposource();
if (PoSourceEnum.COMPUT == posource && MMValueCheck.isNotEmpty(stockorgid)
&& MMValueCheck.isNotEmpty(stockorgvid)) {
if (null != results) {
MaterialProdVO prodvo = results.get(vid);
if (null != prodvo) {
plo.setCproddeptid(prodvo.getPk_prodeptdoc());// 生产部门ID
}
}
}
}
}
// 根据生产部门ID查询设置VID
List<String> proddeptids = new ArrayList<String>();
for (AggregatedPoVO agg : vos) {
PoVO plo = agg.getParentVO();
String prodDeptid = plo.getCproddeptid();
Integer posource = plo.getFposource();
if (PoSourceEnum.COMPUT == posource && MMValueCheck.isNotEmpty(prodDeptid)) {
proddeptids.add(prodDeptid);
}
}
IDeptPubService deptPubService = this.getDeptPubService();
try {
HashMap<String, String> results = deptPubService.getLastVIDSByDeptIDS(proddeptids.toArray(new String[0]));
if (null != results) {
for (AggregatedPoVO agg : vos) {
PoVO plo = agg.getParentVO();
String prodDeptid = plo.getCproddeptid();
Integer posource = plo.getFposource();
if (PoSourceEnum.COMPUT == posource && MMValueCheck.isNotEmpty(prodDeptid)) {
plo.setCproddeptvid(results.get(prodDeptid));
}
}
}
}
catch (BusinessException e) {
ExceptionUtils.wrappException(e);
}
@Override
public void process(AggregatedPoVO[] vos) {
if (null == vos) {
return;
}
Map<String, List<String>> map = new HashMap<String, List<String>>();
ArrayList<String> vsrcbidList = new ArrayList<>();
for (AggregatedPoVO agg : vos) {
PoVO plo = agg.getParentVO();
String vid = plo.getCmaterialvid();
String stockorgid = plo.getCstockorgid();
String stockorgvid = plo.getCstockorgvid();
String prodDeptid = plo.getCproddeptid();
String prodDeptvid = plo.getCproddeptvid();
Integer posource = plo.getFposource();
if (PoSourceEnum.COMPUT == posource && MMValueCheck.isEmpty(prodDeptid) && MMValueCheck.isEmpty(prodDeptvid)
&& MMValueCheck.isNotEmpty(stockorgid) && MMValueCheck.isNotEmpty(stockorgvid)) {
List<String> vids = map.get(stockorgid);
if (null == vids) {
List<String> list = new ArrayList<String>();
list.add(vid);
map.put(stockorgid, list);
} else {
vids.add(vid);
}
}
String vsrcbid = plo.getVsrcbid();// 来源单据表体主键
// 需求来源为备料计划的才回写
if (PoSourceEnum.COMPUT == posource && plo.getFdemandbill() != null && plo.getFdemandbill() == 1) {
vsrcbidList.add(vsrcbid);
}
}
if (vsrcbidList != null && vsrcbidList.size() > 0) {
String[] vsrcbids = vsrcbidList.toArray(new String[vsrcbidList.size()]);
Map<String, AggPickmVO> pickmVOMap;
try {
pickmVOMap = NCLocator.getInstance().lookup(IPickmPubQueryService.class).queryPickm4Issue(vsrcbids);
} catch (BusinessException e) {
throw new RuntimeException(e);
}
pickmVOMap.getClass();
for (AggregatedPoVO agg : vos) {
PoVO plo = agg.getParentVO();
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 = "";// 标前项目号
for (PickmItemVO pickmItemVO : children) {
if (pickmItemVO.getCpickm_bid().equals(vsrcbid)) {
vbdef5 = pickmItemVO.getVbdef5();// 合同编号
vbdef6 = pickmItemVO.getVbdef6();// 合同销售订单号
vbdef7 = pickmItemVO.getVbdef7();// 标前项目号
}
}
plo.setVdef2(vbdef5);// 合同编号
plo.setVdef3(vbdef6);// 合同销售订单号
plo.setVdef4(vbdef7);// 标前项目号
}
}
}
Set<String> stockorgids = map.keySet();
Iterator<String> i = stockorgids.iterator();
while (i.hasNext()) {
String key = i.next();
List<String> vids = map.get(key);
Map<String, MaterialProdVO> results = MaterialPubService.queryMaterialProduceInfoByPks(
vids.toArray(new String[0]), key, new String[] { MaterialProdVO.PK_PRODEPTDOC });
for (AggregatedPoVO agg : vos) {
PoVO plo = agg.getParentVO();
String vid = plo.getCmaterialvid();
String stockorgid = plo.getCstockorgid();
String stockorgvid = plo.getCstockorgvid();
Integer posource = plo.getFposource();
if (PoSourceEnum.COMPUT == posource && MMValueCheck.isNotEmpty(stockorgid)
&& MMValueCheck.isNotEmpty(stockorgvid)) {
if (null != results) {
MaterialProdVO prodvo = results.get(vid);
if (null != prodvo) {
plo.setCproddeptid(prodvo.getPk_prodeptdoc());// 生产部门ID
}
}
}
}
}
// 根据生产部门ID查询设置VID
List<String> proddeptids = new ArrayList<String>();
for (AggregatedPoVO agg : vos) {
PoVO plo = agg.getParentVO();
String prodDeptid = plo.getCproddeptid();
Integer posource = plo.getFposource();
if (PoSourceEnum.COMPUT == posource && MMValueCheck.isNotEmpty(prodDeptid)) {
proddeptids.add(prodDeptid);
}
}
IDeptPubService deptPubService = this.getDeptPubService();
try {
HashMap<String, String> results = deptPubService.getLastVIDSByDeptIDS(proddeptids.toArray(new String[0]));
if (null != results) {
for (AggregatedPoVO agg : vos) {
PoVO plo = agg.getParentVO();
String prodDeptid = plo.getCproddeptid();
Integer posource = plo.getFposource();
if (PoSourceEnum.COMPUT == posource && MMValueCheck.isNotEmpty(prodDeptid)) {
plo.setCproddeptvid(results.get(prodDeptid));
}
}
}
} catch (BusinessException e) {
ExceptionUtils.wrappException(e);
}
}
}
private IDeptPubService getDeptPubService() {
return NCLocator.getInstance().lookup(IDeptPubService.class);
}
private IDeptPubService getDeptPubService() {
return NCLocator.getInstance().lookup(IDeptPubService.class);
}
}

View File

@ -551,6 +551,18 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain {
if (vtrantypecode != null && !vtrantypecode.isEmpty()) {
targetHVO.setVtrantypecode(vtrantypecode);
}
//订单关联合同号
String vdef19 = sourceHVO.getVdef19();
if (vdef19 != null && !vdef19.isEmpty()) {
targetHVO.setVdef19(vdef19);
}
// 工程名称
String vdef20 = sourceHVO.getVdef20();
if (vdef20 != null && !vdef20.isEmpty()) {
targetHVO.setVdef20(vdef20);
}
// ¸üРSaleOrderBVO ×ÖÎ
SaleOrderBVO[] targetBVOs = target.getChildrenVO();
@ -692,12 +704,28 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain {
defList.clear();
defList = getDefList("BIP-ddh");
targetBVO.setVbdef5(defList.getOrDefault(vbdef5, ""));
targetBVO.setVbdef10(sourceBVO.getVbdef10());// 项目名称
targetBVO.setVbdef13(sourceBVO.getVbdef13());// 国网行项目号
// 新增字段的setter方法
targetBVO.setVbdef10(sourceBVO.getVbdef10()); // 项目名称
targetBVO.setVbdef13(sourceBVO.getVbdef13()); // 国网行项目号
targetBVO.setVbdef18(sourceBVO.getVbdef18()); // 是否定制
targetBVO.setVbdef19(sourceBVO.getVbdef19()); // 计划开工日期
targetBVO.setVbdef20(sourceBVO.getVbdef20()); // 计划完工日期
// 更新日志输出按需添加字段
NCCForUAPLogger.debug(String.format(
"cmaterialvid = [%S], vbdef1 = [%S], vbdef5 = [%S], vbdef10 = [%S], vbdef13 = [%S]",
cmaterialvid, targetBVO.getVbdef1(), targetBVO.getVbdef5(), targetBVO.getVbdef10(),
targetBVO.getVbdef13()));
"cmaterialvid = [%S], vbdef1 = [%S], vbdef5 = [%S], vbdef10 = [%S], vbdef13 = [%S], "
+ " vbdef18 = [%S], vbdef19 = [%S], vbdef20 = [%S]",
cmaterialvid,
targetBVO.getVbdef1(),
targetBVO.getVbdef5(),
targetBVO.getVbdef10(),
targetBVO.getVbdef13(),
targetBVO.getVbdef18(), // 是否定制
targetBVO.getVbdef19(), // 计划开工日期
targetBVO.getVbdef20() // 计划完工日期
));
}
}

View File

@ -7,6 +7,7 @@ import nc.bs.framework.common.InvocationInfoProxy;
import nc.bs.framework.common.NCLocator;
import nc.itf.bd.defdoc.IDefdocService;
import nc.itf.pim.project.prv.IProject;
import nc.jdbc.framework.SQLParameter;
import nc.jdbc.framework.processor.ColumnListProcessor;
import nc.jdbc.framework.processor.ColumnProcessor;
import nc.jdbc.framework.processor.MapProcessor;
@ -21,6 +22,8 @@ import nccloud.api.rest.utils.NCCRestUtils;
import nccloud.api.rest.utils.ResultMessageUtil;
import nccloud.api.so.m30.IAPISaleOrderMaitain;
import nccloud.api.so.m30.IAPISaleOrderQuery;
import nccloud.baseapp.core.log.NCCForUAPLogger;
import nccloud.commons.lang.StringUtils;
import nccloud.openapi.scmpub.pub.NCCPubRestResource;
import nccloud.openapi.scmpub.pub.TransferCodeToPKTool;
import nccloud.openapi.scmpub.pub.TransferMapToVOTool;
@ -483,4 +486,45 @@ public class SaleOrderResource extends NCCPubRestResource {
return ResultMessageUtil.exceptionToJSON(e);
}
}
/**
* 金慧软件修改BIP销售订单明细
*
* @author mzr
* @date 2025/05/14
*/
@POST
@Path("updateDef")
@Consumes({"application/json"})
@Produces({"application/json"})
public JSONString updateDef(Map<String, Object> paramMap) {
String csaleorderbid = (String) paramMap.get("csaleorderbid");
if (StringUtils.isEmpty(csaleorderbid)) {
return ResultMessageUtil.exceptionToJSON("传入参数为空,请检查", APIErrCodeEnum.BUSINESSEXCCODE.getCode());
}
try {
StringBuilder sql = new StringBuilder("update so_saleorder_b set ");
SQLParameter parameter = new SQLParameter();
for (Map.Entry<String, Object> entry : paramMap.entrySet()) {
if (!"csaleorderbid".equals(entry.getKey())) {
sql.append(entry.getKey()).append(" = ?, ");
parameter.addParam(entry.getValue());
}
}
if (parameter.getCountParams() <= 0) {
return ResultMessageUtil.toJSON("传入参数为空,请检查", APIErrCodeEnum.BUSINESSEXCCODE.getCode());
}
// 删除最后的", "
sql.delete(sql.length() - 2, sql.length());
sql.append(" where csaleorderbid = ?");
NCCForUAPLogger.debug("updateDef-sql:" + sql);
parameter.addParam(csaleorderbid);
BaseDAO baseDAO = new BaseDAO();
int num = baseDAO.executeUpdate(sql.toString(), parameter);
return ResultMessageUtil.toJSON(num, "销售订单修改成功");
} catch (BusinessException e) {
return ResultMessageUtil.exceptionToJSON(e);
}
}
}

View File

@ -0,0 +1,89 @@
package nc.bs.sscivm.ivsale.util;
import nc.vo.sscivm.ivmpub.InvoiceTypeEnum;
import java.util.HashMap;
import java.util.Map;
/**
* 发票类型和特殊票种映射工具类
* @author wangyl7
*
*/
public class InvoiceTypeToTspzUtil {
private final static Map<Integer,String> invoiceMap = new HashMap<Integer,String>();
private final static Map<Integer,String> tspzMap = new HashMap<Integer,String>();
static {
invoiceMap.put(InvoiceTypeEnum.INVOICETYPE_ZYFP_JDC.toIntValue(), "4");
invoiceMap.put(InvoiceTypeEnum.INVOICETYPE_DZPTFP_KCL.toIntValue(), "1");
invoiceMap.put(InvoiceTypeEnum.INVOICETYPE_DZZYFP_KCL.toIntValue(), "2");
invoiceMap.put(InvoiceTypeEnum.INVOICETYPE_PTFP_KCL.toIntValue(), "3");
invoiceMap.put(InvoiceTypeEnum.INVOICETYPE_ZYFP_KCL.toIntValue(), "4");
invoiceMap.put(InvoiceTypeEnum.INVOICETYPE_ESCTYFP.toIntValue(), "15");//二手车统一销售与机打重复
invoiceMap.put(InvoiceTypeEnum.INVOICETYPE_DZPTFP_NCP.toIntValue(), "1");
invoiceMap.put(InvoiceTypeEnum.INVOICETYPE_PTFP_NCP.toIntValue(), "3");
tspzMap.put(InvoiceTypeEnum.INVOICETYPE_ZYFP_JDC.toIntValue(), "12");
tspzMap.put(InvoiceTypeEnum.INVOICETYPE_DZPTFP_KCL.toIntValue(), "16");
tspzMap.put(InvoiceTypeEnum.INVOICETYPE_DZZYFP_KCL.toIntValue(), "16");
tspzMap.put(InvoiceTypeEnum.INVOICETYPE_PTFP_KCL.toIntValue(), "16");
tspzMap.put(InvoiceTypeEnum.INVOICETYPE_ZYFP_KCL.toIntValue(), "16");
tspzMap.put(InvoiceTypeEnum.INVOICETYPE_DZPTFP_NCP.toIntValue(), "9");
tspzMap.put(InvoiceTypeEnum.INVOICETYPE_PTFP_NCP.toIntValue(), "9");
}
/**
* 获取真实的发票类型
* @param fplx 发票类型
* @return 真实的发票类型
*/
public static String getRealInvoicetype(Integer fplx){
if (invoiceMap.containsKey(fplx)){
return invoiceMap.get(fplx);
}
return String.valueOf(fplx);
}
/**
* 获取特殊票种
* @param fplx 发票类型
* @return 特殊票种
*/
public static String getTspz(Integer fplx){
if (tspzMap.containsKey(fplx)){
return tspzMap.get(fplx);
}
return null;
}
/**
* 更具发票类型和特殊票种转发票类型
* @param fplx
* @param tspz
* @return
*/
public static String getInvoicetypeByFplxAndTspz(String fplx, String tspz){
//非特殊票种
if (tspz == null || tspz.startsWith("E")){
return fplx;
}
//全电发票不拼接
if ("31".equals(fplx) || "32".equals(fplx) ||"33".equals(fplx) || "34".equals(fplx)){
return fplx;
}
//增值税专用发票(机动车)
if ("412".equals(fplx + tspz)){
return InvoiceTypeEnum.INVOICETYPE_ZYFP_JDC.toStringValue();
}
//农产品收购
if ("9".equals(tspz)) {
return fplx + "0" + tspz;
}
//数电纸质发票(机动车销售统一发票
if ("36".equals(fplx)){
return fplx;
}
//其他特殊票种发票
return fplx + tspz;
}
}

View File

@ -88,6 +88,8 @@ public class APIBomBusinessServiceImpl implements IAPIBomBusinessService {
private static Map<String, Object> tsMap = new HashMap();
private String orgCodeFlag =null;
private static Map<String, Object> voMap = new HashMap();
private static Map<String, Set<String>> idsMap = new HashMap();
@ -112,7 +114,11 @@ public class APIBomBusinessServiceImpl implements IAPIBomBusinessService {
list.add(agg);
}
AggBomVO[] aggVOs = (AggBomVO[]) list.toArray(new AggBomVO[list.size()]);
if(aggVOs[0].getParentVO().getAttributeValue("pk_org")==null||aggVOs[0].getParentVO().getAttributeValue("pk_org")==""){
ExceptionUtils.wrappBusinessException("请求参数pk_org为空请检查");
}else{
this.orgCodeFlag=aggVOs[0].getParentVO().getAttributeValue("pk_org").toString();
}
BillFieldsCodeToPkUtil.doTranslateVOFields(aggVOs);
IUifService iUifService = NCLocator.getInstance().lookup(IUifService.class);
for (AggBomVO aggtwo : aggVOs) {
@ -170,7 +176,7 @@ public class APIBomBusinessServiceImpl implements IAPIBomBusinessService {
result = service.insertBom((AggBomVO[]) addAggvoList.toArray(new AggBomVO[0]));
} else if (!commitAggvoList.isEmpty() && addAggvoList.isEmpty()) {
List<AggBomVO> newAggVOList = new ArrayList<>();
if ("gaoning".equals(userCode)) {
if ("gaoning".equals(userCode)|| "C029".equals(orgCodeFlag)) {
for (AggBomVO aggvo : commitAggvoList) {
result = service.insertCommitBomWithParam(new AggBomVO[] { aggvo }, true, true);
newAggVOList.add(result[0]);
@ -720,7 +726,7 @@ public class APIBomBusinessServiceImpl implements IAPIBomBusinessService {
if (VersionTypeEnum.AVAILABLE.equalsValue(head.getHfversiontype())
&& !head.getCbomid().equals(headvo.getCbomid())) {
// sdlizheng --添加独立判断--plm三方越过此校验
if ("gaoning".equals(userCode) || "dlkght".equals(userCode)) {
if ("gaoning".equals(userCode) || "dlkgsrm".equals(userCode)|| "C029".equals(this.orgCodeFlag)) {
// AggBomVO afterVO = service.canceldefault(aggBomVO);
} else {
return UFBoolean.TRUE;
@ -774,12 +780,17 @@ public class APIBomBusinessServiceImpl implements IAPIBomBusinessService {
agg.getParent().setAttributeValue("fbillstatus", Integer.valueOf(-1));
agg.getParent().setAttributeValue("hfbomsource", Integer.valueOf(1));
agg.getParent().setAttributeValue("hfbomcategory", Integer.valueOf(1));
if ("gaoning".equals(userCode) || "dlkght".equals(userCode)) {
if ("gaoning".equals(userCode) || "dlkgsrm".equals(userCode)|| "C029".equals(this.orgCodeFlag)) {
// sdlizheng
// 1对于之前不存在的BOM新增时如果是传自由态不默认且无效走标准逻辑如果传的是审批态默认且有效2025年4月11日16点28分 start
if (fbillstatus != null && "1".equals(fbillstatus.toString())) {
agg.getParent().setAttributeValue("hfversiontype", Integer.valueOf(1));
agg.getParent().setAttributeValue("hbdefault", UFBoolean.TRUE);
}else if(fbillstatus != null && "-1".equals(fbillstatus.toString())){
if("gaoning".equals(userCode)|| "C029".equals(this.orgCodeFlag)){
agg.getParent().setAttributeValue("hfversiontype", Integer.valueOf(1));
agg.getParent().setAttributeValue("hbdefault", UFBoolean.TRUE);
}
}
// sdlizheng 1对于之前不存在的BOM新增时如果是传自由态不默认且无效如果传的是审批态默认且有效2025年4月11日16点28分 end
}