From 46bd2e52edc02c24aeaaa6661c837701d35839f3 Mon Sep 17 00:00:00 2001 From: mzr Date: Mon, 21 Jul 2025 11:30:34 +0800 Subject: [PATCH] =?UTF-8?q?=E9=94=80=E5=94=AE=E8=AE=A2=E5=8D=95=E6=96=B0?= =?UTF-8?q?=E5=A2=9E-=E8=87=AA=E5=AE=9A=E4=B9=89=E6=A1=A3=E6=A1=88?= =?UTF-8?q?=E8=B0=83=E6=95=B4-liz?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../openapi/so/m30/SaleOrderResource.java | 148 +++++++++++++++--- 1 file changed, 124 insertions(+), 24 deletions(-) diff --git a/so/src/public/nccloud/openapi/so/m30/SaleOrderResource.java b/so/src/public/nccloud/openapi/so/m30/SaleOrderResource.java index f22a9f7..b93e24b 100644 --- a/so/src/public/nccloud/openapi/so/m30/SaleOrderResource.java +++ b/so/src/public/nccloud/openapi/so/m30/SaleOrderResource.java @@ -4,10 +4,10 @@ import nc.bd.itf.tools.BFPubTools; import nc.bs.dao.BaseDAO; import nc.bs.framework.common.InvocationInfoProxy; import nc.bs.framework.common.NCLocator; +import nc.bs.logging.Log; 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; import nc.vo.bd.defdoc.DefdocVO; @@ -15,13 +15,14 @@ import nc.vo.pim.project.ProjectHeadVO; import nc.vo.pub.BusinessException; import nc.vo.pub.lang.UFDateTime; import nc.vo.pubapp.AppContext; +import nc.vo.so.m30.entity.SaleOrderBVO; +import nc.vo.so.m30.entity.SaleOrderHVO; import nc.vo.so.m30.entity.SaleOrderVO; import nc.ws.opm.pub.utils.result.APIErrCodeEnum; 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; @@ -33,9 +34,7 @@ import javax.ws.rs.Consumes; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import java.util.*; /** @@ -45,7 +44,7 @@ import java.util.Map; @Path("so/saleorder") public class SaleOrderResource extends NCCPubRestResource { - + private static Log log = Log.getInstance("biptonccsaleorder"); private static String BODYTABLE = "so_saleorder_b"; private static String HEADTABLE = "so_saleorder"; public BaseDAO dao; @@ -134,7 +133,9 @@ public class SaleOrderResource extends NCCPubRestResource { } // 新增自定义档案 SaleOrderVO[] salevos = OpenAPIParaUtil.changeVO(paramList, HEADTABLE, BODYTABLE); - genDef(salevos); + log.error("销售订单根据自定义项创建档案开始-----------------------"); + List defdocVOS = genDef(salevos); + for (Map map : paramList) { BaseDAO baseDAO = new BaseDAO(); Map headdata = (Map) map.get(HEADTABLE); @@ -149,21 +150,104 @@ public class SaleOrderResource extends NCCPubRestResource { // 参数形式转换为vo并翻译 List vosList = TransferMapToVOTool.transferMapToAggVO(paramList, SaleOrderVO.class); + //根据返回的defdocVOS先行翻译 + if(defdocVOS!=null && defdocVOS.size()>0){ + Map> deflist_map = new HashMap<>(); + for(DefdocVO defdocVO : defdocVOS){ + String pkDefdoclist = defdocVO.getPk_defdoclist(); + String code = defdocVO.getCode(); + String pkDefdoc = defdocVO.getPk_defdoc(); + log.error("销售订单保存接口:档案列表编号【"+pkDefdoclist+"】,档案编号【"+code+"】,档案主键【"+pkDefdoc+"】"); + if(deflist_map.containsKey(pkDefdoclist)){ + Map stringStringMap = deflist_map.get(pkDefdoclist); + if(!stringStringMap.containsKey(code)){ + stringStringMap.put(code, pkDefdoc); + } + }else{ + Map code_DefdocMap = new HashMap<>(); + code_DefdocMap.put(code, pkDefdoc); + deflist_map.put(pkDefdoclist, code_DefdocMap); + } + } + for(SaleOrderVO saleOrderVO : vosList){ + SaleOrderHVO parentVO = saleOrderVO.getParentVO(); + String vdef6 = BFPubTools.getString_TrimAsNull(parentVO.getVdef6()); + String vdef2 = BFPubTools.getString_TrimAsNull(parentVO.getVdef2()); + String vdef13 = BFPubTools.getString_TrimAsNull(parentVO.getVdef13()); + if (vdef6 != "") { + Map stringStringMap = deflist_map.get("zdy-001"); + if(stringStringMap!=null&&stringStringMap.size()>0){ + String defpk = stringStringMap.get(vdef6); + if(defpk!=null){ + parentVO.setVdef6(defpk); + } + } + } + if (vdef2 != "") { + Map stringStringMap = deflist_map.get("BQxmh"); + if(stringStringMap!=null&&stringStringMap.size()>0){ + String defpk = stringStringMap.get(vdef2); + if(defpk!=null){ + parentVO.setVdef2(defpk); + } + } + } + if (vdef13 != "") { + Map stringStringMap = deflist_map.get("BIP-ddh"); + if(stringStringMap!=null&&stringStringMap.size()>0){ + String defpk = stringStringMap.get(vdef13); + if(defpk!=null){ + parentVO.setVdef13(defpk); + } + } + } + //表体自定义项翻译--vbdef1值与vdef6相同,vbdef5与vdef13相同 + SaleOrderBVO[] childrenVO = saleOrderVO.getChildrenVO(); + for(SaleOrderBVO saleOrderBVO : saleOrderVO.getChildrenVO()){ + String vbdef1 = saleOrderBVO.getVbdef1(); + Map zdy_001 = deflist_map.get("zdy-001"); + if(zdy_001!=null&&zdy_001.size()>0){ + String defpk = zdy_001.get(vbdef1); + if(defpk!=null){ + saleOrderBVO.setVbdef1(defpk); + } + } + String vbdef5 = saleOrderBVO.getVbdef5(); + Map bip_ddh = deflist_map.get("BIP-ddh"); + if(bip_ddh!=null&&bip_ddh.size()>0){ + String defpk = bip_ddh.get(vbdef5); + if(defpk!=null){ + saleOrderBVO.setVbdef5(defpk); + } + } + } + } + }else{ + log.error("销售订单保存接口:新增/已存在的档案没有,可能json自定义项无值"); + } + //翻译前打印各个档案值 + for (SaleOrderVO saleOrderVO : vosList) { + SaleOrderHVO parentVO = saleOrderVO.getParentVO(); + log.error("销售订单保存接口:vdef6【"+parentVO.getVdef6()+"】,vdef2【"+parentVO.getVdef2()+"】,vdef13【"+parentVO.getVdef13()+"】"); + } vosList = TransferCodeToPKTool.transferAggVO(vosList); SaleOrderVO[] vos = vosList.toArray(new SaleOrderVO[vosList.size()]); // 调用接口保存 IAPISaleOrderMaitain service = NCLocator.getInstance().lookup(IAPISaleOrderMaitain.class); SaleOrderVO[] results = service.save(vos); + log.error("销售订单根据自定义项创建档案结束-----------------------"); // 包装返回信息 return NCCRestUtils.toJSONString(CallReturnBuildUtil.buildSuccessResult(results, "销售订单保存成功")); } catch (Exception e) { + log.error("销售订单根据自定义项创建档案结束-----------------------"); return NCCRestUtils.toJSONString(CallReturnBuildUtil.buildFailResult(null, "销售单保存异常:" + e.getMessage())); } } - private void genDef(SaleOrderVO[] salevos) throws BusinessException { + private List genDef(SaleOrderVO[] salevos) throws BusinessException { BaseDAO baseDAO = new BaseDAO(); + List allDefDoc = new ArrayList(); ArrayList arrhth = new ArrayList(); ArrayList arrxmh = new ArrayList(); ArrayList arrxsddh = new ArrayList(); @@ -204,46 +288,62 @@ public class SaleOrderResource extends NCCPubRestResource { } if (arrhth.size() > 0) { - sql = " select code from bd_defdoc where pk_defdoclist in(select pk_defdoclist from bd_defdoclist where code='zdy-001') and pk_org='" + o + "' and "; + sql = " pk_defdoclist in(select pk_defdoclist from bd_defdoclist where code='zdy-001') and pk_org='" + o + "' and "; sql += BFPubTools.getInSqlWithOutAnd("code", arrhth, 0, arrhth.size()); - ArrayList obj_arrhth = (ArrayList) baseDAO.executeQuery(sql, new ColumnListProcessor()); +// ArrayList obj_arrhth = (ArrayList) baseDAO.executeQuery(sql, new ColumnListProcessor()); + List obj_arrhth = (List) dao.retrieveByClause(DefdocVO.class, sql); if (obj_arrhth != null && obj_arrhth.size() > 0) { - arrhth.removeAll(obj_arrhth); + List defCode=new ArrayList<>(); + obj_arrhth.stream().forEach(defdoc -> {defdoc.setPk_defdoclist("zdy-001");defCode.add(defdoc.getCode());}); + arrhth.removeAll(defCode); + allDefDoc.addAll(obj_arrhth); } } // 组装销售订单数据 if (arrhth.size() > 0) { - NCLocator.getInstance().lookup(IDefdocService.class).insertDefdocs(o, createDefVO(arrhth, "zdy-001", o.toString())); + DefdocVO[] defdocVOS = NCLocator.getInstance().lookup(IDefdocService.class).insertDefdocs(o, createDefVO(arrhth, "zdy-001", o.toString())); + Arrays.stream(defdocVOS).forEach(defdoc -> defdoc.setPk_defdoclist("zdy-001")); + allDefDoc.addAll(Arrays.asList(defdocVOS)); } if (arrxmh.size() > 0) { - sql = " select code from bd_defdoc where pk_defdoclist in(select pk_defdoclist from bd_defdoclist where code='BQxmh') and pk_org='" + o + "' and "; + sql = " pk_defdoclist in(select pk_defdoclist from bd_defdoclist where code='BQxmh') and pk_org='" + o + "' and "; sql += BFPubTools.getInSqlWithOutAnd("code", arrxmh, 0, arrxmh.size()); - ArrayList obj_arrhth = (ArrayList) baseDAO.executeQuery(sql, new ColumnListProcessor()); - +// ArrayList obj_arrhth = (ArrayList) baseDAO.executeQuery(sql, new ColumnListProcessor()); + List obj_arrhth = (List) dao.retrieveByClause(DefdocVO.class, sql); if (obj_arrhth != null && obj_arrhth.size() > 0) { - - arrxmh.removeAll(obj_arrhth); + List defCode=new ArrayList<>(); + obj_arrhth.stream().forEach(defdoc -> {defdoc.setPk_defdoclist("BQxmh");defCode.add(defdoc.getCode());}); + arrxmh.removeAll(defCode); + allDefDoc.addAll(obj_arrhth); } } if (arrxmh.size() > 0) { - NCLocator.getInstance().lookup(IDefdocService.class).insertDefdocs(o, createDefVO(arrxmh, "BQxmh", o.toString())); + DefdocVO[] defdocVOS = NCLocator.getInstance().lookup(IDefdocService.class).insertDefdocs(o, createDefVO(arrxmh, "BQxmh", o.toString())); + Arrays.stream(defdocVOS).forEach(defdoc -> defdoc.setPk_defdoclist("BQxmh")); + allDefDoc.addAll(Arrays.asList(defdocVOS)); } if (arrxsddh.size() > 0) { - sql = " select code from bd_defdoc where pk_defdoclist in( select pk_defdoclist from bd_defdoclist where code='BIP-ddh') and pk_org='" + o + "' and "; + sql = " pk_defdoclist in( select pk_defdoclist from bd_defdoclist where code='BIP-ddh') and pk_org='" + o + "' and "; sql += BFPubTools.getInSqlWithOutAnd("code", arrxsddh, 0, arrxsddh.size()); - ArrayList obj_arrhth = (ArrayList) baseDAO.executeQuery(sql, new ColumnListProcessor()); +// ArrayList obj_arrhth = (ArrayList) baseDAO.executeQuery(sql, new ColumnListProcessor()); + List obj_arrhth = (List) dao.retrieveByClause(DefdocVO.class, sql); if (obj_arrhth != null && obj_arrhth.size() > 0) { - arrxsddh.removeAll(obj_arrhth); + List defCode=new ArrayList<>(); + obj_arrhth.stream().forEach(defdoc -> {defdoc.setPk_defdoclist("BIP-ddh");defCode.add(defdoc.getCode());}); + arrxsddh.removeAll(defCode); + allDefDoc.addAll(obj_arrhth); } } if (arrxsddh.size() > 0) { - NCLocator.getInstance().lookup(IDefdocService.class).insertDefdocs(o, createDefVO(arrxsddh, "BIP-ddh", o.toString())); + DefdocVO[] defdocVOS = NCLocator.getInstance().lookup(IDefdocService.class).insertDefdocs(o, createDefVO(arrxsddh, "BIP-ddh", o.toString())); + Arrays.stream(defdocVOS).forEach(defdoc -> defdoc.setPk_defdoclist("BIP-ddh")); + allDefDoc.addAll(Arrays.asList(defdocVOS)); } - + return allDefDoc; } private void createPro(String cprocode, String cproname, Map map) throws BusinessException { @@ -499,7 +599,7 @@ public class SaleOrderResource extends NCCPubRestResource { // 删除最后的", " sql.delete(sql.length() - 2, sql.length()); sql.append(" where csaleorderbid = ?"); - NCCForUAPLogger.debug("updateDef-sql:" + sql); + // NCCForUAPLogger.debug("updateDef-sql:" + sql); parameter.addParam(csaleorderbid); BaseDAO baseDAO = new BaseDAO(); // 修改销售订单子表