添加 PMO 资源类处理生产订单

- 新增 PmoResource 类,实现生产订单的保存、更新、删除和查询功能
- 提供 RESTful API 接口,支持 JSON 数据交互
-集成业务逻辑和服务调用,处理数据验证和异常情况
This commit is contained in:
张明 2025-06-11 18:29:14 +08:00
parent a27d073012
commit 5e0b306c15
1 changed files with 166 additions and 0 deletions

View File

@ -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<String, Object> paramMap) {
List<Map<String, Object>> paramList = (List) paramMap.get("data");
PMOAggVO[] insertBills = null;
try {
if (MMCollectionUtil.isEmpty(paramList)) {
return ResultMessageUtil.exceptionToJSON("传入数据异常参数要包含data", APIErrCodeEnum.BUSINESSEXCCODE.getCode());
} else {
for (Map<String, Object> 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<String, Object> paramMap) {
List<Map<String, Object>> paramList = (List) paramMap.get("data");
PMOAggVO[] updateBills = null;
try {
if (MMCollectionUtil.isEmpty(paramList)) {
return ResultMessageUtil.exceptionToJSON("传入数据异常参数要包含data", APIErrCodeEnum.BUSINESSEXCCODE.getCode());
} else {
for (Map<String, Object> 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, "流程生产订单修改成功");
}
} catch (Exception e) {
return ResultMessageUtil.exceptionToJSON(e);
}
}
@POST
@Path("delete")
@Consumes({"application/json"})
@Produces({"application/json"})
public JSONString delete(Map<String, Object> paramMap) {
List<String> 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<String, Object> paramMap) {
try {
if (paramMap == null || !paramMap.containsKey("vdef8")) {
return ResultMessageUtil.exceptionToJSON("传入数据异常参数要包含vdef8信息", APIErrCodeEnum.BUSINESSEXCCODE.getCode());
}
// 获取vdef8数组
List<String> vdef8List = (List<String>) 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 {
// 构建IN条件的SQL查询
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<Map<String, Object>> rows = (List<Map<String, Object>>) 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";
}
}