From c2530ed6ea652d25455f76ff747eeb8a2a7ae4de Mon Sep 17 00:00:00 2001 From: lihao Date: Wed, 28 May 2025 15:20:36 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E5=8F=91=E7=A5=A8=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=B6=85=E6=97=B6=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ivsale/sale/action/InvoiceDownloadAction.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sscivm/src/client/nccloud/web/sscivm/ivsale/sale/action/InvoiceDownloadAction.java b/sscivm/src/client/nccloud/web/sscivm/ivsale/sale/action/InvoiceDownloadAction.java index 4257141..32c8ce0 100644 --- a/sscivm/src/client/nccloud/web/sscivm/ivsale/sale/action/InvoiceDownloadAction.java +++ b/sscivm/src/client/nccloud/web/sscivm/ivsale/sale/action/InvoiceDownloadAction.java @@ -230,12 +230,12 @@ public class InvoiceDownloadAction implements ICommonAction { private String doGet(String requestUrl, Map paramMap) throws IOException { PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); - cm.setMaxTotal(500); - cm.setDefaultMaxPerRoute(50); + cm.setMaxTotal(5000); + cm.setDefaultMaxPerRoute(500); - RequestConfig globalConfig = RequestConfig.custom().setConnectionRequestTimeout(5000) // 连接池获取连接超时 - .setConnectTimeout(5000) // 连接建立超时 - .setSocketTimeout(20000) // 等待响应超时 + RequestConfig globalConfig = RequestConfig.custom().setConnectionRequestTimeout(50000) // 连接池获取连接超时 + .setConnectTimeout(50000) // 连接建立超时 + .setSocketTimeout(200000) // 等待响应超时 .setCookieSpec(CookieSpecs.IGNORE_COOKIES).build(); CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(cm) From 489659a045f2304bc376967e85c2886a503e2eae Mon Sep 17 00:00:00 2001 From: lihao Date: Wed, 28 May 2025 15:21:22 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E5=8A=A0=E5=B7=A5=E8=B4=B9=E7=BB=93?= =?UTF-8?q?=E7=AE=97=E5=8D=95=E5=AE=A1=E6=89=B9=E9=80=9A=E8=BF=87=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E8=BF=9B=E8=A1=8C=E6=9A=82=E4=BC=B0=E5=BA=94=E4=BB=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mmpsc/pscsettle/bp/SettleApproveBP.java | 4 +++ .../public/nc/bs/mmpub/rule/MMVOToAPRule.java | 36 +++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 mmpsc/src/public/nc/bs/mmpub/rule/MMVOToAPRule.java diff --git a/mmpsc/src/private/nc/bs/mmpsc/pscsettle/bp/SettleApproveBP.java b/mmpsc/src/private/nc/bs/mmpsc/pscsettle/bp/SettleApproveBP.java index 2e95bc6..81e44da 100644 --- a/mmpsc/src/private/nc/bs/mmpsc/pscsettle/bp/SettleApproveBP.java +++ b/mmpsc/src/private/nc/bs/mmpsc/pscsettle/bp/SettleApproveBP.java @@ -11,6 +11,7 @@ import nc.bs.mmpsc.pscsettle.rule.SettleStatusUpdateRule; import nc.bs.mmpsc.pscsettle.rule.approve.FillAuditInfoRule; import nc.bs.mmpsc.pscsettle.rule.unapprove.FilterAdjustedRule; import nc.bs.mmpub.rule.MMVOSagaFrozenValidateRule; +import nc.bs.mmpub.rule.MMVOToAPRule; import nc.impl.pubapp.pattern.data.bill.template.UpdateBPTemplate; import nc.impl.pubapp.pattern.rule.IFilterRule; import nc.impl.pubapp.pattern.rule.IRule; @@ -30,6 +31,9 @@ public class SettleApproveBP { } private void addAfterRule(CompareAroundProcesser processer, AggSettleVO[] originBills) { + + IRule var5 = new MMVOToAPRule(originBills); + processer.addAfterRule(var5); } private void addBeforeRule(CompareAroundProcesser processer) { diff --git a/mmpsc/src/public/nc/bs/mmpub/rule/MMVOToAPRule.java b/mmpsc/src/public/nc/bs/mmpub/rule/MMVOToAPRule.java new file mode 100644 index 0000000..fb5fcf1 --- /dev/null +++ b/mmpsc/src/public/nc/bs/mmpub/rule/MMVOToAPRule.java @@ -0,0 +1,36 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package nc.bs.mmpub.rule; + +import nc.bs.mmpsc.pscsettle.bp.SettleToAPBP; +import nc.impl.pubapp.pattern.data.vo.tool.VOConcurrentTool; +import nc.impl.pubapp.pattern.rule.IRule; +import nc.util.mmf.framework.base.MMArrayUtil; +import nc.vo.mmpsc.pscsettle.entity.AggSettleVO; + +public class MMVOToAPRule implements IRule { + + public MMVOToAPRule(AggSettleVO[] originBills) { + } + + + + public void process(AggSettleVO[] vos) { + if (!MMArrayUtil.isEmpty(vos)) { + (new VOConcurrentTool()).checkTSWithDB(vos[0].getItemVO()); + SettleToAPBP bp = new SettleToAPBP(); + AggSettleVO[] retBills = bp.toAP(vos); + if (retBills.length>0){ + System.out.println(1); + } + + } + } + + protected String getCheckField() { + return null; + } +} From 1b8e919b42139080e314a720e07efa54765ce035 Mon Sep 17 00:00:00 2001 From: lihao Date: Wed, 28 May 2025 15:26:33 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E5=8D=95=E6=8D=AE=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=EF=BC=88=E8=B4=B9=E7=94=A8=E7=AE=A1=E7=90=86=EF=BC=89=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E6=BA=90=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- erm/component.xml | 5 + .../action/billmanage/BillQueryAction.java | 140 ++++++++++++++++++ 2 files changed, 145 insertions(+) create mode 100644 erm/component.xml create mode 100644 erm/src/client/nccloud/web/erm/action/billmanage/BillQueryAction.java diff --git a/erm/component.xml b/erm/component.xml new file mode 100644 index 0000000..e7b647f --- /dev/null +++ b/erm/component.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/erm/src/client/nccloud/web/erm/action/billmanage/BillQueryAction.java b/erm/src/client/nccloud/web/erm/action/billmanage/BillQueryAction.java new file mode 100644 index 0000000..d9dba5a --- /dev/null +++ b/erm/src/client/nccloud/web/erm/action/billmanage/BillQueryAction.java @@ -0,0 +1,140 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package nccloud.web.erm.action.billmanage; + +import com.alibaba.fastjson.JSONObject; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import nc.bs.logging.Log; +import nc.nccloud.util.erm.expenseaccount.Func; +import nc.vo.ep.bx.JKBXHeaderVO; +import nc.vo.ml.NCLangRes4VoTransl; +import nccloud.dto.baseapp.querytree.dataformat.Condition; +import nccloud.dto.baseapp.querytree.dataformat.PageInfo; +import nccloud.dto.baseapp.querytree.dataformat.QueryCondition; +import nccloud.dto.baseapp.querytree.dataformat.QueryTreeFormatVO; +import nccloud.dto.baseapp.querytree.dataformat.Value; +import nccloud.framework.core.exception.ExceptionUtils; +import nccloud.framework.core.json.IJson; +import nccloud.framework.service.ServiceLocator; +import nccloud.framework.web.container.IRequest; +import nccloud.framework.web.json.JsonFactory; +import nccloud.framework.web.ui.model.row.Row; +import nccloud.framework.web.ui.pattern.grid.Grid; +import nccloud.framework.web.ui.pattern.grid.GridOperator; +import nccloud.pubitf.erm.billmanage.IBillManageService; +import nccloud.web.erm.action.lic.AbstractLicAction; +import nccloud.web.erm.util.expenseaccount.initbills.InitBillsUtil; +import org.apache.commons.lang3.StringUtils; + +public class BillQueryAction extends AbstractLicAction { + private Log log = Log.getInstance(this.getClass()); + + public BillQueryAction() { + } + + public Object doRealAction(IRequest request) { + JKBXHeaderVO[] jkbxvos = new JKBXHeaderVO[0]; + Grid grid = new Grid(); + PageInfo pageInfo = null; + + try { + if (request == null) { + ExceptionUtils.wrapBusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("20110011makebill", "020110011makebill-0000")); + } + + IJson json = JsonFactory.create(); + String read = request.read(); + if (StringUtils.isEmpty(read)) { + ExceptionUtils.wrapBusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("20110011makebill", "020110011makebill-0000")); + } + + QueryTreeFormatVO info = (QueryTreeFormatVO)json.fromJson(read, QueryTreeFormatVO.class); + if (null == info) { + ExceptionUtils.wrapBusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("20110011makebill", "020110011makebill-0000")); + } + + if (info.getUserdefObj() != null) { + QueryCondition queryCon = new QueryCondition(); + List conditions = new ArrayList(); + + for(Map.Entry entry : info.getUserdefObj().entrySet()) { + Condition con = new Condition(); + con.setField((String)entry.getKey()); + Value value = new Value(); + value.setFirstvalue((String)entry.getValue()); + con.setValue(value); + conditions.add(con); + } + + queryCon.setConditions(conditions); + info.setQuerycondition(queryCon); + } + + IBillManageService billManageService = (IBillManageService)ServiceLocator.find(IBillManageService.class); + String[] pks = null; + if (info.getQuerycondition() != null) { + jkbxvos = (JKBXHeaderVO[])billManageService.queryBillInfoByPage(info).toArray(jkbxvos); + } else { + ExceptionUtils.wrapBusinessException("璇蜂紶鍏ユ煡璇㈡潯浠"); + } + + if (jkbxvos == null || jkbxvos.length == 0) { + return null; + } + + pks = new String[jkbxvos.length]; + + for(int i = 0; i < jkbxvos.length; ++i) { + if (jkbxvos[i] != null) { + pks[i] = jkbxvos[i].getPk_jkbx(); + } + } + + GridOperator go = new GridOperator("201104DJCX_LIST"); + grid = go.toGrid(jkbxvos); + InitBillsUtil.proGridDigit(grid); + this.proGridDjztAndSpr(grid, pks); + pageInfo = info.getPageInfo(); + } catch (Exception e) { + this.log.error(e); + ExceptionUtils.wrapException(e); + } + + JSONObject jsonObj = new JSONObject(); + jsonObj.put("pageInfo", pageInfo); + jsonObj.put("data", grid); + return jsonObj; + } + + private void proGridDjztAndSpr(Grid grid, String[] pks) throws Exception { + IBillManageService service = (IBillManageService)ServiceLocator.find(IBillManageService.class); + Map busiid_username = service.qryCurApproveman(Arrays.asList(pks)); + Row[] rows = grid.getModel().getRows(); + + for(int i = 0; i < rows.length; ++i) { + String pk_billtype = Func.toString(rows[i].getCell("pk_billtype").getValue()); + String djlxbm = Func.toString(rows[i].getCell("djlxbm").getValue()); + if (!"264a".equalsIgnoreCase(djlxbm) && !"261X".equalsIgnoreCase(pk_billtype) && !"262X".equalsIgnoreCase(pk_billtype)) { + if ("3".equals(Func.toString(rows[i].getCell("djzt").getValue()))) { + rows[i].getCell("djzt").setDisplay(NCLangRes4VoTransl.getNCLangRes().getStrByID("20110012billmanage", "020110012billmanage-0002")); + } + } else if ("3".equals(Func.toString(rows[i].getCell("djzt").getValue()))) { + rows[i].getCell("djzt").setDisplay(NCLangRes4VoTransl.getNCLangRes().getStrByID("20110012billmanage", "020110012billmanage-0000")); + } + + if (busiid_username != null && busiid_username.size() > 0) { + String pk_jkbx = Func.toString(rows[i].getCell("pk_jkbx").getValue()); + if (!StringUtils.isEmpty((CharSequence)busiid_username.get(pk_jkbx))) { + rows[i].getCell("approver").setDisplay((String)busiid_username.get(pk_jkbx)); + } + } + } + + } +} From 508996fb3d4a769bcddefbc048a2e71e9a610447 Mon Sep 17 00:00:00 2001 From: maolei Date: Wed, 28 May 2025 16:13:27 +0800 Subject: [PATCH 4/8] =?UTF-8?q?uapbd:=20BOM=E6=96=B0=E5=A2=9E=E6=97=B6,?= =?UTF-8?q?=E7=94=B5=E7=BC=86=E7=BB=84=E7=BB=87=E9=87=91=E6=80=9D=E7=BB=B4?= =?UTF-8?q?BOM=E7=89=88=E6=9C=AC=E5=8F=B7=E8=87=AA=E5=8A=A8=E8=AE=A1?= =?UTF-8?q?=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 鏂板澶勭悊鐢电紗缁勭粐閲戞濈淮BOM鐗堟湰鍙风殑鏂规硶 - 鍒ゆ柇鏄惁涓虹數缂嗙粍缁囦笖澶囨敞鍖呭惈閲戞濈淮 - 璁$畻BOM鐗堟湰鍙峰苟鏇存柊鍒癇OM涓昏〃 --- .../mmbd/bom/APIBomBusinessServiceImpl.java | 135 ++++++++++++++---- 1 file changed, 109 insertions(+), 26 deletions(-) diff --git a/uapbd/src/private/nccloud/api/impl/mmbd/bom/APIBomBusinessServiceImpl.java b/uapbd/src/private/nccloud/api/impl/mmbd/bom/APIBomBusinessServiceImpl.java index 86fbae3..30ccfcd 100644 --- a/uapbd/src/private/nccloud/api/impl/mmbd/bom/APIBomBusinessServiceImpl.java +++ b/uapbd/src/private/nccloud/api/impl/mmbd/bom/APIBomBusinessServiceImpl.java @@ -1,21 +1,15 @@ package nccloud.api.impl.mmbd.bom; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.stream.Collectors; -import java.util.stream.Stream; +import nc.bs.dao.BaseDAO; import nc.bs.framework.common.InvocationInfoProxy; import nc.bs.framework.common.NCLocator; import nc.itf.bd.bom.bom0202.IBomBillMaintainService; import nc.itf.bd.bom.bom0202.IBomBillQueryService; -import nc.itf.bd.bom.bom0202.IBomBusinessService; import nc.itf.mmf.busi.measure.IMeasesureService; import nc.itf.uif.pub.IUifService; +import nc.jdbc.framework.SQLParameter; +import nc.jdbc.framework.processor.ColumnProcessor; import nc.mmbd.utils.factoryparam.MMBDFactoryParameter; import nc.pubitf.uapbd.IMaterialPubService; import nc.pubitf.uapbd.IMaterialPubService_C; @@ -27,23 +21,8 @@ import nc.util.mmf.busi.measure.MeasureVO; import nc.util.mmf.busi.measure.NumScaleUtil; import nc.util.mmf.busi.service.OrgUnitPubService; import nc.util.mmf.framework.base.MMValueCheck; -import nc.vo.bd.bom.bom0202.entity.AggBomVO; -import nc.vo.bd.bom.bom0202.entity.BomActivityVO; -import nc.vo.bd.bom.bom0202.entity.BomItemSourceVO; -import nc.vo.bd.bom.bom0202.entity.BomItemVO; -import nc.vo.bd.bom.bom0202.entity.BomLossVO; -import nc.vo.bd.bom.bom0202.entity.BomOutputsVO; -import nc.vo.bd.bom.bom0202.entity.BomPosVO; -import nc.vo.bd.bom.bom0202.entity.BomReplVO; -import nc.vo.bd.bom.bom0202.entity.BomSelectVO; -import nc.vo.bd.bom.bom0202.entity.BomUseOrgVO; -import nc.vo.bd.bom.bom0202.entity.BomVO; -import nc.vo.bd.bom.bom0202.entity.BomWipVO; -import nc.vo.bd.bom.bom0202.enumeration.BackflushTimeEnum; -import nc.vo.bd.bom.bom0202.enumeration.BackflushTypeEnum; -import nc.vo.bd.bom.bom0202.enumeration.BomCategoryEnum; -import nc.vo.bd.bom.bom0202.enumeration.BomTypeEnum; -import nc.vo.bd.bom.bom0202.enumeration.VersionTypeEnum; +import nc.vo.bd.bom.bom0202.entity.*; +import nc.vo.bd.bom.bom0202.enumeration.*; import nc.vo.bd.bom.bom0202.paramvo.BomHeadMtrlParam; import nc.vo.bd.bom.bom0202.paramvo.BomHeadMtrlResult; import nc.vo.bd.bom.bom0202.paramvo.BomMaterialParam; @@ -67,7 +46,15 @@ import nccloud.api.rest.utils.ResultMessageUtil; import nccloud.vo.bd.bom.bom0202.validate.BomSavingValidation; import org.json.JSONString; +import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.Stream; + public class APIBomBusinessServiceImpl implements IAPIBomBusinessService { + + // 2025年5月28日 电缆组织金思维BOM版本号自动计算处理 + private static final BaseDAO DAO = new BaseDAO(); + private static String HEADTABLE = "bd_bom"; private static String BODYTABLE = "bd_bom_b"; @@ -155,6 +142,10 @@ public class APIBomBusinessServiceImpl implements IAPIBomBusinessService { } // zhangxinah 对物料主键进行翻译 dealWithMaterial(agg); + + // 2025年5月28日 电缆组织金思维BOM版本号自动计算处理 By maolei + handleCableOrgJinSiWeiBomVersion(agg); + dataSupplement(agg, userCode); UFBoolean flag = (UFBoolean) agg.getParent().getAttributeValue("hbdefault"); @@ -1526,4 +1517,96 @@ public class APIBomBusinessServiceImpl implements IAPIBomBusinessService { item.setPk_useorg_v((String) agg.getParentVO().getAttributeValue("pk_org_v")); } } + + + private void handleCableOrgJinSiWeiBomVersion(AggBomVO agg) { + try { + String pk_org = (String) agg.getParent().getAttributeValue("pk_org"); + String hcmaterialid = (String) agg.getParent().getAttributeValue("hcmaterialid"); + String hversion = agg.getParent().getAttributeValue("hversion").toString(); + String cbomid = (String) agg.getParent().getAttributeValue("cbomid"); + String hvnote = (String) agg.getParent().getAttributeValue("hvnote"); + + // 检查必要字段 + if (MMValueCheck.isEmpty(hcmaterialid) || MMValueCheck.isEmpty(hversion)) { + return; + } + + // 判断是否为电缆组织(组织编码C034)且备注包含"金思维" + boolean isCableOrgJinSiWei = isCableOrganizationWithJinSiWei(pk_org, hvnote); + + if (isCableOrgJinSiWei) { + // 计算版本号 + String calculatedVersion = calculateBomVersion(pk_org, hcmaterialid ); + agg.getParent().setAttributeValue("hversion", calculatedVersion); + } + } catch (Exception e) { + ExceptionUtils.wrappBusinessException("同步电缆组织金思维BOM版本号处理异常:" + e.getMessage()); + } + } + + /** + * 判断是否为电缆组织且备注包含金思维 + * @param pk_org 组织主键 + * @param hvnote 备注信息 + * @return 是否符合条件 + */ + private boolean isCableOrganizationWithJinSiWei(String pk_org, String hvnote) { + if (MMValueCheck.isEmpty(pk_org)) { + return false; + } + + try { + // 查询组织编码 + String sql = "SELECT code FROM org_orgs WHERE pk_org = ?"; + SQLParameter param = new SQLParameter(); + param.addParam(pk_org); + String orgCode = (String) DAO.executeQuery(sql, param, new ColumnProcessor()); + + // 判断组织编码是否为C034 + boolean isCableOrg = "C034".equals(orgCode); + + // 判断备注是否包含"金思维" + boolean containsJinSiWei = MMValueCheck.isNotEmpty(hvnote) && hvnote.contains("金思维"); + + return isCableOrg && containsJinSiWei; + } catch (Exception e) { + // 查询异常时返回false + return false; + } + } + + /** + * 计算BOM版本号 + * @param pk_org 组织主键 + * @param hcmaterialid 物料编码 + * @return 计算出的版本号 + */ + private String calculateBomVersion(String pk_org, String hcmaterialid ) throws BusinessException { + try { + // 构建查询条件 + StringBuilder sql = new StringBuilder(); + sql.append("SELECT MAX(TO_NUMBER(hversion)) as max_version "); + sql.append("FROM bd_bom "); + sql.append("WHERE pk_org = ? "); + + SQLParameter param = new SQLParameter(); + param.addParam(pk_org); + + // 根据物料情况添加查询条件 + sql.append("AND hcmaterialid = ? "); + param.addParam(hcmaterialid); + + // 只查询数字版本号,排除非数字版本 + sql.append("AND REGEXP_LIKE(hversion, '^[0-9]+$') "); + + Long maxVersion = (Long) DAO.executeQuery(sql.toString(), param, new ColumnProcessor()); + + // 如果查询不到数据,默认版本号为1;否则最大版本号加1 + return String.valueOf((maxVersion != null ? maxVersion : 0) + 1); + + } catch (Exception e) { + throw new BusinessException("计算BOM版本号异常:" + e.getMessage()); + } + } } From d75b27399e02edef644196f7de91fd57b2a6de5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=AD=A3=40=E7=94=A8=E5=8F=8B?= Date: Wed, 28 May 2025 16:28:48 +0800 Subject: [PATCH 5/8] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E6=8A=A5=E5=91=8A?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E5=AE=A1=E6=89=B9=E6=8E=A5=E5=8F=A3=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../public/nccloud/openapi/mmpac/wr/WrResource.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/mmpac/src/public/nccloud/openapi/mmpac/wr/WrResource.java b/mmpac/src/public/nccloud/openapi/mmpac/wr/WrResource.java index e05334f..e291e10 100644 --- a/mmpac/src/public/nccloud/openapi/mmpac/wr/WrResource.java +++ b/mmpac/src/public/nccloud/openapi/mmpac/wr/WrResource.java @@ -136,6 +136,17 @@ public class WrResource extends AbstractNCCRestResource { vo.setChildren(WrItemVO.class, items.toArray(new WrItemVO[0])); voList.add(vo); IAPIWrMaintain server = NCLocator.getInstance().lookup(IAPIWrMaintain.class); + List aggWrVOS = TransferCodeToPKTool.transferAggVO(voList); + //翻译报告类型 + BaseDAO baseDAO = new BaseDAO(); + for (AggWrVO aggWrVO : aggWrVOS) { + List collection = (List) baseDAO.retrieveByClause(BilltypeVO.class, " pk_billtypecode='" + aggWrVO.getParentVO().getVtrantypecode() + "'"); + if(collection==null||collection.size()==0){ + throw new BusinessException("翻译报告类型失败,检查报告类型编码【"+aggWrVO.getParentVO().getVtrantypecode()+"】"); + } + aggWrVO.getParentVO().setVtrantypeid(collection.get(0).getPk_billtypeid()); + aggWrVO.getParentVO().setDbilldate(new UFDate()); + } AggWrVO[] aggvos = server.saveAndApprove(voList.toArray(new AggWrVO[0])); boolean successFlag = true; StringBuilder errMsg = new StringBuilder(); From d83974d94b69109c5c144a824231ee3426ba9737 Mon Sep 17 00:00:00 2001 From: mzr Date: Wed, 28 May 2025 17:57:59 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E5=AE=9A=E6=97=B6=E5=9B=9E=E5=86=99BIP?= =?UTF-8?q?=E9=94=80=E5=94=AE=E8=AE=A2=E5=8D=95=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ErpSaleOrderToBIPBackgroupWorkPlugin.java | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/uapbd/src/private/nc/bs/uapbd/bip/workplugin/ErpSaleOrderToBIPBackgroupWorkPlugin.java b/uapbd/src/private/nc/bs/uapbd/bip/workplugin/ErpSaleOrderToBIPBackgroupWorkPlugin.java index 5e39968..5a7efe2 100644 --- a/uapbd/src/private/nc/bs/uapbd/bip/workplugin/ErpSaleOrderToBIPBackgroupWorkPlugin.java +++ b/uapbd/src/private/nc/bs/uapbd/bip/workplugin/ErpSaleOrderToBIPBackgroupWorkPlugin.java @@ -125,22 +125,7 @@ public class ErpSaleOrderToBIPBackgroupWorkPlugin implements IBackgroundWorkPlug // 获取未推送合同销售订单更新的销售发票信息; - String sql = " select '1' as flag,so_saleinvoice_b.cfirstbid,csaleinvoicebid " + - "from so_saleinvoice,so_saleinvoice_b " + - "where so_saleinvoice.csaleinvoiceid=so_saleinvoice_b.csaleinvoiceid " + - "and so_saleinvoice.fstatusflag=2 " + - "and nvl(so_saleinvoice_b.vbdef10,'N') in ('~','N') " + - "and nvl(so_saleinvoice.vdef13,'~') not in ('~') " + - "union all " + - "select " + - "'2' as flag, " + - "ic_saleout_b.cfirstbillbid as cfirstbid, " + - "ic_saleout_b.cgeneralbid as csaleinvoicebid " + - "from ic_saleout_h, " + - "ic_saleout_b " + - "where ic_saleout_h.cgeneralhid = ic_saleout_b.cgeneralhid " + - "and nvl(ic_saleout_b.vbdef4,'N') in ('~','N') " + - "and ic_saleout_b.cfirsttype = '30'"; + String sql = " select * from v_bip_so_cron"; List> l_pk = (List>) new BaseDAO().executeQuery(sql.toString(), new MapListProcessor()); if (l_pk.isEmpty()) { From 1d534fd13a98749f1ca0aacdb6ab0b45c0d30ddd Mon Sep 17 00:00:00 2001 From: mzr Date: Wed, 28 May 2025 18:40:25 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E5=90=88=E5=90=8C=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E4=BF=AE=E6=94=B9ERP=E9=94=80=E5=94=AE?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=98=8E=E7=BB=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../openapi/so/m30/SaleOrderResource.java | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/so/src/public/nccloud/openapi/so/m30/SaleOrderResource.java b/so/src/public/nccloud/openapi/so/m30/SaleOrderResource.java index 9a29d48..44b1aac 100644 --- a/so/src/public/nccloud/openapi/so/m30/SaleOrderResource.java +++ b/so/src/public/nccloud/openapi/so/m30/SaleOrderResource.java @@ -508,4 +508,47 @@ public class SaleOrderResource extends NCCPubRestResource { } } + /** + * 合同管理系统修改ERP销售订单明细 + * + * @author mzr + * @date 2025/05/28 + */ + @POST + @Path("updateDefs") + @Consumes({"application/json"}) + @Produces({"application/json"}) + public JSONString updateDefs(List> paramList) { + int num = 0; + try { + for (Map paramMap : paramList) { + String csaleorderbid = (String) paramMap.get("csaleorderbid"); + if (StringUtils.isEmpty(csaleorderbid)) { + return ResultMessageUtil.exceptionToJSON("传入参数为空,请检查", APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } + StringBuilder sql = new StringBuilder("update so_saleorder_b set "); + SQLParameter parameter = new SQLParameter(); + for (Map.Entry 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 = ?"); + parameter.addParam(csaleorderbid); + BaseDAO baseDAO = new BaseDAO(); + num += baseDAO.executeUpdate(sql.toString(), parameter); + } + } catch (Exception e) { + return ResultMessageUtil.exceptionToJSON(e); + } + return ResultMessageUtil.toJSON(num, "销售订单修改成功,共修改" + num + "行"); + + } + } From e2be42eacecda5f06510fd172182542acc6f7c5b Mon Sep 17 00:00:00 2001 From: mzr Date: Wed, 28 May 2025 19:49:24 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E9=94=80=E5=94=AE=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8E=A5=E5=8F=A3=E8=B0=83=E6=95=B4=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E7=89=A9=E6=96=99=E8=A1=8C=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/so/m30/APISaleOrderMaitainImpl.java | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java b/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java index ac275d6..a5bf14b 100644 --- a/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java +++ b/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java @@ -320,17 +320,24 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain { if (null == originVos || originVos.length == 0) { ExceptionUtils.wrappBusinessException("根据传入数据未匹配到相关数据"); } - Map delMap = new HashMap<>(); + Map> delBipMap = new HashMap<>(); for (Map objectMap : paramList) { Map headdata = (Map) objectMap.get(HEADTABLE); - delMap.put(headdata.get("csaleorderid") + "", headdata.getOrDefault("delId", "") + ""); + String csaleorderid = headdata.get("csaleorderid") + ""; List bodyArr = (List) objectMap.get(BODYTABLE); + List delIds = new ArrayList<>(); for (Object body : bodyArr) { Map bodydata = (Map) body; if ((bodydata.getOrDefault("vbdef11", "") + "").isEmpty()) { // 如果vbdef11为空则标记为新增行 bodydata.put("status", "add"); } + if (!(bodydata.getOrDefault("csaleorderbid", "") + "").isEmpty()) { + delIds.add(bodydata.get("csaleorderbid") + ""); + } + } + if (!delIds.isEmpty()) { + delBipMap.put(csaleorderid, delIds); } } @@ -356,20 +363,17 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain { SaleOrderVO bipVo = vosMap.get(primaryKey); // 设置单据状态 hvo.setStatus(VOStatus.UPDATED); - String delId = delMap.get(primaryKey); + List bipIds = delBipMap.get(primaryKey); // 比较combinBillVOs中的BVO和vos中的BVO for (SaleOrderBVO bvo : vo.getChildrenVO()) { - bvo.setStatus(VOStatus.UPDATED); + bvo.setStatus(VOStatus.DELETED); String csaleorderbid = bvo.getCsaleorderbid(); - // 设置删除的物料行的状态,在bip传的数据中找不到 - if (StringUtils.isNotEmpty(delId)) { - String[] delIds = delId.split(",", -1); - String vbdef11 = bvo.getVbdef11(); - // 如果BIP合同销售订单的主键在删除的数组中,则设置为删除状态 - if (Arrays.asList(delIds).contains(vbdef11)) { - bvo.setStatus(VOStatus.DELETED); - NCCForUAPLogger.debug("findDeletedBids:" + VOStatus.DELETED + ",csaleorderbid = " + csaleorderbid); + // 设置物料行的状态,在bip传的数据中找到则修改 + if (bipIds != null && !bipIds.isEmpty()) { + // 明细行设置为修改状态 + if (bipIds.contains(csaleorderbid)) { + bvo.setStatus(VOStatus.UPDATED); } } }