diff --git a/uapbd/src/public/nccloud/openapi/mmbd/routing/RoutingResource.java b/uapbd/src/public/nccloud/openapi/mmbd/routing/RoutingResource.java index 5b47b46..08e05e6 100644 --- a/uapbd/src/public/nccloud/openapi/mmbd/routing/RoutingResource.java +++ b/uapbd/src/public/nccloud/openapi/mmbd/routing/RoutingResource.java @@ -1,17 +1,15 @@ package nccloud.openapi.mmbd.routing; import com.alibaba.fastjson.JSONObject; -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.*; import javax.ws.rs.Consumes; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; +import nc.bs.dao.BaseDAO; +import nc.bs.dao.DAOException; import nc.bs.framework.common.InvocationInfoProxy; import nc.bs.framework.common.NCLocator; import nc.itf.bd.rt.rt0008.IRtQuery; @@ -26,504 +24,612 @@ import nc.vo.bd.rt.rt0008.entity.RtHeadVO; import nc.vo.bd.rt.rt0008.entity.RtItemVO; import nc.vo.bd.rt.rt0008.entity.RtOpacVO; import nc.vo.pub.BusinessException; +import nc.vo.pub.CircularlyAccessibleValueObject; import nc.vo.pub.ISuperVO; import nc.vo.pubapp.pattern.exception.ExceptionUtils; +import nc.vo.pubapp.pattern.pub.SqlBuilder; import nc.ws.opm.pub.utils.result.APIErrCodeEnum; import nccloud.api.mmbd.routing.IAPIRoutingBusinessService; import nccloud.api.rest.utils.ResultMessageUtil; +import nccloud.pubitf.mapub.costtype.IOrgQueryService; import nccloud.ws.rest.resource.AbstractNCCRestResource; import org.json.JSONString; @Path("mmbd/routing") public class RoutingResource extends AbstractNCCRestResource { - private static String PD_RT = "pd_rt"; + private static String PD_RT = "pd_rt"; - private static String PD_RT_B = "pd_rt_b"; + private static String PD_RT_B = "pd_rt_b"; - private static String PD_RT_ASSORG = "pd_rt_assorg"; + private static String PD_RT_ASSORG = "pd_rt_assorg"; - private static String AGG = "agg"; + private static String AGG = "agg"; - private static String MARKWORD = "markword"; + private static String MARKWORD = "markword"; - private static String RTO = "pd_rt_opac"; + private static String RTO = "pd_rt_opac"; - private static String RTA = "pd_rt_activity"; + private static String RTA = "pd_rt_activity"; - private static String CRTID = "crtid"; + private static String CRTID = "crtid"; - public String getModule() { - return "mmbd"; - } + public String getModule() { + return "mmbd"; + } - @POST - @Path("operation/save") - @Consumes({ "application/json" }) - @Produces({ "application/json" }) - public JSONString saveRouting(JSONObject para) { - List> paramList = (List) para.get("data"); - AggRtVO[] retVos = null; - for (Map map : paramList) { - if (!map.containsKey(PD_RT_B) || !map.containsKey(PD_RT)) { - return ResultMessageUtil.exceptionToJSON("传入数据异常,参数要包含表头信息和表体信息", - APIErrCodeEnum.BUSINESSEXCCODE.getCode()); - } - } - String markword = (String) getAggRtVO(paramList).get(MARKWORD); - if (MMValueCheck.isNotEmpty(markword)) { - String exception = markword.substring(0, markword.length() - 2); - return ResultMessageUtil.exceptionToJSON(exception, APIErrCodeEnum.BUSINESSEXCCODE.getCode()); - } - AggRtVO[] aggVos = (AggRtVO[]) getAggRtVO(paramList).get(AGG); - IAPIRoutingBusinessService service = (IAPIRoutingBusinessService) NCLocator.getInstance() - .lookup(IAPIRoutingBusinessService.class); - try { - retVos = service.save(aggVos); - return ResultMessageUtil.toJSON(retVos, "工艺路线保存成功"); - } catch (BusinessException e) { - return ResultMessageUtil.exceptionToJSON(new BusinessException(e.getMessage(), e)); - } - } + @POST + @Path("operation/save") + @Consumes({"application/json"}) + @Produces({"application/json"}) + public JSONString saveRouting(JSONObject para) { + try { + List> paramList = (List) para.get("data"); + AggRtVO[] retVos = null; + for (Map map : paramList) { + if (!map.containsKey(PD_RT_B) || !map.containsKey(PD_RT)) { + return ResultMessageUtil.exceptionToJSON("传入数据异常,参数要包含表头信息和表体信息", + APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } + } + String markword = (String) getAggRtVO(paramList).get(MARKWORD); + if (MMValueCheck.isNotEmpty(markword)) { + String exception = markword.substring(0, markword.length() - 2); + return ResultMessageUtil.exceptionToJSON(exception, APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } + AggRtVO[] aggVos = (AggRtVO[]) getAggRtVO(paramList).get(AGG); + IAPIRoutingBusinessService service = (IAPIRoutingBusinessService) NCLocator.getInstance() + .lookup(IAPIRoutingBusinessService.class); - @POST - @Path("save") - @Consumes({ "application/json" }) - @Produces({ "application/json" }) - public JSONString saveRouting(List> paramList) { - AggRtVO[] retVos = null; - for (Map map : paramList) { - if (!map.containsKey(PD_RT_B) || !map.containsKey(PD_RT)) { - return ResultMessageUtil.exceptionToJSON("传入数据异常,参数要包含表头信息和表体信息", - APIErrCodeEnum.BUSINESSEXCCODE.getCode()); - } - } - String markword = (String) getAggRtVO(paramList).get(MARKWORD); - if (MMValueCheck.isNotEmpty(markword)) { - String exception = markword.substring(0, markword.length() - 2); - return ResultMessageUtil.exceptionToJSON(exception, APIErrCodeEnum.BUSINESSEXCCODE.getCode()); - } - AggRtVO[] aggVos = (AggRtVO[]) getAggRtVO(paramList).get(AGG); - IAPIRoutingBusinessService service = (IAPIRoutingBusinessService) NCLocator.getInstance() - .lookup(IAPIRoutingBusinessService.class); - try { - retVos = service.save(aggVos); - return ResultMessageUtil.toJSON(retVos, "工艺路线保存成功"); - } catch (BusinessException e) { - return ResultMessageUtil.exceptionToJSON(new BusinessException(e.getMessage(), e)); - } - } + retVos = service.save(aggVos); + return ResultMessageUtil.toJSON(retVos, "工艺路线保存成功"); + } catch (BusinessException e) { + return ResultMessageUtil.exceptionToJSON(new BusinessException(e.getMessage(), e)); + } + } - @POST - @Path("operation/update") - @Consumes({ "application/json" }) - @Produces({ "application/json" }) - public JSONString updateRouting(JSONObject para) { - List> paramList = (List) para.get("data"); - AggRtVO[] retVos = null; - for (Map map : paramList) { - if (!map.containsKey(PD_RT_B) || !map.containsKey(PD_RT_ASSORG)) { - return ResultMessageUtil.exceptionToJSON("传入数据异常,参数要包含表头信息和表体信息", - APIErrCodeEnum.BUSINESSEXCCODE.getCode()); - } - } - String markword = (String) getAggRtVO(paramList).get(MARKWORD); - if (MMValueCheck.isNotEmpty(markword)) { - String exception = markword.substring(0, markword.length() - 2); - return ResultMessageUtil.exceptionToJSON(exception, APIErrCodeEnum.BUSINESSEXCCODE.getCode()); - } - AggRtVO[] aggVos = (AggRtVO[]) getAggRtVO(paramList).get(AGG); - IAPIRoutingBusinessService service = (IAPIRoutingBusinessService) NCLocator.getInstance() - .lookup(IAPIRoutingBusinessService.class); - try { - retVos = service.update(aggVos); - return ResultMessageUtil.toJSON(retVos, "工艺路线修改成功"); - } catch (BusinessException e) { - return ResultMessageUtil.exceptionToJSON(new BusinessException(e.getMessage(), e)); - } - } + @POST + @Path("save") + @Consumes({"application/json"}) + @Produces({"application/json"}) + public JSONString saveRouting(List> paramList) { + AggRtVO[] retVos = null; + try { + for (Map map : paramList) { + if (!map.containsKey(PD_RT_B) || !map.containsKey(PD_RT)) { + return ResultMessageUtil.exceptionToJSON("传入数据异常,参数要包含表头信息和表体信息", + APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } + } + String markword = (String) getAggRtVO(paramList).get(MARKWORD); + if (MMValueCheck.isNotEmpty(markword)) { + String exception = markword.substring(0, markword.length() - 2); + return ResultMessageUtil.exceptionToJSON(exception, APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } + AggRtVO[] aggVos = (AggRtVO[]) getAggRtVO(paramList).get(AGG); + IAPIRoutingBusinessService service = (IAPIRoutingBusinessService) NCLocator.getInstance() + .lookup(IAPIRoutingBusinessService.class); - @POST - @Path("update") - @Consumes({ "application/json" }) - @Produces({ "application/json" }) - public JSONString updateRouting(List> paramList) { - AggRtVO[] retVos = null; - for (Map map : paramList) { - if (!map.containsKey(PD_RT_B) || !map.containsKey(PD_RT_ASSORG)) { - return ResultMessageUtil.exceptionToJSON("传入数据异常,参数要包含表头信息和表体信息", - APIErrCodeEnum.BUSINESSEXCCODE.getCode()); - } - } - String markword = (String) getAggRtVO(paramList).get(MARKWORD); - if (MMValueCheck.isNotEmpty(markword)) { - String exception = markword.substring(0, markword.length() - 2); - return ResultMessageUtil.exceptionToJSON(exception, APIErrCodeEnum.BUSINESSEXCCODE.getCode()); - } - AggRtVO[] aggVos = (AggRtVO[]) getAggRtVO(paramList).get(AGG); - IAPIRoutingBusinessService service = (IAPIRoutingBusinessService) NCLocator.getInstance() - .lookup(IAPIRoutingBusinessService.class); - try { - retVos = service.update(aggVos); - return ResultMessageUtil.toJSON(retVos, "工艺路线修改成功"); - } catch (BusinessException e) { - return ResultMessageUtil.exceptionToJSON(new BusinessException(e.getMessage(), e)); - } - } + retVos = service.save(aggVos); + return ResultMessageUtil.toJSON(retVos, "工艺路线保存成功"); + } catch (BusinessException e) { + return ResultMessageUtil.exceptionToJSON(new BusinessException(e.getMessage(), e)); + } + } - @POST - @Path("query") - @Consumes({ "application/json" }) - @Produces({ "application/json" }) - public JSONString queryRouting(Map paramMap) { - AggRtVO[] retVos = null; - IAPIRoutingBusinessService service = (IAPIRoutingBusinessService) NCLocator.getInstance() - .lookup(IAPIRoutingBusinessService.class); - try { - retVos = service.query(paramMap); - RtHeadVO[] hvos = null; - if (!ValueCheckUtil.isNullORZeroLength(retVos)) { - hvos = getHVO(retVos); - } - String usercode = InvocationInfoProxy.getInstance().getUserCode(); - if ("plm".equals(usercode) || "gaoning".equals(usercode)) { - return ResultMessageUtil.toJSONUnTranslate(retVos, "工艺路线查询成功"); - } - return ResultMessageUtil.toJSON(hvos, "工艺路线查询成功"); - } catch (BusinessException e) { - return ResultMessageUtil.exceptionToJSON(new BusinessException(e.getMessage(), e)); - } - } + @POST + @Path("operation/update") + @Consumes({"application/json"}) + @Produces({"application/json"}) + public JSONString updateRouting(JSONObject para) { + try { + List> paramList = (List) para.get("data"); + AggRtVO[] retVos = null; + for (Map map : paramList) { + if (!map.containsKey(PD_RT_B) || !map.containsKey(PD_RT_ASSORG)) { + return ResultMessageUtil.exceptionToJSON("传入数据异常,参数要包含表头信息和表体信息", + APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } + } + String markword = (String) getAggRtVO(paramList).get(MARKWORD); + if (MMValueCheck.isNotEmpty(markword)) { + String exception = markword.substring(0, markword.length() - 2); + return ResultMessageUtil.exceptionToJSON(exception, APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } + AggRtVO[] aggVos = (AggRtVO[]) getAggRtVO(paramList).get(AGG); + IAPIRoutingBusinessService service = (IAPIRoutingBusinessService) NCLocator.getInstance() + .lookup(IAPIRoutingBusinessService.class); - private RtHeadVO[] getHVO(AggRtVO[] vos) { - RtHeadVO[] hvos = new RtHeadVO[vos.length]; - if (MMValueCheck.isNotEmpty(vos)) { - for (int i = 0; i < hvos.length; i++) { - hvos[i] = (RtHeadVO) vos[i].getParentVO(); - } - } - return hvos; - } + retVos = service.update(aggVos); + return ResultMessageUtil.toJSON(retVos, "工艺路线修改成功"); + } catch (BusinessException e) { + return ResultMessageUtil.exceptionToJSON(new BusinessException(e.getMessage(), e)); + } + } - private Map getAggRtVO(List> paramList) { - List aggVoList = new ArrayList(); - Map pkmap = new HashMap(); - List pklist = new ArrayList(); - for (Map map : paramList) { + @POST + @Path("update") + @Consumes({"application/json"}) + @Produces({"application/json"}) + public JSONString updateRouting(List> paramList) { + try { + AggRtVO[] retVos = null; + for (Map map : paramList) { + if (!map.containsKey(PD_RT_B) || !map.containsKey(PD_RT_ASSORG)) { + return ResultMessageUtil.exceptionToJSON("传入数据异常,参数要包含表头信息和表体信息", + APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } + } + String markword = (String) getAggRtVO(paramList).get(MARKWORD); + if (MMValueCheck.isNotEmpty(markword)) { + String exception = markword.substring(0, markword.length() - 2); + return ResultMessageUtil.exceptionToJSON(exception, APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } + AggRtVO[] aggVos = (AggRtVO[]) getAggRtVO(paramList).get(AGG); + IAPIRoutingBusinessService service = (IAPIRoutingBusinessService) NCLocator.getInstance() + .lookup(IAPIRoutingBusinessService.class); - Map head = (Map) map.get(PD_RT); - if (MMValueCheck.isNotEmpty(head.get(CRTID))) { - pklist.add((String) head.get(CRTID)); - } - } - String[] pks = (String[]) pklist.toArray(new String[0]); - AggRtVO[] newaggvos = null; - if (!ValueCheckUtil.isEmpty(pks)) { - newaggvos = queryVOByIDs(pks); - } - if (MMValueCheck.isNotEmpty(newaggvos)) { - for (int i = 0; i < newaggvos.length; i++) { - if (MMValueCheck.isNotEmpty(newaggvos[i].getPrimaryKey())) { - pkmap.put(newaggvos[i].getPrimaryKey(), newaggvos[i]); - } - } - } - for (Map map : paramList) { + retVos = service.update(aggVos); + return ResultMessageUtil.toJSON(retVos, "工艺路线修改成功"); + } catch (BusinessException e) { + return ResultMessageUtil.exceptionToJSON(new BusinessException(e.getMessage(), e)); + } + } - Map> tableid = new HashMap>(); + @POST + @Path("query") + @Consumes({"application/json"}) + @Produces({"application/json"}) + public JSONString queryRouting(Map paramMap) { + AggRtVO[] retVos = null; + IAPIRoutingBusinessService service = (IAPIRoutingBusinessService) NCLocator.getInstance() + .lookup(IAPIRoutingBusinessService.class); + try { + retVos = service.query(paramMap); + RtHeadVO[] hvos = null; + if (!ValueCheckUtil.isNullORZeroLength(retVos)) { + hvos = getHVO(retVos); + } + String usercode = InvocationInfoProxy.getInstance().getUserCode(); + if ("plm".equals(usercode) || "gaoning".equals(usercode)) { + return ResultMessageUtil.toJSONUnTranslate(retVos, "工艺路线查询成功"); + } + return ResultMessageUtil.toJSON(hvos, "工艺路线查询成功"); + } catch (BusinessException e) { + return ResultMessageUtil.exceptionToJSON(new BusinessException(e.getMessage(), e)); + } + } - Map idvo = new HashMap(); - AggRtVO aggvo = new AggRtVO(); + private RtHeadVO[] getHVO(AggRtVO[] vos) { + RtHeadVO[] hvos = new RtHeadVO[vos.length]; + if (MMValueCheck.isNotEmpty(vos)) { + for (int i = 0; i < hvos.length; i++) { + hvos[i] = (RtHeadVO) vos[i].getParentVO(); + } + } + return hvos; + } - Map head = (Map) map.get(PD_RT); + private Map getAggRtVO(List> paramList) throws BusinessException { + List aggVoList = new ArrayList(); + Map pkmap = new HashMap(); + List pklist = new ArrayList(); + for (Map map : paramList) { - List> body_b = (List) map.get(PD_RT_B); + Map head = (Map) map.get(PD_RT); + if (MMValueCheck.isNotEmpty(head.get(CRTID))) { + pklist.add((String) head.get(CRTID)); + } + } + String[] pks = (String[]) pklist.toArray(new String[0]); + AggRtVO[] newaggvos = null; + if (!ValueCheckUtil.isEmpty(pks)) { + newaggvos = queryVOByIDs(pks); + } + if (MMValueCheck.isNotEmpty(newaggvos)) { + for (int i = 0; i < newaggvos.length; i++) { + if (MMValueCheck.isNotEmpty(newaggvos[i].getPrimaryKey())) { + pkmap.put(newaggvos[i].getPrimaryKey(), newaggvos[i]); + } + } + } + for (Map map : paramList) { - List> body_s = (List) map.get(PD_RT_ASSORG); - RtHeadVO hvo = new RtHeadVO(); - for (String headkey : head.keySet()) { - hvo.setAttributeValue(headkey, head.get(headkey)); - } - if (MMValueCheck.isEmpty(hvo.getPrimaryKey())) { - hvo.setStatus(2); - } else { - hvo.setStatus(1); - } - aggvo.setParent(hvo); - AggRtVO newRtvo = null; - for (String pk : pkmap.keySet()) { - if (pk.equals(hvo.getPrimaryKey())) { - newRtvo = (AggRtVO) pkmap.get(pk); - } - } - if (MMValueCheck.isNotEmpty(newRtvo)) { - Set sethvo = new HashSet(); - RtHeadVO newhvo = (RtHeadVO) newRtvo.getParentVO(); - sethvo.add(newhvo.getPrimaryKey()); - tableid.put(PD_RT, sethvo); - Set setitemvo = new HashSet(); - RtItemVO[] newitemvos = (RtItemVO[]) newRtvo.getChildren(RtItemVO.class); - if (MMValueCheck.isNotEmpty(newitemvos)) { - for (RtItemVO itemvo : newitemvos) { - setitemvo.add(itemvo.getPrimaryKey()); - idvo.put(itemvo.getPrimaryKey(), itemvo); - Set setrtovo = new HashSet(); - RtOpacVO[] newrtovos = itemvo.getRtopacitems(); - if (MMValueCheck.isNotEmpty(newrtovos)) { - for (RtOpacVO newrtavo : newrtovos) { - setrtovo.add(newrtavo.getPrimaryKey()); - idvo.put(newrtavo.getPrimaryKey(), newrtavo); - } - } - tableid.put(RTO, setrtovo); - Set setrtavo = new HashSet(); - RtActivityVO[] newrtavos = itemvo.getRtactitems(); - if (MMValueCheck.isNotEmpty(newrtavos)) { - for (RtActivityVO newrtovo : newrtavos) { - setrtavo.add(newrtovo.getPrimaryKey()); - idvo.put(newrtovo.getPrimaryKey(), newrtovo); - } - } - tableid.put(RTA, setrtavo); - } - } - tableid.put(PD_RT_B, setitemvo); - AssOrgVO[] newassvos = (AssOrgVO[]) newRtvo.getChildren(AssOrgVO.class); - Set setassvo = new HashSet(); - if (MMValueCheck.isNotEmpty(newassvos)) { - for (AssOrgVO assvo : newassvos) { - setassvo.add(assvo.getPrimaryKey()); - idvo.put(assvo.getPrimaryKey(), assvo); - } - } - tableid.put(PD_RT_ASSORG, setassvo); - } + Map> tableid = new HashMap>(); - List rtItemVoList = new ArrayList(); - Set body_b_set = (Set) tableid.get(PD_RT_B); - if (MMValueCheck.isNotEmpty(body_b)) { - for (Map body_b_map : body_b) { - RtItemVO itemVo = new RtItemVO(); - for (String body_b_key : body_b_map.keySet()) { - itemVo.setAttributeValue(body_b_key, body_b_map.get(body_b_key)); - if (RTO.equals(body_b_key)) { - List rtoVoList = new ArrayList(); + Map idvo = new HashMap(); + AggRtVO aggvo = new AggRtVO(); - List> rto = (List) body_b_map.get(body_b_key); - Set rto_set = (Set) tableid.get(RTO); - if (MMValueCheck.isNotEmpty(rto)) { - for (Map rtomap : rto) { - RtOpacVO rtoVo = new RtOpacVO(); - if (MMValueCheck.isNotEmpty(rtomap)) { - for (String rtomapkey : rtomap.keySet()) { - rtoVo.setAttributeValue(rtomapkey, rtomap.get(rtomapkey)); - } - if (MMValueCheck.isNotEmpty(rtoVo.getPrimaryKey())) { - rtoVo.setStatus(1); - } else { - rtoVo.setStatus(2); - } - if (MMValueCheck.isNotEmpty(rtoVo.getPrimaryKey())) { - rto_set.remove(rtoVo.getPrimaryKey()); - } - rtoVoList.add(rtoVo); - } - } - if (MMValueCheck.isNotEmpty(rto_set)) { - for (String rto_set_pk : rto_set) { - RtOpacVO setrtovo = (RtOpacVO) idvo.get(rto_set_pk); - setrtovo.setStatus(3); - rtoVoList.add(setrtovo); - } + Map head = (Map) map.get(PD_RT); - } - } else if (MMValueCheck.isNotEmpty(rto_set)) { - for (String rto_set_pk : rto_set) { - RtOpacVO setrtovo = (RtOpacVO) idvo.get(rto_set_pk); - setrtovo.setStatus(3); - rtoVoList.add(setrtovo); - } - } + List> body_b = (List) map.get(PD_RT_B); - itemVo.setRtopacitems((RtOpacVO[]) rtoVoList.toArray(new RtOpacVO[0])); - } - if (RTA.equals(body_b_key)) { - List rtaVoList = new ArrayList(); + List> body_s = (List) map.get(PD_RT_ASSORG); + RtHeadVO hvo = new RtHeadVO(); + for (String headkey : head.keySet()) { + hvo.setAttributeValue(headkey, head.get(headkey)); + } + if (MMValueCheck.isEmpty(hvo.getPrimaryKey())) { + hvo.setStatus(2); + } else { + hvo.setStatus(1); + } + aggvo.setParent(hvo); + AggRtVO newRtvo = null; + for (String pk : pkmap.keySet()) { + if (pk.equals(hvo.getPrimaryKey())) { + newRtvo = (AggRtVO) pkmap.get(pk); + } + } + if (MMValueCheck.isNotEmpty(newRtvo)) { + Set sethvo = new HashSet(); + RtHeadVO newhvo = (RtHeadVO) newRtvo.getParentVO(); + sethvo.add(newhvo.getPrimaryKey()); + tableid.put(PD_RT, sethvo); + Set setitemvo = new HashSet(); + RtItemVO[] newitemvos = (RtItemVO[]) newRtvo.getChildren(RtItemVO.class); + if (MMValueCheck.isNotEmpty(newitemvos)) { + for (RtItemVO itemvo : newitemvos) { + setitemvo.add(itemvo.getPrimaryKey()); + idvo.put(itemvo.getPrimaryKey(), itemvo); + Set setrtovo = new HashSet(); + RtOpacVO[] newrtovos = itemvo.getRtopacitems(); + if (MMValueCheck.isNotEmpty(newrtovos)) { + for (RtOpacVO newrtavo : newrtovos) { + setrtovo.add(newrtavo.getPrimaryKey()); + idvo.put(newrtavo.getPrimaryKey(), newrtavo); + } + } + tableid.put(RTO, setrtovo); + Set setrtavo = new HashSet(); + RtActivityVO[] newrtavos = itemvo.getRtactitems(); + if (MMValueCheck.isNotEmpty(newrtavos)) { + for (RtActivityVO newrtovo : newrtavos) { + setrtavo.add(newrtovo.getPrimaryKey()); + idvo.put(newrtovo.getPrimaryKey(), newrtovo); + } + } + tableid.put(RTA, setrtavo); + } + } + tableid.put(PD_RT_B, setitemvo); + AssOrgVO[] newassvos = (AssOrgVO[]) newRtvo.getChildren(AssOrgVO.class); + Set setassvo = new HashSet(); + if (MMValueCheck.isNotEmpty(newassvos)) { + for (AssOrgVO assvo : newassvos) { + setassvo.add(assvo.getPrimaryKey()); + idvo.put(assvo.getPrimaryKey(), assvo); + } + } + tableid.put(PD_RT_ASSORG, setassvo); + } - List> rta = (List) body_b_map.get(body_b_key); - Set rta_set = (Set) tableid.get(RTA); - if (MMValueCheck.isNotEmpty(rta)) { - for (Map rtamap : rta) { - RtActivityVO rtoVa = new RtActivityVO(); - for (String rtomapkey : rtamap.keySet()) { - rtoVa.setAttributeValue(rtomapkey, rtamap.get(rtomapkey)); - } - if (MMValueCheck.isNotEmpty(rtoVa.getPrimaryKey())) { - rtoVa.setStatus(1); - } else { - rtoVa.setStatus(2); - } - if (MMValueCheck.isNotEmpty(rtoVa.getPrimaryKey())) { - rta_set.remove(rtoVa.getPrimaryKey()); - } - rtaVoList.add(rtoVa); - } - if (MMValueCheck.isNotEmpty(rta_set)) { - for (String rta_set_pk : rta_set) { - RtActivityVO setrtavo = (RtActivityVO) idvo.get(rta_set_pk); - setrtavo.setStatus(3); - rtaVoList.add(setrtavo); - } + List rtItemVoList = new ArrayList(); + Set body_b_set = (Set) tableid.get(PD_RT_B); + if (MMValueCheck.isNotEmpty(body_b)) { + for (Map body_b_map : body_b) { + RtItemVO itemVo = new RtItemVO(); + for (String body_b_key : body_b_map.keySet()) { + itemVo.setAttributeValue(body_b_key, body_b_map.get(body_b_key)); + if (RTO.equals(body_b_key)) { + List rtoVoList = new ArrayList(); - } - } else if (MMValueCheck.isNotEmpty(rta_set)) { - for (String rta_set_pk : rta_set) { - RtActivityVO setrtavo = (RtActivityVO) idvo.get(rta_set_pk); - setrtavo.setStatus(3); - rtaVoList.add(setrtavo); - } - } + List> rto = (List) body_b_map.get(body_b_key); + Set rto_set = (Set) tableid.get(RTO); + if (MMValueCheck.isNotEmpty(rto)) { + for (Map rtomap : rto) { + RtOpacVO rtoVo = new RtOpacVO(); + if (MMValueCheck.isNotEmpty(rtomap)) { + for (String rtomapkey : rtomap.keySet()) { + rtoVo.setAttributeValue(rtomapkey, rtomap.get(rtomapkey)); + } + if (MMValueCheck.isNotEmpty(rtoVo.getPrimaryKey())) { + rtoVo.setStatus(1); + } else { + rtoVo.setStatus(2); + } + if (MMValueCheck.isNotEmpty(rtoVo.getPrimaryKey())) { + rto_set.remove(rtoVo.getPrimaryKey()); + } + rtoVoList.add(rtoVo); + } + } + if (MMValueCheck.isNotEmpty(rto_set)) { + for (String rto_set_pk : rto_set) { + RtOpacVO setrtovo = (RtOpacVO) idvo.get(rto_set_pk); + setrtovo.setStatus(3); + rtoVoList.add(setrtovo); + } - itemVo.setRtactitems((RtActivityVO[]) rtaVoList.toArray(new RtActivityVO[0])); - } - } - if (MMValueCheck.isNotEmpty(itemVo.getPrimaryKey())) { - itemVo.setStatus(1); - } else { - itemVo.setStatus(2); - } - if (MMValueCheck.isNotEmpty(itemVo.getPrimaryKey())) { - body_b_set.remove(itemVo.getPrimaryKey()); - } - rtItemVoList.add(itemVo); - } - if (MMValueCheck.isNotEmpty(body_b_set)) { - for (String body_b_setpk : body_b_set) { - RtItemVO setitemVo = (RtItemVO) idvo.get(body_b_setpk); - setitemVo.setStatus(3); - rtItemVoList.add(setitemVo); - } + } + } else if (MMValueCheck.isNotEmpty(rto_set)) { + for (String rto_set_pk : rto_set) { + RtOpacVO setrtovo = (RtOpacVO) idvo.get(rto_set_pk); + setrtovo.setStatus(3); + rtoVoList.add(setrtovo); + } + } - } - } else if (MMValueCheck.isNotEmpty(body_b_set)) { - for (String body_b_setpk : body_b_set) { - RtItemVO setitemVo = (RtItemVO) idvo.get(body_b_setpk); - setitemVo.setStatus(3); - rtItemVoList.add(setitemVo); - } - } + itemVo.setRtopacitems((RtOpacVO[]) rtoVoList.toArray(new RtOpacVO[0])); + } + if (RTA.equals(body_b_key)) { + List rtaVoList = new ArrayList(); - aggvo.setChildren(RtItemVO.class, (ISuperVO[]) rtItemVoList.toArray(new RtItemVO[0])); + List> rta = (List) body_b_map.get(body_b_key); + Set rta_set = (Set) tableid.get(RTA); + if (MMValueCheck.isNotEmpty(rta)) { + for (Map rtamap : rta) { + RtActivityVO rtoVa = new RtActivityVO(); + for (String rtomapkey : rtamap.keySet()) { + rtoVa.setAttributeValue(rtomapkey, rtamap.get(rtomapkey)); + } + if (MMValueCheck.isNotEmpty(rtoVa.getPrimaryKey())) { + rtoVa.setStatus(1); + } else { + rtoVa.setStatus(2); + } + if (MMValueCheck.isNotEmpty(rtoVa.getPrimaryKey())) { + rta_set.remove(rtoVa.getPrimaryKey()); + } + rtaVoList.add(rtoVa); + } + if (MMValueCheck.isNotEmpty(rta_set)) { + for (String rta_set_pk : rta_set) { + RtActivityVO setrtavo = (RtActivityVO) idvo.get(rta_set_pk); + setrtavo.setStatus(3); + rtaVoList.add(setrtavo); + } - List assOrgVoList = new ArrayList(); - Set body_s_set = (Set) tableid.get(PD_RT_ASSORG); - if (MMValueCheck.isNotEmpty(body_s)) { - for (Map body_s_map : body_s) { - AssOrgVO orgVo = new AssOrgVO(); - for (String body_s_key : body_s_map.keySet()) { - orgVo.setAttributeValue(body_s_key, body_s_map.get(body_s_key)); - } - if (MMValueCheck.isNotEmpty(orgVo.getPrimaryKey())) { - orgVo.setStatus(1); - } else { - orgVo.setStatus(2); - } - if (MMValueCheck.isNotEmpty(orgVo.getPrimaryKey())) { - body_s_set.remove(orgVo.getPrimaryKey()); - } - assOrgVoList.add(orgVo); - } - if (MMValueCheck.isNotEmpty(body_s_set)) { - for (String body_s_setpk : body_s_set) { - AssOrgVO setorgVo = (AssOrgVO) idvo.get(body_s_setpk); - setorgVo.setStatus(3); - assOrgVoList.add(setorgVo); - } + } + } else if (MMValueCheck.isNotEmpty(rta_set)) { + for (String rta_set_pk : rta_set) { + RtActivityVO setrtavo = (RtActivityVO) idvo.get(rta_set_pk); + setrtavo.setStatus(3); + rtaVoList.add(setrtavo); + } + } - } - } else if (MMValueCheck.isNotEmpty(body_s_set)) { - for (String body_s_setpk : body_s_set) { - AssOrgVO setorgVo = (AssOrgVO) idvo.get(body_s_setpk); - setorgVo.setStatus(3); - assOrgVoList.add(setorgVo); - } - } + itemVo.setRtactitems((RtActivityVO[]) rtaVoList.toArray(new RtActivityVO[0])); + } + } + if (MMValueCheck.isNotEmpty(itemVo.getPrimaryKey())) { + itemVo.setStatus(1); + } else { + itemVo.setStatus(2); + } + if (MMValueCheck.isNotEmpty(itemVo.getPrimaryKey())) { + body_b_set.remove(itemVo.getPrimaryKey()); + } + rtItemVoList.add(itemVo); + } + if (MMValueCheck.isNotEmpty(body_b_set)) { + for (String body_b_setpk : body_b_set) { + RtItemVO setitemVo = (RtItemVO) idvo.get(body_b_setpk); + setitemVo.setStatus(3); + rtItemVoList.add(setitemVo); + } - aggvo.setChildren(AssOrgVO.class, (ISuperVO[]) assOrgVoList.toArray(new AssOrgVO[0])); - aggVoList.add(aggvo); - } - AggRtVO[] aggVos = (AggRtVO[]) aggVoList.toArray(new AggRtVO[0]); - RtHeadVO[] hvos = new RtHeadVO[aggVos.length]; - String markword = null; - for (int i = 0; i < aggVos.length; i++) { - hvos[i] = (RtHeadVO) aggVos[i].getParent(); - RtItemVO[] itemvos = (RtItemVO[]) aggVos[i].getChildren(RtItemVO.class); - String exceptionMessage = getHeadInputField(hvos) + getHeadInputField(hvos); - if (MMValueCheck.isNotEmpty(exceptionMessage)) { - markword = "您有必输项未输," + exceptionMessage; - } - } + } + } else if (MMValueCheck.isNotEmpty(body_b_set)) { + for (String body_b_setpk : body_b_set) { + RtItemVO setitemVo = (RtItemVO) idvo.get(body_b_setpk); + setitemVo.setStatus(3); + rtItemVoList.add(setitemVo); + } + } - BillFieldsCodeToPkUtil.doTranslateVOFields(aggVos); - Map map = new HashMap(); - map.put(AGG, aggVos); - map.put(MARKWORD, markword); - return map; - } + aggvo.setChildren(RtItemVO.class, (ISuperVO[]) rtItemVoList.toArray(new RtItemVO[0])); - private String getHeadInputField(RtHeadVO[] hvos) { - String retstr = ""; - for (RtHeadVO hvo : hvos) { - if (hvo.getPk_org() == null || MMValueCheck.isEmpty(hvo.getPk_org())) { - retstr = retstr + "pk_org,"; - } - if (hvo.getCmaterialid() == null || MMValueCheck.isEmpty(hvo.getCmaterialid())) { - retstr = retstr + "cmaterialid,"; - } - if (hvo.getNastnum() == null || MMValueCheck.isEmpty(hvo.getNastnum())) { - retstr = retstr + "nastnum,"; - } - if (hvo.getVersion() == null || MMValueCheck.isEmpty(hvo.getVersion())) { - retstr = retstr + "version,"; - } - if (hvo.getFversiontype() == null || MMValueCheck.isEmpty(hvo.getFversiontype())) { - retstr = retstr + "fversiontype,"; - } - } - return retstr; - } + List assOrgVoList = new ArrayList(); + Set body_s_set = (Set) tableid.get(PD_RT_ASSORG); + if (MMValueCheck.isNotEmpty(body_s)) { + for (Map body_s_map : body_s) { + AssOrgVO orgVo = new AssOrgVO(); + for (String body_s_key : body_s_map.keySet()) { + orgVo.setAttributeValue(body_s_key, body_s_map.get(body_s_key)); + } + if (MMValueCheck.isNotEmpty(orgVo.getPrimaryKey())) { + orgVo.setStatus(1); + } else { + orgVo.setStatus(2); + } + if (MMValueCheck.isNotEmpty(orgVo.getPrimaryKey())) { + body_s_set.remove(orgVo.getPrimaryKey()); + } + assOrgVoList.add(orgVo); + } + if (MMValueCheck.isNotEmpty(body_s_set)) { + for (String body_s_setpk : body_s_set) { + AssOrgVO setorgVo = (AssOrgVO) idvo.get(body_s_setpk); + setorgVo.setStatus(3); + assOrgVoList.add(setorgVo); + } - private String getBodyInputField(RtItemVO[] bvos) { - String retstr = ""; - for (RtItemVO bvo : bvos) { - if (bvo.getVprocessno() == null || MMValueCheck.isEmpty(bvo.getVprocessno())) { - retstr = retstr + "vprocessno,"; - } - if (bvo.getProcessmovetype() == null || MMValueCheck.isEmpty(bvo.getProcessmovetype())) { - retstr = retstr + "processmovetype,"; - } - if (bvo.getDeffectdate() == null || MMValueCheck.isEmpty(bvo.getDeffectdate())) { - retstr = retstr + "deffectdate,"; - } - if (bvo.getDinvaliddate() == null || MMValueCheck.isEmpty(bvo.getDinvaliddate())) { - retstr = retstr + "dinvaliddate,"; - } - if (bvo.getBmainprocess() == null || MMValueCheck.isEmpty(bvo.getBmainprocess())) { - retstr = retstr + "bmainprocess,"; - } - } - return retstr; - } + } + } else if (MMValueCheck.isNotEmpty(body_s_set)) { + for (String body_s_setpk : body_s_set) { + AssOrgVO setorgVo = (AssOrgVO) idvo.get(body_s_setpk); + setorgVo.setStatus(3); + assOrgVoList.add(setorgVo); + } + } - private AggRtVO[] queryVOByIDs(String[] pks) { - AggRtVO[] aggvos = null; - IRtQuery rtquery = (IRtQuery) NCLocator.getInstance().lookup(IRtQuery.class); - MMSqlBuilder sql = new MMSqlBuilder(); - sql.append(" crtid ", pks); - try { - aggvos = rtquery.queryRtByWhereSql(sql.toString()); - } catch (BusinessException e) { - ExceptionUtils.wrappException(e); - } - return aggvos; - } + aggvo.setChildren(AssOrgVO.class, (ISuperVO[]) assOrgVoList.toArray(new AssOrgVO[0])); + aggVoList.add(aggvo); + } + AggRtVO[] aggVos = (AggRtVO[]) aggVoList.toArray(new AggRtVO[0]); + RtHeadVO[] hvos = new RtHeadVO[aggVos.length]; + String markword = null; + for (int i = 0; i < aggVos.length; i++) { + hvos[i] = (RtHeadVO) aggVos[i].getParent(); + RtItemVO[] itemvos = (RtItemVO[]) aggVos[i].getChildren(RtItemVO.class); + String exceptionMessage = getHeadInputField(hvos) + getHeadInputField(hvos); + if (MMValueCheck.isNotEmpty(exceptionMessage)) { + markword = "您有必输项未输," + exceptionMessage; + } + } + //2025年5月8日13点41分--重新翻译工序 --start + Map> queryParamList = getQueryParamList(aggVos); + reTranslateCrcIdByCode(aggVos, queryParamList); + //2025年5月8日13点41分--重新翻译工序 --end + BillFieldsCodeToPkUtil.doTranslateVOFields(aggVos); + Map map = new HashMap(); + map.put(AGG, aggVos); + map.put(MARKWORD, markword); + return map; + } + + private void reTranslateCrcIdByCode(AggRtVO[] aggVos, Map> queryParamMap) throws BusinessException { + //根据map里的参数查询出对应的ID,判空, + Set bpkorgs = queryParamMap.get("bpkorg"); + Set hpkorgs = queryParamMap.get("hpkorg"); + Set crcids = queryParamMap.get("crcid"); + if (isNotNull(bpkorgs) && isNotNull(crcids)) { + List> maps = queryIDAndCode(bpkorgs, crcids); + Map key_crcMap = new HashMap<>(); + for (Map map : maps) { + String crcid = (String) map.getOrDefault("crcid", ""); + String vrccode = (String) map.getOrDefault("vrccode", ""); + String orgcode = (String) map.getOrDefault("orgcode", ""); + key_crcMap.put(orgcode + "_" + vrccode, crcid); + } + for (AggRtVO aggVo : aggVos) { + RtItemVO[] itemVos = (RtItemVO[]) aggVo.getChildren(RtItemVO.class); + for (RtItemVO itemVo : itemVos) { + String crcid = itemVo.getCrcid(); + String orgcode = itemVo.getPk_org(); + String crcid_new = key_crcMap.get(orgcode + "_" + crcid); + if (crcid_new != null) { + itemVo.setCrcid(crcid_new); + } + } + } + } else if (!isNotNull(bpkorgs) && isNotNull(crcids) && isNotNull(hpkorgs)) { + //保险 + List> maps = queryIDAndCode(hpkorgs, crcids); + Map key_crcMap = new HashMap<>(); + for (Map map : maps) { + String crcid = (String) map.getOrDefault("crcid", ""); + String vrccode = (String) map.getOrDefault("vrccode", ""); + String orgcode = (String) map.getOrDefault("orgcode", ""); + key_crcMap.put(orgcode + "_" + vrccode, crcid); + } + for (AggRtVO aggVo : aggVos) { + RtHeadVO parentVO = (RtHeadVO) aggVo.getParent(); + RtItemVO[] itemVos = (RtItemVO[]) aggVo.getChildren(RtItemVO.class); + String orgcode = parentVO.getPk_org(); + for (RtItemVO itemVo : itemVos) { + String crcid = itemVo.getCrcid(); + String crcid_new = key_crcMap.get(orgcode + "_" + crcid); + if (crcid_new != null) { + itemVo.setCrcid(crcid_new); + } + } + } + } + } + + private List> queryIDAndCode(Set bpkorgs, Set crcids) throws BusinessException { + SqlBuilder sql = new SqlBuilder(); + sql.append(" SELECT rc.crcid,rc.vrccode,orgs.code orgcode FROM pd_rc rc "); + sql.append(" LEFT JOIN org_orgs orgs ON rc.PK_ORG =orgs.PK_ORG "); + sql.append(" WHERE "); + sql.append(" rc.dr=0 and orgs.dr=0 and "); + sql.append(" rc.vrccode ", crcids.toArray(new String[0])); + sql.append(" AND "); + sql.append(" orgs.CODE ", bpkorgs.toArray(new String[0])); + List> remain = (List>) new BaseDAO().executeQuery(sql.toString(), new nc.jdbc.framework.processor.MapListProcessor()); + if (remain == null || remain.size() < 1) { + throw new BusinessException("工序查询为空:sql【" + sql.toString() + "】"); + } + return remain; + } + + private boolean isNotNull(Set set) { + return set == null || set.size() < 1 ? false : true; + } + + public Map> getQueryParamList(AggRtVO[] aggVos) { + Map> queryParamMap = new HashMap<>(); + Set bOrgList = new HashSet<>(); + Set hOrgList = new HashSet<>(); + Set crcIdList = new HashSet<>(); + for (AggRtVO aggVo : aggVos) { + RtHeadVO hvo = (RtHeadVO) aggVo.getParentVO(); + hOrgList.add(hvo.getPk_org()); + RtItemVO[] itemVos = (RtItemVO[]) aggVo.getChildren(RtItemVO.class); + if (MMValueCheck.isNotEmpty(itemVos)) { + for (RtItemVO itemVo : itemVos) { + String pkOrg = itemVo.getPk_org(); + String crcId = itemVo.getCrcid(); + if (pkOrg != null) { + bOrgList.add(pkOrg); + } + if (crcId != null) { + crcIdList.add(crcId); + } + } + } + } + queryParamMap.put("bpkorg", bOrgList); + queryParamMap.put("hpkorg", hOrgList); + queryParamMap.put("crcid", crcIdList); + return queryParamMap; + } + + private String getHeadInputField(RtHeadVO[] hvos) { + String retstr = ""; + for (RtHeadVO hvo : hvos) { + if (hvo.getPk_org() == null || MMValueCheck.isEmpty(hvo.getPk_org())) { + retstr = retstr + "pk_org,"; + } + if (hvo.getCmaterialid() == null || MMValueCheck.isEmpty(hvo.getCmaterialid())) { + retstr = retstr + "cmaterialid,"; + } + if (hvo.getNastnum() == null || MMValueCheck.isEmpty(hvo.getNastnum())) { + retstr = retstr + "nastnum,"; + } + if (hvo.getVersion() == null || MMValueCheck.isEmpty(hvo.getVersion())) { + retstr = retstr + "version,"; + } + if (hvo.getFversiontype() == null || MMValueCheck.isEmpty(hvo.getFversiontype())) { + retstr = retstr + "fversiontype,"; + } + } + return retstr; + } + + private String getBodyInputField(RtItemVO[] bvos) { + String retstr = ""; + for (RtItemVO bvo : bvos) { + if (bvo.getVprocessno() == null || MMValueCheck.isEmpty(bvo.getVprocessno())) { + retstr = retstr + "vprocessno,"; + } + if (bvo.getProcessmovetype() == null || MMValueCheck.isEmpty(bvo.getProcessmovetype())) { + retstr = retstr + "processmovetype,"; + } + if (bvo.getDeffectdate() == null || MMValueCheck.isEmpty(bvo.getDeffectdate())) { + retstr = retstr + "deffectdate,"; + } + if (bvo.getDinvaliddate() == null || MMValueCheck.isEmpty(bvo.getDinvaliddate())) { + retstr = retstr + "dinvaliddate,"; + } + if (bvo.getBmainprocess() == null || MMValueCheck.isEmpty(bvo.getBmainprocess())) { + retstr = retstr + "bmainprocess,"; + } + } + return retstr; + } + + private AggRtVO[] queryVOByIDs(String[] pks) { + AggRtVO[] aggvos = null; + IRtQuery rtquery = (IRtQuery) NCLocator.getInstance().lookup(IRtQuery.class); + MMSqlBuilder sql = new MMSqlBuilder(); + sql.append(" crtid ", pks); + try { + aggvos = rtquery.queryRtByWhereSql(sql.toString()); + } catch (BusinessException e) { + ExceptionUtils.wrappException(e); + } + return aggvos; + } }