From 5e0b306c158fb2d6a7f32b118ffa5a11f33c7112 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=98=8E?= <125556714+Topfunplus@users.noreply.github.com> Date: Wed, 11 Jun 2025 18:29:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20PMO=20=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E7=B1=BB=E5=A4=84=E7=90=86=E7=94=9F=E4=BA=A7=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 PmoResource 类,实现生产订单的保存、更新、删除和查询功能 - 提供 RESTful API 接口,支持 JSON 数据交互 -集成业务逻辑和服务调用,处理数据验证和异常情况 --- .../openapi/mmpac/pmo/PmoResource.java | 166 ++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 mmpac/src/public/nccloud/openapi/mmpac/pmo/PmoResource.java diff --git a/mmpac/src/public/nccloud/openapi/mmpac/pmo/PmoResource.java b/mmpac/src/public/nccloud/openapi/mmpac/pmo/PmoResource.java new file mode 100644 index 0000000..abd0e06 --- /dev/null +++ b/mmpac/src/public/nccloud/openapi/mmpac/pmo/PmoResource.java @@ -0,0 +1,166 @@ +package nccloud.openapi.mmpac.pmo; + +import java.util.List; +import java.util.Map; +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.NCLocator; +import nc.jdbc.framework.processor.MapListProcessor; +import nc.util.mmf.framework.base.MMCollectionUtil; +import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO; +import nc.vo.pub.BusinessException; +import nc.ws.opm.pub.utils.result.APIErrCodeEnum; +import nccloud.api.mmpac.pmo.IAPIPmoMaintainService; +import nccloud.api.rest.utils.ResultMessageUtil; +import nccloud.ws.rest.resource.AbstractNCCRestResource; +import org.json.JSONString; + +@Path("mmpac/pmo") +public class PmoResource extends AbstractNCCRestResource { + private static String HEADTABLE = "mm_pmo"; + private static String BODYTABLE = "mm_mo"; + private static String GRANDTABLE = "mm_pmo_procedure"; + private static final BaseDAO BASE_DAO = new BaseDAO(); + + public PmoResource() { + } + + @POST + @Path("save") + @Consumes({"application/json"}) + @Produces({"application/json"}) + public JSONString save(Map paramMap) { + List> paramList = (List) paramMap.get("data"); + PMOAggVO[] insertBills = null; + + try { + if (MMCollectionUtil.isEmpty(paramList)) { + return ResultMessageUtil.exceptionToJSON("쳣Ҫdata", APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } else { + for (Map map : paramList) { + if (!map.containsKey(HEADTABLE) || !map.containsKey(BODYTABLE)) { + return ResultMessageUtil.exceptionToJSON("쳣ҪͷϢ", APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } + } + + IAPIPmoMaintainService serv = (IAPIPmoMaintainService) NCLocator.getInstance().lookup(IAPIPmoMaintainService.class); + insertBills = serv.save(paramList); + return ResultMessageUtil.toJSON(insertBills, "ɹ"); + } + } catch (Exception e) { + return ResultMessageUtil.exceptionToJSON(e); + } + } + + @POST + @Path("update") + @Consumes({"application/json"}) + @Produces({"application/json"}) + public JSONString update(Map paramMap) { + List> paramList = (List) paramMap.get("data"); + PMOAggVO[] updateBills = null; + + try { + if (MMCollectionUtil.isEmpty(paramList)) { + return ResultMessageUtil.exceptionToJSON("쳣Ҫdata", APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } else { + for (Map map : paramList) { + if (!map.containsKey(HEADTABLE) || !map.containsKey(BODYTABLE)) { + return ResultMessageUtil.exceptionToJSON("쳣ҪͷϢ", APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } + } + + updateBills = ((IAPIPmoMaintainService) NCLocator.getInstance().lookup(IAPIPmoMaintainService.class)).update(paramList); + return ResultMessageUtil.toJSON(updateBills, "޸ijɹ"); + } + } catch (Exception e) { + return ResultMessageUtil.exceptionToJSON(e); + } + } + + @POST + @Path("delete") + @Consumes({"application/json"}) + @Produces({"application/json"}) + public JSONString delete(Map paramMap) { + List hidList = (List) paramMap.get("ids"); + if (MMCollectionUtil.isEmpty(hidList)) { + return ResultMessageUtil.exceptionToJSON("쳣ҪidsϢ", APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } else { + try { + String[] hids = (String[]) hidList.toArray(new String[0]); + ((IAPIPmoMaintainService) NCLocator.getInstance().lookup(IAPIPmoMaintainService.class)).delete(hids); + return ResultMessageUtil.toJSON(new String[0], "ɾɹ"); + } catch (BusinessException e) { + return ResultMessageUtil.exceptionToJSON(e); + } + } + } + + @POST + @Path("queryPmos") + @Consumes({"application/json"}) + @Produces({"application/json"}) + public JSONString queryByPurcahseOrderId(Map paramMap) { + try { + if (paramMap == null || !paramMap.containsKey("vdef8")) { + return ResultMessageUtil.exceptionToJSON("쳣Ҫvdef8Ϣ", APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } + // ȡvdef8 + List vdef8List = (List) paramMap.get("vdef8"); + + // ȡlimit + Integer limit = null; + if (paramMap.containsKey("limit")) { + Object limitObj = paramMap.get("limit"); + if (limitObj instanceof Number) { + limit = ((Number) limitObj).intValue(); + } + } + + String baseSql; + if (MMCollectionUtil.isEmpty(vdef8List)) { + // vdef8ListΪգѯ + baseSql = "SELECT * FROM GET_PRODUCTION_ORDER"; + } else { + // INSQLѯ + StringBuilder sqlBuilder = new StringBuilder("SELECT * FROM GET_PRODUCTION_ORDER WHERE vdef8 IN ("); + for (int i = 0; i < vdef8List.size(); i++) { + if (i > 0) { + sqlBuilder.append(","); + } + sqlBuilder.append("'").append(vdef8List.get(i)).append("'"); + } + sqlBuilder.append(")"); + baseSql = sqlBuilder.toString(); + } + + // limitʹROWNUMƷ + String sql; + if (limit != null && limit > 0) { + sql = "SELECT * FROM (" + baseSql + ") WHERE ROWNUM <= " + limit; + } else { + sql = baseSql; + } + + @SuppressWarnings("unchecked") + List> rows = (List>) BASE_DAO.executeQuery(sql, new MapListProcessor()); + + return ResultMessageUtil.toJSON(rows, "ѯϢɹ"); + + } catch (DAOException e) { + return ResultMessageUtil.exceptionToJSON("ݿѯ쳣: ", e.getMessage()); + } catch (Exception e) { + return ResultMessageUtil.exceptionToJSON(e); + } + } + + public String getModule() { + return "mmpac"; + } +}