高压mes调用回写行状态

This commit is contained in:
lihao 2025-09-24 08:48:48 +08:00
parent baa5472e64
commit aae15b298b
1 changed files with 111 additions and 0 deletions

View File

@ -17,6 +17,7 @@ import nc.itf.mmpac.pmo.pac0002.IPMOQueryService;
import nc.jdbc.framework.processor.MapListProcessor;
import nc.util.mmf.framework.base.MMCollectionUtil;
import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO;
import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO;
import nc.vo.org.OrgVO;
import nc.vo.pub.BusinessException;
import nc.ws.opm.pub.utils.result.APIErrCodeEnum;
@ -158,6 +159,116 @@ public class PmoResource extends AbstractNCCRestResource {
return ResultMessageUtil.exceptionToJSON(e);
}
}
/**
* 回写行状态包含从其他状态回到审核通过状态的功能
* @param paramMap
* @return
*/
@POST
@Path("fitemstatusChange")
@Consumes({"application/json"})
@Produces({"application/json"})
public JSONString fitemstatusChange(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());
}
IPMOQueryService queryService = NCLocator.getInstance().lookup(IPMOQueryService.class);
IPMOBusinessService businessService = NCLocator.getInstance().lookup(IPMOBusinessService.class);
for (Map<String, Object> map : paramList) {
// 验证必要参数
if (!map.containsKey("pks")) {
return ResultMessageUtil.exceptionToJSON("传入数据异常参数要包含生产订单id", APIErrCodeEnum.BUSINESSEXCCODE.getCode());
}
if (!map.containsKey("fitemstatus")) {
return ResultMessageUtil.exceptionToJSON("传入数据异常参数要包含行状态fitemstatus", APIErrCodeEnum.BUSINESSEXCCODE.getCode());
}
String pk = (String) map.get("pks");
int targetStatus;
try {
targetStatus = Integer.parseInt(map.get("fitemstatus").toString());
} catch (NumberFormatException e) {
return ResultMessageUtil.exceptionToJSON("行状态格式错误,必须为整数", APIErrCodeEnum.BUSINESSEXCCODE.getCode());
}
// 不处理自由状态(0)的修改
if (targetStatus == 0) {
return ResultMessageUtil.exceptionToJSON("不支持修改为自由状态", APIErrCodeEnum.BUSINESSEXCCODE.getCode());
}
// 验证状态值是否合法
if (targetStatus < 1 || targetStatus > 4) {
return ResultMessageUtil.exceptionToJSON("行状态值无效必须是1-4之间的整数", APIErrCodeEnum.BUSINESSEXCCODE.getCode());
}
// 查询当前订单信息
PMOAggVO[] currentVOs = queryService.queryPMOAggVOByBid(new String[]{pk});
if (currentVOs == null || currentVOs.length == 0) {
return ResultMessageUtil.exceptionToJSON("未找到订单: " + pk, APIErrCodeEnum.BUSINESSEXCCODE.getCode());
}
for (PMOAggVO vo : currentVOs) {
for(PMOItemVO itemVOS:vo.getChildrenVO()){
// 获取当前行状态
int currentStatus = itemVOS.getFitemstatus(); // 假设存在此方法获取当前状态
// 只有审核通过(4)的订单才能修改为其他状态
if (targetStatus != 4 && currentStatus != 4) {
return ResultMessageUtil.exceptionToJSON(
"订单" + pk + "当前状态为" + currentStatus + ",只有审核通过的订单才能修改行状态",
APIErrCodeEnum.BUSINESSEXCCODE.getCode()
);
}
// 根据当前状态和目标状态决定调用哪个方法
if (targetStatus == 4) {
// 目标状态是审核通过需要从其他状态返回调用对应的cancel方法
switch (currentStatus) {
case 1: // 从投放状态回到审核通过
updateBills = businessService.rowputCancel(currentVOs);
break;
case 2: // 从完工状态回到审核通过
updateBills = businessService.rowfinishCancel(currentVOs);
break;
case 3: // 从关闭状态回到审核通过
updateBills = businessService.rowcloseCancel(currentVOs);
break;
case 4: // 已经是审核通过状态无需处理
break;
default:
return ResultMessageUtil.exceptionToJSON("不支持的当前行状态值: " + currentStatus, APIErrCodeEnum.BUSINESSEXCCODE.getCode());
}
} else {
// 目标状态是1-3从审核通过状态变更调用对应的方法
switch (targetStatus) {
case 1: // 投放
updateBills = businessService.rowput(currentVOs);
break;
case 2: // 完工
updateBills = businessService.rowfinish(currentVOs);
break;
case 3: // 关闭
updateBills = businessService.rowclose(currentVOs);
break;
}
}
}
}
}
return ResultMessageUtil.toJSON(updateBills, "流程生产订单行状态修改成功");
} catch (Exception e) {
return ResultMessageUtil.exceptionToJSON(e);
}
}
@POST
@Path("delete")
@Consumes({"application/json"})