From fa093b84adf248554dd8a7202bba923ced596eaa 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: Mon, 19 May 2025 15:23:12 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E6=8A=A5=E5=91=8A=E6=BA=90?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nccloud/openapi/mmpac/wr/WrResource.java | 569 ++++++++++++++++++ 1 file changed, 569 insertions(+) create mode 100644 mmpac/src/public/nccloud/openapi/mmpac/wr/WrResource.java diff --git a/mmpac/src/public/nccloud/openapi/mmpac/wr/WrResource.java b/mmpac/src/public/nccloud/openapi/mmpac/wr/WrResource.java new file mode 100644 index 0000000..a460f9d --- /dev/null +++ b/mmpac/src/public/nccloud/openapi/mmpac/wr/WrResource.java @@ -0,0 +1,569 @@ +package nccloud.openapi.mmpac.wr; + +import nc.bs.dao.BaseDAO; +import nc.bs.framework.common.NCLocator; +import nc.bs.logging.Log; +import nc.bs.uif2.validation.ValidationFailure; +import nc.util.mmf.framework.base.MMArrayUtil; +import nc.util.mmf.framework.base.MMCollectionUtil; +import nc.util.mmf.framework.base.MMNumberUtil; +import nc.util.mmf.framework.base.MMValueCheck; +import nc.vo.mmpac.wr.entity.AggWrVO; +import nc.vo.mmpac.wr.entity.WrItemVO; +import nc.vo.mmpac.wr.entity.WrQualityVO; +import nc.vo.mmpac.wr.entity.WrSerialNoVO; +import nc.vo.mmpac.wr.entity.WrVO; +import nc.vo.mmpac.wr.enumeration.WrBillStatusEnum; +import nc.vo.pub.BusinessException; +import nc.vo.pub.VOStatus; +import nc.vo.pub.billtype.BilltypeVO; +import nc.vo.pub.lang.UFDate; +import nc.vo.pubapp.AppContext; +import nc.vo.pubapp.pattern.exception.ExceptionUtils; +import nccloud.api.mmpac.wr.IAPIWrMaintain; +import nccloud.api.rest.utils.NCCRestUtils; +import nccloud.api.rest.utils.ResultMessageUtil; +import nccloud.openapi.scmpub.pub.TransferCodeToPKTool; +import nccloud.ws.rest.resource.AbstractNCCRestResource; +import org.json.JSONString; + +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.Arrays; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +@Path("mmpac/wr") +public class WrResource extends AbstractNCCRestResource { + + private static String HEADTABLE = "mm_wr"; + + private static String BODYTABLE = "mm_wr_product"; + + private static String QUALITYTABLE = "mm_wr_quality"; + + private static String SERIALNOTABLE = "mm_wr_serialno"; + + private static String PICKNOTABLE = "mm_wr_pick"; + + private static String GNUM_QUALITY = "ngqualitynum"; + private static String GNUM_REWORK = "ngreworknum"; + private static String GNUM_REJECT = "ngrejectnum"; + private static String GASTNUM_QUALITY = "ngqualityastnum"; + private static String GASTNUM_REWORK = "ngreworkastnum"; + private static String GASTNUM_REJECT = "ngrejectastnum"; + private static List HeadUnUpdateFiled = Arrays.asList(WrVO.PK_WR, WrVO.PK_GROUP, WrVO.CWKID, + WrVO.FBILLSTATUS, WrVO.VBILLCODE, WrVO.PK_ORG, WrVO.PK_ORG_V); + private static List BodyUnUpdateFiled = Arrays.asList(WrItemVO.PK_WR, "cbunitid", "pk_group", "pk_org", + "pk_org_v", "pk_wr_product", "bbhasfbill", "bbhaspicked", "bbinstock", "bbisempass", "cbempass_bid", + "cbempass_brow", "cbempasscode", "cbempassid", "cbfirstmobid", "cbfirstmoid", "cbsrctranstype", "cbsrcmoid", + "cbsrcmobid", "cbfirstranstype", "cbmaterialid", "cbmainmaterialid", "fbsourcetype", "nbaldempinastnum", + "nbaldempinnum", "nbcheckastnum", "nbchecknum", "nbempassastnum", "nbempassnum", "nbsldcheckastnum", + "nbsldchecknum", "nbsldinastnum", "nbsldinnum", "vbbatchid", "vbfirstcode", "vbfirstid", "vbfirstmocode", + "vbfirstmorowno", "vbfirstranstype", "vbfirstrowid", "vbfirstrowno", "vbfirsttype", "vbidentify", + "vbinbatchid", "vbmainidentify", "vbmainmorowno", "vbmobillcode", "vbmoparentbillcode", "vbmorowno", + "vbparentmorowno", "vbsalebillcode", "vbsalebillid", "vbsrccode", "vbsrcid", "vbsrcmocode", "vbsrcmorowno", + "vbsrcrowid", "vbsrcrowno", "vbmainbomcode", "vbsrctranstype", "bbhasbckfled", "bbhaspicked", "bbsetmark"); + + @POST + @Path("saveAndApprove") + @Consumes({ "application/json" }) + @Produces({ "application/json" }) + public JSONString saveAndApprove(List> paramList) { + if (MMValueCheck.isEmpty(paramList)) { + return ResultMessageUtil.exceptionToJSON("传入数据异常,参数要包含表头信息和表体信息", "1"); + } + List voList = new ArrayList(); + try { + for (Map paramMap : paramList) { + if (!paramMap.containsKey(HEADTABLE) || !paramMap.containsKey(BODYTABLE)) { + return ResultMessageUtil.exceptionToJSON("传入数据异常,参数要包含表头信息和表体信息", "1"); + } + Map headInfo = (Map) paramMap.get(HEADTABLE); + List> itemInfos = new ArrayList>(); + if (paramMap.get(BODYTABLE) instanceof List) { + itemInfos = (List>) paramMap.get(BODYTABLE); + } else { + Map bodyInfo = (Map) paramMap.get(BODYTABLE); + itemInfos.add(bodyInfo); + } + AggWrVO vo = new AggWrVO(); + WrVO head = new WrVO(); + head.setPk_group(AppContext.getInstance().getPkGroup()); + head.setStatus(VOStatus.NEW); + for (String key : headInfo.keySet()) { + head.setAttributeValue(key, headInfo.get(key)); + } + vo.setParentVO(head); + List items = new ArrayList(); + String paramdata = NCCRestUtils.toJSONString(itemInfos).toJSONString(); + Log.getInstance("mm-mes").info("mes到生产报告参数:" + paramdata); + for (Map itemMap : itemInfos) { + WrItemVO item = new WrItemVO(); + item.setStatus(VOStatus.NEW); + boolean hasGNumFlag = false; + for (String key : itemMap.keySet()) { + if (QUALITYTABLE.equals(key)) { + List> qualityInfos = (List>) itemMap + .get(QUALITYTABLE); + List qualitys = this.getWrQualitys(qualityInfos); + item.setQualityvos(qualitys.toArray(new WrQualityVO[0])); + } else if (SERIALNOTABLE.equals(key)) { + List> snInfos = (List>) itemMap.get(SERIALNOTABLE); + List snVOs = this.getWrSerialNos(snInfos); + item.setSerialnovos(snVOs.toArray(new WrSerialNoVO[0])); + } else if (PICKNOTABLE.equals(key)) { + continue; + } else if (this.isGNumFilds(key)) { + hasGNumFlag = true; + } else { + item.setAttributeValue(key, itemMap.get(key)); + } + } + if (hasGNumFlag) { + List qualitys = this.getWrQualitysByGnum(itemMap, item); + item.setQualityvos(qualitys.toArray(new WrQualityVO[0])); + } + items.add(item); + } + vo.setChildren(WrItemVO.class, items.toArray(new WrItemVO[0])); + voList.add(vo); + IAPIWrMaintain server = NCLocator.getInstance().lookup(IAPIWrMaintain.class); + AggWrVO[] aggvos = server.saveAndApprove(voList.toArray(new AggWrVO[0])); + boolean successFlag = true; + StringBuilder errMsg = new StringBuilder(); + if (MMArrayUtil.isNotEmpty(aggvos)) { + for (AggWrVO aggvo : aggvos) { + List validateList = aggvo.getParentVO().getExcpMsgList(); + if (MMCollectionUtil.isNotEmpty(validateList)) { + successFlag = false; + errMsg.append(aggvo.getParentVO().getVbillcode()); + errMsg.append(":"); + for (ValidationFailure validate : validateList) { + errMsg.append(validate.getMessage()); + errMsg.append(";"); + } + } + } + } + if (successFlag) { + return ResultMessageUtil.toJSON(aggvos, "生产报告保存成功"); + } else { + ExceptionUtils.wrappBusinessException(errMsg.toString()); + } + } + } catch (Exception e) { + return ResultMessageUtil.exceptionToJSON(e); + } + return null; + } + + private List getWrQualitysByGnum(Map itemMap, WrItemVO item) { + List qualityVOs = new ArrayList(); + // 合格数量1 + if (itemMap.containsKey(WrResource.GNUM_QUALITY) || itemMap.containsKey(WrResource.GASTNUM_QUALITY)) { + WrQualityVO qVO = new WrQualityVO(); + qVO.setFgprocessmethod(1); + if (itemMap.containsKey(WrResource.GNUM_QUALITY)) { + qVO.setAttributeValue(WrQualityVO.NGNUM, itemMap.get(WrResource.GNUM_QUALITY)); + } + if (itemMap.containsKey(WrResource.GASTNUM_QUALITY)) { + qVO.setAttributeValue(WrQualityVO.NGASTNUM, itemMap.get(WrResource.GASTNUM_QUALITY)); + } + if (MMNumberUtil.isGtZero(qVO.getNgnum()) || MMNumberUtil.isGtZero(qVO.getNgastnum())) { + qualityVOs.add(qVO); + } + } + // 报废数量2 + if (itemMap.containsKey(WrResource.GNUM_REJECT) || itemMap.containsKey(WrResource.GASTNUM_REJECT)) { + WrQualityVO qVO = new WrQualityVO(); + qVO.setFgprocessmethod(2); + if (itemMap.containsKey(WrResource.GNUM_REJECT)) { + qVO.setAttributeValue(WrQualityVO.NGNUM, itemMap.get(WrResource.GNUM_REJECT)); + } + if (itemMap.containsKey(WrResource.GASTNUM_REJECT)) { + qVO.setAttributeValue(WrQualityVO.NGASTNUM, itemMap.get(WrResource.GASTNUM_REJECT)); + } + if (MMNumberUtil.isGtZero(qVO.getNgnum()) || MMNumberUtil.isGtZero(qVO.getNgastnum())) { + qualityVOs.add(qVO); + } + } + // 返工数量3 + if (itemMap.containsKey(WrResource.GNUM_REWORK) || itemMap.containsKey(WrResource.GASTNUM_REWORK)) { + WrQualityVO qVO = new WrQualityVO(); + qVO.setFgprocessmethod(3); + if (itemMap.containsKey(WrResource.GNUM_REWORK)) { + qVO.setAttributeValue(WrQualityVO.NGNUM, itemMap.get(WrResource.GNUM_REWORK)); + } + if (itemMap.containsKey(WrResource.GASTNUM_REWORK)) { + qVO.setAttributeValue(WrQualityVO.NGASTNUM, itemMap.get(WrResource.GASTNUM_REWORK)); + } + if (MMNumberUtil.isGtZero(qVO.getNgnum()) || MMNumberUtil.isGtZero(qVO.getNgastnum())) { + qualityVOs.add(qVO); + } + } + return qualityVOs; + } + + private boolean isGNumFilds(String key) { + if (WrResource.GNUM_QUALITY.equals(key)) { + return true; + } else if (WrResource.GASTNUM_QUALITY.equals(key)) { + return true; + } else if (WrResource.GNUM_REJECT.equals(key)) { + return true; + } else if (WrResource.GASTNUM_REJECT.equals(key)) { + return true; + } else if (WrResource.GNUM_REWORK.equals(key)) { + return true; + } else if (WrResource.GASTNUM_REWORK.equals(key)) { + return true; + } + return false; + } + + private List getWrSerialNos(List> snInfos) { + List snVOs = new ArrayList(); + for (Map snInfo : snInfos) { + WrSerialNoVO snVO = new WrSerialNoVO(); + for (String key : snInfo.keySet()) { + snVO.setAttributeValue(key, snInfo.get(key)); + } + snVOs.add(snVO); + } + return snVOs; + } + + private List getWrQualitys(List> qualityInfos) { + List qualityVOs = new ArrayList(); + for (Map qualityInfo : qualityInfos) { + WrQualityVO qualityVO = new WrQualityVO(); + for (String key : qualityInfo.keySet()) { + qualityVO.setAttributeValue(key, qualityInfo.get(key)); + } + qualityVOs.add(qualityVO); + } + return qualityVOs; + } + + @Override + public String getModule() { + // TODO Auto-generated method stub + return null; + } + + @POST + @Path("deleteByMesIDs") + @Consumes({ "application/json" }) + @Produces({ "application/json" }) + public JSONString deleteByMesIDs(String[] mesIDs) { + if (MMValueCheck.isEmpty(mesIDs)) { + return ResultMessageUtil.exceptionToJSON("传入数据异常", "1"); + } + try { + IAPIWrMaintain server = NCLocator.getInstance().lookup(IAPIWrMaintain.class); + server.deleteWrByMesID(mesIDs); + return ResultMessageUtil.toJSON(null, "生产报告删除成功"); + + } catch (Exception e) { + return ResultMessageUtil.exceptionToJSON(e); + } + } + + @POST + @Path("newsave") + @Consumes({ "application/json" }) + @Produces({ "application/json" }) + public JSONString newsave(Map paramsMap) { + List> paramList = (List>) paramsMap.get("data"); + if (MMValueCheck.isEmpty(paramList)) { + return ResultMessageUtil.exceptionToJSON("传入数据异常,参数要包含表头信息和表体信息", "1"); + } + List voList = new ArrayList(); + try { + for (Map paramMap : paramList) { + if (!paramMap.containsKey(HEADTABLE) || !paramMap.containsKey(BODYTABLE)) { + return ResultMessageUtil.exceptionToJSON("传入数据异常,参数要包含表头信息和表体信息", "1"); + } + Map headInfo = (Map) paramMap.get(HEADTABLE); + List> itemInfos = new ArrayList>(); + if (paramMap.get(BODYTABLE) instanceof List) { + itemInfos = (List>) paramMap.get(BODYTABLE); + } else { + Map bodyInfo = (Map) paramMap.get(BODYTABLE); + itemInfos.add(bodyInfo); + } + AggWrVO vo = new AggWrVO(); + WrVO head = new WrVO(); + head.setPk_group(AppContext.getInstance().getPkGroup()); + for (String key : headInfo.keySet()) { + if (MMValueCheck.isEmpty(headInfo.get(key))) { + continue; + } + head.setAttributeValue(key, headInfo.get(key)); + } + vo.setParentVO(head); + List items = new ArrayList(); + String paramdata = NCCRestUtils.toJSONString(itemInfos).toJSONString(); + Log.getInstance("mm-mes").info("mes到生产报告参数:" + paramdata); + for (Map itemMap : itemInfos) { + WrItemVO item = new WrItemVO(); + boolean hasGNumFlag = false; + for (String key : itemMap.keySet()) { + + if (QUALITYTABLE.equals(key)) { + List> qualityInfos = (List>) itemMap + .get(QUALITYTABLE); + List qualitys = this.getWrQualitys(qualityInfos); + item.setQualityvos(qualitys.toArray(new WrQualityVO[0])); + } else if (SERIALNOTABLE.equals(key)) { + List> snInfos = (List>) itemMap.get(SERIALNOTABLE); + List snVOs = this.getWrSerialNos(snInfos); + item.setSerialnovos(snVOs.toArray(new WrSerialNoVO[0])); + } else if (PICKNOTABLE.equals(key)) { + continue; + } else if (this.isGNumFilds(key)) { + hasGNumFlag = true; + } else { + if (MMValueCheck.isEmpty(itemMap.get(key))) { + continue; + } + item.setAttributeValue(key, itemMap.get(key)); + } + } + if (hasGNumFlag) { + List qualitys = this.getWrQualitysByGnum(itemMap, item); + item.setQualityvos(qualitys.toArray(new WrQualityVO[0])); + } + items.add(item); + } + vo.setChildren(WrItemVO.class, items.toArray(new WrItemVO[0])); + voList.add(vo); + IAPIWrMaintain server = NCLocator.getInstance().lookup(IAPIWrMaintain.class); +// List aggWrVOS = TransferCodeToPKTool.transferAggVO(voList); +// //翻译报告类型 +// List collection = (List) new BaseDAO().retrieveByClause(BilltypeVO.class, " pk_billtypecode='" + aggWrVOS.get(0).getParentVO().getVtrantypecode()+"'"); +// aggWrVOS.get(0).getParentVO().setVtrantypeid(collection.get(0).getPk_billtypeid()); +// aggWrVOS.get(0).getParentVO().setDbilldate(new UFDate()); +// AggWrVO[] aggvos = server.newsave(aggWrVOS.toArray(new AggWrVO[0])); + AggWrVO[] aggvos = server.newsave(voList.toArray(new AggWrVO[0])); + boolean successFlag = true; + StringBuilder errMsg = new StringBuilder(); + if (MMArrayUtil.isNotEmpty(aggvos)) { + for (AggWrVO aggvo : aggvos) { + List validateList = aggvo.getParentVO().getExcpMsgList(); + if (MMCollectionUtil.isNotEmpty(validateList)) { + successFlag = false; + errMsg.append(aggvo.getParentVO().getVbillcode()); + errMsg.append(":"); + for (ValidationFailure validate : validateList) { + errMsg.append(validate.getMessage()); + errMsg.append(";"); + } + } + } + } + if (successFlag) { + return ResultMessageUtil.toJSON(aggvos, "生产报告保存成功"); + } else { + ExceptionUtils.wrappBusinessException(errMsg.toString()); + } + } + } catch (Exception e) { + return ResultMessageUtil.exceptionToJSON(e); + } + return null; + } + + @POST + @Path("update") + @Consumes({ "application/json" }) + @Produces({ "application/json" }) + public JSONString update(Map paramsMap) throws BusinessException { + List> paramList = (List>) paramsMap.get("data"); + if (MMValueCheck.isEmpty(paramList)) { + return ResultMessageUtil.exceptionToJSON("传入数据异常,参数要包含表头信息和表体信息", "1"); + } + List voList = new ArrayList(); + IAPIWrMaintain server = NCLocator.getInstance().lookup(IAPIWrMaintain.class); + + List aggIds = new ArrayList<>(); + for (Map paramMap : paramList) { + if (!paramMap.containsKey(HEADTABLE) || !paramMap.containsKey(BODYTABLE)) { + return ResultMessageUtil.exceptionToJSON("传入数据异常,参数要包含表头信息和表体信息", "1"); + } + Map headInfo = (Map) paramMap.get(HEADTABLE); + if (MMValueCheck.isNotEmpty(headInfo.get("pk_wr"))) { + aggIds.add(headInfo.get("pk_wr").toString()); + } + } + if (MMValueCheck.isEmpty(aggIds)) { + return ResultMessageUtil.exceptionToJSON("传入数据异常,参数要包含生产报告表头主键", "1"); + } + AggWrVO[] aggWrVOSByIds = server.findAggWrVOSByIds(aggIds.toArray(new String[0])); + Map voMap = new HashMap<>(); + for (AggWrVO aggWrVO : aggWrVOSByIds) { + voMap.put(aggWrVO.getParentVO().getPk_wr(), aggWrVO); + } + + try { + // 根据传递阐参数修改生产报告数据 + for (Map paramMap : paramList) { + + Map headInfo = (Map) paramMap.get(HEADTABLE); + List> itemInfos = new ArrayList>(); + if (paramMap.get(BODYTABLE) instanceof List) { + itemInfos = (List>) paramMap.get(BODYTABLE); + } else { + Map bodyInfo = (Map) paramMap.get(BODYTABLE); + itemInfos.add(bodyInfo); + } + AggWrVO vo = voMap.get(headInfo.get("pk_wr").toString()); + if (MMValueCheck.isEmpty(vo)) { + return ResultMessageUtil + .exceptionToJSON("单据号:" + headInfo.get("vbillcode") + "生产报告在数据库中不存在或者已经被删除!", "1"); + } + WrVO head = vo.getParentVO(); + if (!(WrBillStatusEnum.I_FREEDOM.intValue() == head.getFbillstatus())) { + return ResultMessageUtil.exceptionToJSON("非自由态的生产报告不允许修改!", "1"); + } + + // 处理表头数据 + head.setStatus(VOStatus.UPDATED); + for (String key : headInfo.keySet()) { + if (MMValueCheck.isEmpty(headInfo.get(key))) { + continue; + } + if (HeadUnUpdateFiled.contains(key) + && !head.getAttributeValue(key).toString().equals(headInfo.get(key))) { + return ResultMessageUtil.exceptionToJSON("表头属性:" + key + "不允许修改", "1"); + } + head.setAttributeValue(key, headInfo.get(key)); + } + vo.setParentVO(head); + + // 处理表体数据和孙表数据 + Map wrItemVOMap = new HashMap<>(); + if (MMValueCheck.isNotEmpty(vo.getChildrenVO())) { + for (WrItemVO wrItemVO : vo.getChildrenVO()) { + wrItemVOMap.put(wrItemVO.getPk_wr_product(), wrItemVO); + } + } + List items = new ArrayList(); + String paramdata = NCCRestUtils.toJSONString(itemInfos).toJSONString(); + Log.getInstance("mm-mes").info("mes到生产报告参数:" + paramdata); + for (Map itemMap : itemInfos) { + WrItemVO item = wrItemVOMap.get(itemMap.get("pk_wr_product")); + if (MMValueCheck.isEmpty(item)) { + continue; + } + item.setStatus(VOStatus.UPDATED); + boolean hasGNumFlag = false; + for (String key : itemMap.keySet()) { + + if (QUALITYTABLE.equals(key)) { + List> qualityInfos = (List>) itemMap + .get(QUALITYTABLE); + List qualitys = this.getWrQualitys(qualityInfos); + item.setQualityvos(qualitys.toArray(new WrQualityVO[0])); + } else if (SERIALNOTABLE.equals(key)) { + List> snInfos = (List>) itemMap.get(SERIALNOTABLE); + List snVOs = this.getWrSerialNos(snInfos); + item.setSerialnovos(snVOs.toArray(new WrSerialNoVO[0])); + } else if (PICKNOTABLE.equals(key)) { + continue; + } else if (this.isGNumFilds(key)) { + hasGNumFlag = true; + } else { + if (MMValueCheck.isEmpty(itemMap.get(key))) { + continue; + } + if (BodyUnUpdateFiled.contains(key) && MMValueCheck.isNotEmpty(item.getAttributeValue(key)) + && !item.getAttributeValue(key).toString().equals(itemMap.get(key).toString())) { + return ResultMessageUtil.exceptionToJSON("表体属性:" + key + "不允许修改", "1"); + } + item.setAttributeValue(key, itemMap.get(key)); + } + } + if (hasGNumFlag) { + List qualitys = this.getWrQualitysByGnum(itemMap, item); + item.setQualityvos(qualitys.toArray(new WrQualityVO[0])); + } + items.add(item); + } + vo.setChildren(WrItemVO.class, items.toArray(new WrItemVO[0])); + voList.add(vo); + } + + AggWrVO[] aggvos = server.update(voList.toArray(new AggWrVO[0])); + boolean successFlag = true; + StringBuilder errMsg = new StringBuilder(); + if (MMArrayUtil.isNotEmpty(aggvos)) { + for (AggWrVO aggvo : aggvos) { + List validateList = aggvo.getParentVO().getExcpMsgList(); + if (MMCollectionUtil.isNotEmpty(validateList)) { + successFlag = false; + errMsg.append(aggvo.getParentVO().getVbillcode()); + errMsg.append(":"); + for (ValidationFailure validate : validateList) { + errMsg.append(validate.getMessage()); + errMsg.append(";"); + } + } + } + } + if (successFlag) { + return ResultMessageUtil.toJSON(aggvos, "生产报告修改成功"); + } else { + ExceptionUtils.wrappBusinessException(errMsg.toString()); + } + } catch (Exception e) { + return ResultMessageUtil.exceptionToJSON(e); + } + return null; + } + + @POST + @Path("delete") + @Consumes({ "application/json" }) + @Produces({ "application/json" }) + public JSONString delete(Map paramMap) throws BusinessException { + if (MMValueCheck.isEmpty(paramMap)) { + return ResultMessageUtil.exceptionToJSON("传入数据异常", "1"); + } + Set aggwrIds = new HashSet<>(); + Map idTsMap = new HashMap<>(); + if (!paramMap.containsKey("aggWrPk")) { + return ResultMessageUtil.exceptionToJSON("传入数据异常,参数要包含生产报告主键", "10000"); + } + aggwrIds.addAll((Collection) paramMap.get("aggWrPk")); + + try { + IAPIWrMaintain server = NCLocator.getInstance().lookup(IAPIWrMaintain.class); + AggWrVO[] aggWrVOSByIds = server.findAggWrVOSByIds(aggwrIds.toArray(new String[0])); + + List deleteVos = new ArrayList<>(); + for (AggWrVO aggWrVOSById : aggWrVOSByIds) { + if (!(WrBillStatusEnum.I_FREEDOM.intValue() == aggWrVOSById.getParentVO().getFbillstatus())) { + continue; + } + deleteVos.add(aggWrVOSById); + } + if (MMValueCheck.isEmpty(deleteVos)) { + return ResultMessageUtil.exceptionToJSON("生产报告状态为审批通过,不允许删除!", "1"); + } + server.delete(deleteVos.toArray(new AggWrVO[0])); + return ResultMessageUtil.toJSON(new String[0], "生产报告删除成功"); + } catch (Exception e) { + return ResultMessageUtil.exceptionToJSON(e); + } + } + +}