合并其它git仓库的SaleOrderResource代码
This commit is contained in:
		
							parent
							
								
									865f7d0a7b
								
							
						
					
					
						commit
						b210ccafd0
					
				|  | @ -13,8 +13,10 @@ import nc.jdbc.framework.processor.MapProcessor; | |||
| import nc.vo.bd.defdoc.DefdocVO; | ||||
| import nc.vo.pim.project.ProjectHeadVO; | ||||
| import nc.vo.pub.BusinessException; | ||||
| import nc.vo.pub.lang.UFBoolean; | ||||
| import nc.vo.pub.lang.UFDateTime; | ||||
| import nc.vo.pubapp.AppContext; | ||||
| import nc.vo.pubapp.pattern.pub.SqlBuilder; | ||||
| import nc.vo.so.m30.entity.SaleOrderBVO; | ||||
| import nc.vo.so.m30.entity.SaleOrderHVO; | ||||
| import nc.vo.so.m30.entity.SaleOrderVO; | ||||
|  | @ -110,19 +112,43 @@ public class SaleOrderResource extends NCCPubRestResource { | |||
|                 headdata.put("ccustomervid", headdata.get("ccustomerid")); | ||||
|                 String pk_group = AppContext.getInstance().getPkGroup(); | ||||
|                 headdata.put("pk_group", pk_group); | ||||
|                 //add by hanwl 20250729 部分组织,表体结算财务组织和应收组织需要取销售业务委托关系 | ||||
|                 //add by hanwl 20250729 根据销售组织编码去视图V_SALEORG_RELATIONS查询数据,如果有数据, | ||||
|                 // 则取数据中的结算组织,应收组织,否则取销售组织 start | ||||
|                 String org_code = headdata.get("pk_org_v")+""; | ||||
|                 Map<String,String> relMap = this.getSaleorgRelations(org_code); | ||||
|                 String settleorg_code = org_code;//初始化结算组织编码为销售组织编码 | ||||
|                 String arorg_code = org_code;//初始化应收组织编码为销售组织编码 | ||||
|                 if(relMap!=null){ | ||||
|                     String tempsettleorg_code = relMap.get("settleorg_code"); | ||||
|                     if(StringUtils.isNotBlank(tempsettleorg_code)){ | ||||
|                         settleorg_code = tempsettleorg_code; | ||||
|                     } | ||||
|                     String temparorg_code = relMap.get("arorg_code"); | ||||
|                     if(StringUtils.isNotBlank(temparorg_code)){ | ||||
|                         arorg_code = temparorg_code; | ||||
|                     } | ||||
| 
 | ||||
|                 } | ||||
|                 //add by hanwl 20250729 根据销售组织编码去视图V_SALEORG_RELATIONS查询数据,如果有数据, | ||||
|                 // 则取数据中的结算组织,应收组织,否则取销售组织 end | ||||
|                 List<Object> bodyArr = (List<Object>) map.get(BODYTABLE); | ||||
|                 for (Object body : bodyArr) { | ||||
|                     Map<String, Object> bodydata = (Map<String, Object>) body; | ||||
|                     bodydata.put("pk_group", pk_group); | ||||
|                     bodydata.put("cprojectid", headdata.get("vdef6")); | ||||
| //                    bodydata.put("cprojectid", headdata.get("vdef6")); | ||||
|                     // bodydata.put("ctrafficorgvid", headdata.get("pk_org_v")); | ||||
|                     bodydata.put("csendstockorgvid", headdata.get("pk_org_v")); | ||||
|                     // bodydata.put("csendstordocid", headdata.get("pk_org_v")); | ||||
|                     bodydata.put("csendstockorgid", headdata.get("pk_org_v")); | ||||
|                     bodydata.put("carorgid", headdata.get("pk_org_v")); | ||||
|                     bodydata.put("carorgvid", headdata.get("pk_org_v")); | ||||
|                     bodydata.put("csettleorgid", headdata.get("pk_org_v")); | ||||
|                     bodydata.put("csettleorgvid", headdata.get("pk_org_v")); | ||||
| //                    bodydata.put("carorgid", headdata.get("pk_org_v")); | ||||
| //                    bodydata.put("carorgvid", headdata.get("pk_org_v")); | ||||
|                     bodydata.put("carorgid", arorg_code); | ||||
|                     bodydata.put("carorgvid", arorg_code); | ||||
| //                    bodydata.put("csettleorgid", headdata.get("pk_org_v")); | ||||
| //                    bodydata.put("csettleorgvid", headdata.get("pk_org_v")); | ||||
|                     bodydata.put("csettleorgid", settleorg_code); | ||||
|                     bodydata.put("csettleorgvid", settleorg_code); | ||||
|                     bodydata.put("ctaxcountryid", "CN"); | ||||
|                     bodydata.put("crececountryid", "CN"); | ||||
|                     bodydata.put("csendcountryid", "CN"); | ||||
|  | @ -135,21 +161,46 @@ public class SaleOrderResource extends NCCPubRestResource { | |||
|             SaleOrderVO[] salevos = OpenAPIParaUtil.changeVO(paramList, HEADTABLE, BODYTABLE); | ||||
|             log.error("销售订单根据自定义项创建档案开始-----------------------"); | ||||
|             List<DefdocVO> defdocVOS = genDef(salevos); | ||||
| 
 | ||||
|             for (Map<String, Object> map : paramList) { | ||||
|                 BaseDAO baseDAO = new BaseDAO(); | ||||
|                 Map<String, Object> headdata = (Map<String, Object>) map.get(HEADTABLE); | ||||
|                 List<Object> bodyArr = (List<Object>) map.get(BODYTABLE); | ||||
|                 for (Object body : bodyArr) { | ||||
|                     Map<String, Object> bodydata = (Map<String, Object>) body; | ||||
|                     String sql = " select pk_project from  bd_project  where project_code='" + headdata.get("vdef6") + "'  and nvl(dr,0)=0  "; | ||||
|                     String o_pk_project = (String) baseDAO.executeQuery(sql, new ColumnProcessor()); | ||||
|                     bodydata.put("cprojectid", o_pk_project); | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             List<ProjectHeadVO> projectList = genProject(salevos); | ||||
|             // 参数形式转换为vo并翻译 | ||||
|             List<SaleOrderVO> vosList = TransferMapToVOTool.transferMapToAggVO(paramList, SaleOrderVO.class); | ||||
|             //根据返回的projectList先行翻译 | ||||
|             if(projectList!=null && projectList.size()>0){ | ||||
|                 Map<String,ProjectHeadVO> code_projectMap = new HashMap<>(); | ||||
|                 for(ProjectHeadVO projectHeadVO : projectList){ | ||||
|                     String code = projectHeadVO.getProject_code(); | ||||
|                     String pkProject = projectHeadVO.getPk_project(); | ||||
|                     log.error("销售订单保存接口:项目编号【"+code+"】,项目主键【"+pkProject+"】"); | ||||
|                     if(code_projectMap.containsKey(code)){ | ||||
| 
 | ||||
|                     }else{ | ||||
|                         code_projectMap.put(code, projectHeadVO); | ||||
|                     } | ||||
|                 } | ||||
|                 //翻译 | ||||
|                 for(SaleOrderVO saleOrderVO : vosList) { | ||||
|                     SaleOrderHVO parentVO = saleOrderVO.getParentVO(); | ||||
|                     SaleOrderBVO[] childrenVOs = saleOrderVO.getChildrenVO(); | ||||
|                     String vdef22 = parentVO.getVdef22(); | ||||
|                     if(vdef22!=null && vdef22.trim().length()>0){ | ||||
|                         ProjectHeadVO projectHeadVO = code_projectMap.get(vdef22); | ||||
|                         if(projectHeadVO!=null){ | ||||
|                             parentVO.setVdef22(projectHeadVO.getPk_project()); | ||||
|                             parentVO.setVdef23(projectHeadVO.getProject_name()); | ||||
|                         } | ||||
|                     } | ||||
|                     for(SaleOrderBVO bvo:childrenVOs){ | ||||
|                         String cprojectid = bvo.getCprojectid(); | ||||
|                         if(cprojectid!=null && cprojectid.trim().length()>0){ | ||||
|                             ProjectHeadVO projectHeadVO = code_projectMap.get(cprojectid); | ||||
|                             if(projectHeadVO!=null){ | ||||
|                                 bvo.setCprojectid(projectHeadVO.getPk_project()); | ||||
|                                 bvo.setVbdef10(projectHeadVO.getProject_name()); | ||||
|                             } | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|             //根据返回的defdocVOS先行翻译 | ||||
|             if(defdocVOS!=null && defdocVOS.size()>0){ | ||||
|                 Map<String,Map<String,String>> deflist_map = new HashMap<>(); | ||||
|  | @ -245,7 +296,7 @@ public class SaleOrderResource extends NCCPubRestResource { | |||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private List<DefdocVO> genDef(SaleOrderVO[] salevos) throws BusinessException { | ||||
|     private List<ProjectHeadVO> genProject(SaleOrderVO[] salevos) throws BusinessException { | ||||
|         BaseDAO baseDAO = new BaseDAO(); | ||||
|         List<DefdocVO> allDefDoc = new ArrayList<DefdocVO>(); | ||||
|         ArrayList<String> arrhth = new ArrayList<String>(); | ||||
|  | @ -259,17 +310,82 @@ public class SaleOrderResource extends NCCPubRestResource { | |||
|         } | ||||
|         String o = (String) map.get("pk_org"); | ||||
| 
 | ||||
|         String cprocode = salevos[0].getChildrenVO()[0].getCprojectid(); | ||||
|         String cproname = salevos[0].getChildrenVO()[0].getVbdef10(); | ||||
|         if (!BFPubTools.getString_TrimAsNull(cprocode).equals("")) { | ||||
|             sql = " select pk_project from  bd_project  where project_code='" + cprocode + "'  and  pk_duty_org='" + o + "' and nvl(dr,0)=0  "; | ||||
|             String o_pk_project = (String) baseDAO.executeQuery(sql, new ColumnProcessor()); | ||||
|             if (o_pk_project == null) { | ||||
|                 // ÐÂÔöÏîÄ¿µµ°¸ | ||||
|                 createPro(cprocode, cproname, map); | ||||
|         //遍历明细去重 | ||||
|         List<ProjectHeadVO> result=new ArrayList<>(); | ||||
|         for(SaleOrderVO saleOrderVO:salevos){ | ||||
|             Map<String,String > code_name =new HashMap<>(); | ||||
|             //上级项目名称 | ||||
|             String vdef23 = saleOrderVO.getParentVO().getVdef23(); | ||||
|             //上级项目编码 | ||||
|             String vdef22 = saleOrderVO.getParentVO().getVdef22(); | ||||
|             if(vdef23 !=null &&vdef23.trim().length()>0&&vdef22 !=null &&vdef22.trim().length()>0){ | ||||
|                 code_name.put(vdef22,vdef23); | ||||
|             } | ||||
|             SaleOrderBVO[] childrenVO = saleOrderVO.getChildrenVO(); | ||||
|             for(SaleOrderBVO saleOrderBVO:childrenVO){ | ||||
|                 String cprojectid = saleOrderBVO.getCprojectid(); | ||||
|                 String vbdef10 = saleOrderBVO.getVbdef10(); | ||||
|                 if(cprojectid ==null ||cprojectid.trim().length()==0||vbdef10 ==null ||vbdef10.trim().length()==0){ | ||||
|                     continue; | ||||
|                 }else { | ||||
|                     if(code_name.containsKey(cprojectid)){ | ||||
|                         //存在编码相同的行,比较名称---不同则报错 | ||||
|                         if(!code_name.get(cprojectid).equals(vbdef10)){ | ||||
|                             throw new BusinessException("销售订单,项目编码相同但是名称不同,请检查!!!"); | ||||
|                         } | ||||
|                     }else{ | ||||
|                         code_name.put(cprojectid,vbdef10); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|             UFBoolean is_hth = UFBoolean.FALSE; | ||||
|             ProjectHeadVO headDOCVO=null; | ||||
|             //查询是否重复 | ||||
|             if(!code_name.isEmpty()){ | ||||
|                 SqlBuilder projectSql=new SqlBuilder(); | ||||
|                 projectSql.append(" project_code",code_name.keySet().toArray(new String[0])); | ||||
|                 projectSql.append("  and  pk_duty_org",o); | ||||
|                 projectSql.append("  and nvl(dr,0)=0  "); | ||||
|                 List<ProjectHeadVO> projectHeadVOList = (List<ProjectHeadVO>) dao.retrieveByClause(ProjectHeadVO.class, projectSql.toString()); | ||||
|                 if (projectHeadVOList != null && projectHeadVOList.size() > 0) { | ||||
|                     for(ProjectHeadVO projectHeadVO:projectHeadVOList){ | ||||
|                         result.add(projectHeadVO); | ||||
|                         String projectCode = projectHeadVO.getProject_code(); | ||||
|                         if(projectCode.equals(vdef22)){ | ||||
|                             is_hth=UFBoolean.TRUE; | ||||
|                             headDOCVO=projectHeadVO; | ||||
|                         } | ||||
|                         if (code_name.containsKey(projectCode)) { | ||||
|                             code_name.remove(projectCode); | ||||
|                         } | ||||
|                     } | ||||
|                     if(code_name!=null && code_name.size()>0){ | ||||
|                         //存在需要新增的档案明细 | ||||
|                         createPro(code_name, is_hth, headDOCVO, vdef22, vdef23, map,result); | ||||
|                     } | ||||
|                 }else{ | ||||
|                     //存在需要新增的档案明细 | ||||
|                     createPro(code_name, is_hth, headDOCVO, vdef22, vdef23, map,result); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         } | ||||
|         return result; | ||||
|     } | ||||
| 
 | ||||
|     private List<DefdocVO> genDef(SaleOrderVO[] salevos) throws BusinessException { | ||||
|         BaseDAO baseDAO = new BaseDAO(); | ||||
|         List<DefdocVO> allDefDoc = new ArrayList<DefdocVO>(); | ||||
|         ArrayList<String> arrhth = new ArrayList<String>(); | ||||
|         ArrayList<String> arrxmh = new ArrayList<String>(); | ||||
|         ArrayList<String> arrxsddh = new ArrayList<String>(); | ||||
|         String sql = " select pk_org,pk_vid from org_orgs where org_orgs.code='" + salevos[0].getParentVO().getPk_org() + "' and nvl(dr,0)=0 and isbusinessunit='Y' "; | ||||
| 
 | ||||
|         Map map = (Map) baseDAO.executeQuery(sql, new MapProcessor()); | ||||
|         if (map == null) { | ||||
|             throw new BusinessException("采购组织档案未查到"); | ||||
|         } | ||||
|         String o = (String) map.get("pk_org"); | ||||
|         for (int i = 0; i < salevos.length; i++) { | ||||
|             String vdef6 = BFPubTools.getString_TrimAsNull(salevos[i].getParentVO().getVdef6()); | ||||
|             if (vdef6 != "" && !arrhth.contains(vdef6)) { | ||||
|  | @ -346,13 +462,46 @@ public class SaleOrderResource extends NCCPubRestResource { | |||
|         return allDefDoc; | ||||
|     } | ||||
| 
 | ||||
|     private void createPro(String cprocode, String cproname, Map map) throws BusinessException { | ||||
|     private void createPro(Map<String,String > code_name, UFBoolean is_hth, ProjectHeadVO headDOCVO, String vdef22, String vdef23, Map map,List<ProjectHeadVO> new_list) throws BusinessException { | ||||
|         //code_name里全是需要新增的明细项目 | ||||
|         Set<String> strings = code_name.keySet(); | ||||
|         if(is_hth.booleanValue()==true){ | ||||
|             //表头项目已经存在,无需创建父项目 | ||||
|             for (String code : strings) { | ||||
|                 ProjectHeadVO hvo = new ProjectHeadVO(); | ||||
|                 hvo.setProject_code(code); | ||||
|                 hvo.setProject_name(code_name.get(code)); | ||||
|                 hvo.setPk_parentpro(headDOCVO.getPk_project()); | ||||
|                 fillheadVOValue(hvo,map); | ||||
|                 ProjectHeadVO projectHeadVO = NCLocator.getInstance().lookup(IProject.class).insertProject(hvo); | ||||
|                 new_list.add(projectHeadVO); | ||||
|             } | ||||
|         }else{ | ||||
|             //表头项目不存在,需要创建父项目 | ||||
|             ProjectHeadVO headProjectVO = new ProjectHeadVO(); | ||||
|             headProjectVO.setProject_code(vdef22); | ||||
|             headProjectVO.setProject_name(vdef23); | ||||
|             fillheadVOValue(headProjectVO,map); | ||||
|             ProjectHeadVO projectHeadVO = NCLocator.getInstance().lookup(IProject.class).insertProject(headProjectVO); | ||||
|             new_list.add(projectHeadVO); | ||||
|             code_name.remove(vdef22); | ||||
|             if(code_name!=null&& code_name.size()>0){ | ||||
|                 for (String code : strings) { | ||||
|                     ProjectHeadVO hvo = new ProjectHeadVO(); | ||||
|                     hvo.setProject_code(code); | ||||
|                     hvo.setProject_name(code_name.get(code)); | ||||
|                     hvo.setPk_parentpro(projectHeadVO.getPk_project()); | ||||
|                     fillheadVOValue(hvo,map); | ||||
|                     ProjectHeadVO itemprojectHeadVO = NCLocator.getInstance().lookup(IProject.class).insertProject(hvo); | ||||
|                     new_list.add(itemprojectHeadVO); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private void fillheadVOValue(ProjectHeadVO hvo, Map map) { | ||||
|         String pk_org = (String) map.get("pk_org"); | ||||
|         String pk_org_v = (String) map.get("pk_vid"); | ||||
| 
 | ||||
|         ProjectHeadVO hvo = new ProjectHeadVO(); | ||||
|         hvo.setProject_code(cprocode); | ||||
|         hvo.setProject_name(cproname); | ||||
|         hvo.setPk_org(pk_org); | ||||
|         hvo.setPk_org_v(pk_org_v); | ||||
| 
 | ||||
|  | @ -366,7 +515,6 @@ public class SaleOrderResource extends NCCPubRestResource { | |||
|         hvo.setPk_eps("1001A110000000004K64"); | ||||
|         hvo.setPk_duty_dept_v(pk_org_v); | ||||
|         hvo.setEnablestate(2); | ||||
|         NCLocator.getInstance().lookup(IProject.class).insertProject(hvo); | ||||
|     } | ||||
| 
 | ||||
|     private DefdocVO[] createDefVO(List<String> newhth, String defdoclistcode, String pk_org) throws BusinessException { | ||||
|  | @ -419,6 +567,18 @@ public class SaleOrderResource extends NCCPubRestResource { | |||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 根据销售组织代码获取销售组织关系信息 | ||||
|      * @param saleorg 销售组织代码 | ||||
|      * @return 返回包含结算组织代码和应收组织代码的Map集合,key为settleorg_code和arorg_code | ||||
|      * @throws BusinessException 业务异常 | ||||
|      */ | ||||
|     private Map<String,String> getSaleorgRelations(String saleorg) throws BusinessException{ | ||||
|         String sql = "select settleorg_code,arorg_code from V_SALEORG_RELATIONS where saleorg_code='"+saleorg+"'"; | ||||
|         Map map = (Map<String,String>) getDao().executeQuery(sql, new MapProcessor()); | ||||
|         return map; | ||||
|     } | ||||
| 
 | ||||
|     @POST | ||||
|     @Path("update") | ||||
|     @Consumes({"application/json"}) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue