From aa1dda4fa2693974d2aea2c9718259574340637f Mon Sep 17 00:00:00 2001 From: gengby <858962040@qq.com> Date: Tue, 30 Jun 2026 09:11:11 +0800 Subject: [PATCH] =?UTF-8?q?add:=E8=A7=A3=E5=8C=85=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/nl/common/utils/dto/CurrentUser.java | 2 + .../service/impl/PdaJBServiceImpl.java | 8 +- .../sch_manage/service/mapper/PdaJBMapper.xml | 5 +- .../controller/PdmBdWorkorderController.java | 6 + .../pm_manage/enums/WorkOrderStatusEnum.java | 4 +- .../service/IPdmBdWorkorderService.java | 2 + .../pm_manage/service/dao/PdmBdWorkorder.java | 6 + .../service/dto/PdmBdWorkorderDto.java | 15 ++ .../impl/PdmBdWorkorderServiceImpl.java | 19 ++ .../tasks/jb/JbDownCloseUnsealingAgvTask.java | 244 ++++++++++++++++++ .../service/util/tasks/jb/JbUpAgvTask.java | 2 +- .../service/util/tasks/jb/JbUpManualTask.java | 2 +- .../secutiry/AuthorizationController.java | 1 + .../service/role/ISysRoleService.java | 7 + .../role/dao/mapper/SysRoleMapper.java | 7 + .../service/role/dao/mapper/SysRoleMapper.xml | 6 + .../service/role/impl/SysRoleServiceImpl.java | 8 + .../secutiry/impl/HandLoginServiceImpl.java | 3 + .../user/impl/ISysUserServiceImpl.java | 3 + .../service/impl/InBillServiceImpl.java | 192 ++++++++------ lms/nladmin-ui/src/store/getters.js | 1 + lms/nladmin-ui/src/store/modules/user.js | 6 + .../views/wms/pm_manage/workerorder/index.vue | 74 ++++-- .../pm_manage/workerorder/pdmBdWorkorder.js | 10 +- 24 files changed, 528 insertions(+), 105 deletions(-) create mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/jb/JbDownCloseUnsealingAgvTask.java diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/dto/CurrentUser.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/dto/CurrentUser.java index e089a23..5bad931 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/dto/CurrentUser.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/dto/CurrentUser.java @@ -36,6 +36,8 @@ public class CurrentUser implements Serializable { private List permissions = new ArrayList<>(); + private List roleNames = new ArrayList<>(); + public static CurrentUser getDefaultUser() { CurrentUser def = new CurrentUser(); def.setId("2"); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/impl/PdaJBServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/impl/PdaJBServiceImpl.java index e92dd5d..b7b0a3a 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/impl/PdaJBServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/impl/PdaJBServiceImpl.java @@ -127,7 +127,7 @@ public class PdaJBServiceImpl implements PdaJBService { String flag = whereJson.getString("flag"); List workorders = pdaJBMapper.getUnProductOrderList( whereJson.getString("point_code"), - "1".equals(flag) ? "1" : "4"); + "1".equals(flag) ? "2" : "4"); return PdaResponse.requestParamOk(workorders); } @@ -166,8 +166,8 @@ public class PdaJBServiceImpl implements PdaJBService { if (ObjectUtil.isEmpty(workorder)) { throw new BadRequestException("工单不存在!"); } - if (!"1".equals(workorder.getWorkorder_status())) { - throw new BadRequestException("该工单不是未生产,无法开工!"); + if (!"2".equals(workorder.getWorkorder_status())) { + throw new BadRequestException("该工单不是审核状态,无法开工!"); } final String taskPointCode = pointCode; // 判断任务 @@ -446,7 +446,7 @@ public class PdaJBServiceImpl implements PdaJBService { List list = taskService.list(new LambdaQueryWrapper() .lt(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode()) .eq(SchBaseTask::getIs_delete, false) - .in(SchBaseTask::getConfig_code, Arrays.asList("JbDownAgvTask", "JbDownManualTask")) + .in(SchBaseTask::getConfig_code, Arrays.asList("JbDownAgvTask", "JbDownCloseUnsealingAgvTask", "JbDownManualTask")) .and(ll -> ll.like(SchBaseTask::getPoint_code1, taskPointCode).or() .like(SchBaseTask::getPoint_code2, taskPointCode).or() .like(SchBaseTask::getPoint_code3, taskPointCode).or() diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/mapper/PdaJBMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/mapper/PdaJBMapper.xml index 22f1080..5ca0be3 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/mapper/PdaJBMapper.xml +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/mapper/PdaJBMapper.xml @@ -7,7 +7,10 @@ mm.material_name FROM `pdm_bd_workorder` o LEFT JOIN md_me_materialbase mm ON mm.material_id = o.material_id - WHERE o.workorder_status = #{workorder_status} + WHERE o.workorder_status IN + + #{status} + AND o.point_code = #{pointCode} ORDER BY o.update_time diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/controller/PdmBdWorkorderController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/controller/PdmBdWorkorderController.java index 62fcadd..14f14df 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/controller/PdmBdWorkorderController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/controller/PdmBdWorkorderController.java @@ -66,6 +66,12 @@ public class PdmBdWorkorderController { pdmBdWorkorderService.submits(entity); return new ResponseEntity<>(HttpStatus.NO_CONTENT); } + @PostMapping("/audit") + @Log("审核") + public ResponseEntity audit(@RequestBody PdmBdWorkorder entity) { + pdmBdWorkorderService.audit(entity); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } @PostMapping("/loadComplete") @Log("上料完成") public ResponseEntity loadComplete(@RequestBody PdmBdWorkorder entity) { diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/enums/WorkOrderStatusEnum.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/enums/WorkOrderStatusEnum.java index e482849..eff6864 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/enums/WorkOrderStatusEnum.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/enums/WorkOrderStatusEnum.java @@ -16,9 +16,9 @@ public enum WorkOrderStatusEnum { */ UNPRODUCED("1", "未生产"), /** - * 已下发 x + * 审核 */ - ISSUED("2", "已下发"), + ISSUED("2", "审核"), /** * 生产中 */ diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/service/IPdmBdWorkorderService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/service/IPdmBdWorkorderService.java index 9e3bc69..5c5d434 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/service/IPdmBdWorkorderService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/service/IPdmBdWorkorderService.java @@ -86,6 +86,8 @@ public interface IPdmBdWorkorderService extends IService { */ void submits(PdmBdWorkorder entity); + void audit(PdmBdWorkorder entity); + void loadComplete(PdmBdWorkorder entity); void batchAddOrders(JSONObject entity); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/service/dao/PdmBdWorkorder.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/service/dao/PdmBdWorkorder.java index 7a7f779..f3a6cfb 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/service/dao/PdmBdWorkorder.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/service/dao/PdmBdWorkorder.java @@ -81,6 +81,12 @@ public class PdmBdWorkorder implements Serializable { private String workshop_code; + private String audit_id; + + private String audit_name; + + private String audit_time; + private String ext_id; private String ext_data; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/service/dto/PdmBdWorkorderDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/service/dto/PdmBdWorkorderDto.java index 37d869e..f06fd27 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/service/dto/PdmBdWorkorderDto.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/service/dto/PdmBdWorkorderDto.java @@ -119,6 +119,21 @@ public class PdmBdWorkorderDto implements Serializable { */ private String workshop_code; + /** + * 审核人 + */ + private String audit_id; + + /** + * 审核人姓名 + */ + private String audit_name; + + /** + * 审核时间 + */ + private String audit_time; + /** * 外部标识 */ diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/service/impl/PdmBdWorkorderServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/service/impl/PdmBdWorkorderServiceImpl.java index d165c52..054a72e 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/service/impl/PdmBdWorkorderServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/service/impl/PdmBdWorkorderServiceImpl.java @@ -201,6 +201,25 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl batchTask = new ArrayList<>(); + for (int i = 0; i < tasks.size(); i++) { + JSONObject json = tasks.getJSONObject(i); + SchBaseTask task = new SchBaseTask(); + task.setTask_id(IdUtil.getStringId()); + task.setTask_code(json.getString("TaskCode")); + task.setTask_status(TaskStatus.CREATED.getCode()); + task.setConfig_code(json.getString("task_type")); + task.setPoint_code1(json.getString("point_code1")); + task.setPoint_code2(json.getString("point_code2")); + task.setPoint_code3(json.getString("point_code3")); + task.setPoint_code4(json.getString("point_code4")); + task.setVehicle_code(json.getString("vehicle_code")); + task.setVehicle_code2(json.getString("vehicle_code2")); + task.setVehicle_type(json.getString("vehicle_type")); + task.setGroup_id(json.getString("group_id")); + task.setTask_group_id(json.getString("task_group_id")); + task.setTask_group_seq(json.getBigDecimal("task_group_seq")); + task.setRequest_param(json.toString()); + task.setPriority(json.getString("Priority")); + task.setCreate_id(SecurityUtils.getCurrentUserId()); + task.setCreate_name(SecurityUtils.getCurrentNickName()); + task.setCreate_time(DateUtil.now()); + batchTask.add(task); + } + taskService.saveBatch(batchTask); + return batchTask.get(batchTask.size() - 1).getTask_id(); + } + + @Override + public AcsTaskDto sendAcsParam(String taskId) { + SchBaseTask taskDao = taskService.getById(taskId); + SchBaseTaskconfig taskconfig = taskconfigService.getTaskByConfigCode(taskDao.getConfig_code()); + JSONObject object = JSONObject.parseObject(taskDao.getRequest_param()); + + AcsTaskDto acsTaskDto = new AcsTaskDto(); + acsTaskDto.setExt_task_uuid(taskDao.getTask_id()); + acsTaskDto.setTask_code(taskDao.getTask_code()); + acsTaskDto.setStart_device_code(taskDao.getPoint_code1()); + acsTaskDto.setNext_device_code(taskDao.getPoint_code2()); + acsTaskDto.setStart_device_code2(taskDao.getPoint_code3()); + acsTaskDto.setNext_device_code2(taskDao.getPoint_code4()); + acsTaskDto.setAgv_system_type("3"); + acsTaskDto.setPriority(taskDao.getPriority()); + acsTaskDto.setTask_type(taskconfig.getTask_type()); + acsTaskDto.setTruss_type(object.getString("truss_type")); + acsTaskDto.setInteraction_json(new JSONObject().fluentPut("have_lid", object.getString("have_lid"))); + fillCommonAcsTaskFields(taskDao, acsTaskDto); + return acsTaskDto; + } + + @Override + protected void updateStatus(String task_code, TaskStatus status) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { + throw new BadRequestException("该任务已完成!"); + } + if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { + throw new BadRequestException("该任务已取消!"); + } + if (status.equals(TaskStatus.EXECUTING)) { + taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); + taskObj.setRemark("执行中"); + TaskUtils.setUpdateByAcs(taskObj); + taskService.updateById(taskObj); + } + if (status.equals(TaskStatus.FINISHED)) { + this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); + } + if (status.equals(TaskStatus.CANCELED)) { + this.cancelTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); + } + } + + public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + taskObj.setRemark("已取消"); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); + ioStorInvDisMapper.update(new IOStorInvDis(), new LambdaUpdateWrapper<>(IOStorInvDis.class) + .set(IOStorInvDis::getTask_id, null) + .set(IOStorInvDis::getPoint_code, null) + .set(IOStorInvDis::getIs_issued, 0) + .set(IOStorInvDis::getWork_status, IOSEnum.INBILL_DIS_STATUS.code("未生成")) + .eq(IOStorInvDis::getTask_id, taskObj.getTask_id())); + clearPointTaskCode(taskObj.getPoint_code1()); + clearPointTaskCode(taskObj.getPoint_code4()); + clearStructTaskCode(taskObj.getPoint_code2()); + clearStructTaskCode(taskObj.getPoint_code3()); + } + + public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + MdPbStoragevehicleinfo emptyVehicleInfo = storagevehicleinfoService.getByCode(taskObj.getVehicle_code2()); + if (ObjectUtil.isEmpty(emptyVehicleInfo)) { + throw new BadRequestException(taskObj.getVehicle_code2() + "的托盘信息不存在!"); + } + // point4 等于 point1,最终状态应为对接位补入空桶 + clearStruct(taskObj.getPoint_code3()); + occupyStruct(taskObj.getPoint_code2(), taskObj.getVehicle_code(), taskObj.getVehicle_type()); + occupyPoint(taskObj.getPoint_code4(), taskObj.getVehicle_code2(), emptyVehicleInfo.getStoragevehicle_type(), "2"); + taskObj.setRemark("任务执行完毕"); + inBillService.taskFinish(taskObj); + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); + } + + private void occupyPoint(String code, String vehicleCode, String vehicleType, String pointStatus) { + SchBasePoint point = pointService.getById(code); + if (ObjectUtil.isEmpty(point)) { + throw new BadRequestException("点位不存在:" + code); + } + point.setPoint_status(pointStatus); + point.setVehicle_code(vehicleCode); + point.setVehicle_type(vehicleType); + point.setUpdate_time(DateUtil.now()); + pointService.updateById(point); + } + + private void clearStruct(String code) { + Structattr struct = structattrService.getByCode(code); + if (ObjectUtil.isEmpty(struct)) { + throw new BadRequestException("仓位不存在:" + code); + } + structattrService.update(new LambdaUpdateWrapper() + .set(Structattr::getStoragevehicle_code, null) + .set(Structattr::getStoragevehicle_type, null) + .set(Structattr::getOccupancy_state, "1") + .eq(Structattr::getStruct_code, code)); + } + + private void occupyStruct(String code, String vehicleCode, String vehicleType) { + Structattr struct = structattrService.getByCode(code); + if (ObjectUtil.isEmpty(struct)) { + throw new BadRequestException("仓位不存在:" + code); + } + structattrService.update(new LambdaUpdateWrapper() + .set(Structattr::getStoragevehicle_code, vehicleCode) + .set(Structattr::getStoragevehicle_type, vehicleType) + .set(Structattr::getOccupancy_state, "2") + .eq(Structattr::getStruct_code, code)); + } + + private void clearPointTaskCode(String code) { + if (ObjectUtil.isEmpty(code)) { + return; + } + pointService.update(new LambdaUpdateWrapper() + .set(SchBasePoint::getIng_task_code, null) + .eq(SchBasePoint::getPoint_code, code)); + } + + private void clearStructTaskCode(String code) { + if (ObjectUtil.isEmpty(code)) { + return; + } + structattrService.update(new LambdaUpdateWrapper() + .set(Structattr::getTask_code, null) + .eq(Structattr::getStruct_code, code)); + } + + @Override + public void forceFinish(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); + } + + @Override + public void cancel(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); + } + + @Override + public void backMes(String task_code) { + + } +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/jb/JbUpAgvTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/jb/JbUpAgvTask.java index 098be4d..8e51283 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/jb/JbUpAgvTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/jb/JbUpAgvTask.java @@ -147,7 +147,7 @@ public class JbUpAgvTask extends AbstractTask { String orderId = requestParam.getString("order_id"); if (ObjectUtil.isNotEmpty(orderId)) { workorderService.update(new LambdaUpdateWrapper() - .set(PdmBdWorkorder::getWorkorder_status, "1") + .set(PdmBdWorkorder::getWorkorder_status, "2") .set(PdmBdWorkorder::getRealproduceend_date, null) .eq(PdmBdWorkorder::getWorkorder_id, orderId)); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/jb/JbUpManualTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/jb/JbUpManualTask.java index 35c5330..ce5e897 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/jb/JbUpManualTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/jb/JbUpManualTask.java @@ -107,7 +107,7 @@ public class JbUpManualTask extends AbstractTask { String orderId = requestParam.getString("order_id"); if (ObjectUtil.isNotEmpty(orderId)) { workorderService.update(new LambdaUpdateWrapper() - .set(PdmBdWorkorder::getWorkorder_status, "1") + .set(PdmBdWorkorder::getWorkorder_status, "2") .set(PdmBdWorkorder::getRealproduceend_date, null) .eq(PdmBdWorkorder::getWorkorder_id, orderId)); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/controller/secutiry/AuthorizationController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/controller/secutiry/AuthorizationController.java index c302f85..af6d703 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/controller/secutiry/AuthorizationController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/controller/secutiry/AuthorizationController.java @@ -61,6 +61,7 @@ public class AuthorizationController { CurrentUser currentUser = SecurityUtils.getCurrentUser(); JSONObject jsonObject = new JSONObject(); jsonObject.put("roles", SecurityUtils.getCurrentUserPermissions()); + jsonObject.put("roleNames", currentUser.getRoleNames()); jsonObject.put("user", currentUser.getUser()); return ResponseEntity.ok(jsonObject); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/role/ISysRoleService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/role/ISysRoleService.java index ce64ca6..1aea8d3 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/role/ISysRoleService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/role/ISysRoleService.java @@ -59,6 +59,13 @@ public interface ISysRoleService extends IService { */ List getPermissionList(JSONObject userDto); + /** + * 通过用户id获取角色名称 + * @param userId 用户id + * @return 角色名称列表 + */ + List getRoleNameList(String userId); + /** * 保存用户角色关系 diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/role/dao/mapper/SysRoleMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/role/dao/mapper/SysRoleMapper.java index a42729a..7b351fa 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/role/dao/mapper/SysRoleMapper.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/role/dao/mapper/SysRoleMapper.java @@ -49,4 +49,11 @@ public interface SysRoleMapper extends BaseMapper { * @param menuIds */ void insertRoleMenu(String roleId, Collection menuIds); + + /** + * 获取用户角色名称列表 + * @param userId 用户id + * @return 角色名称列表 + */ + List selectRoleNamesByUserId(String userId); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/role/dao/mapper/SysRoleMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/role/dao/mapper/SysRoleMapper.xml index 0f6089b..f3fd527 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/role/dao/mapper/SysRoleMapper.xml +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/role/dao/mapper/SysRoleMapper.xml @@ -26,4 +26,10 @@ + diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/role/impl/SysRoleServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/role/impl/SysRoleServiceImpl.java index e2c6223..5a566e7 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/role/impl/SysRoleServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/role/impl/SysRoleServiceImpl.java @@ -138,6 +138,14 @@ public class SysRoleServiceImpl extends ServiceImpl impl return permission; } + @Override + public List getRoleNameList(String userId) { + if (StringUtils.isEmpty(userId)) { + return new ArrayList<>(); + } + return roleMapper.selectRoleNamesByUserId(userId); + } + @Override public void saveUserRoleRelation(String user, List roles) { if (StringUtils.isEmpty(user) || CollectionUtils.isEmpty(roles)){ diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/secutiry/impl/HandLoginServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/secutiry/impl/HandLoginServiceImpl.java index 820bbf4..f7da60f 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/secutiry/impl/HandLoginServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/secutiry/impl/HandLoginServiceImpl.java @@ -46,6 +46,7 @@ public class HandLoginServiceImpl implements HandLoginService { throw new BadRequestException("账号未激活"); } List permissionList = roleService.getPermissionList((JSONObject) JSON.toJSON(userInfo)); + List roleNameList = roleService.getRoleNameList(userInfo.getUser_id()); // 登录输入,登出删除 CurrentUser user = new CurrentUser(); user.setId(userInfo.getUser_id()); @@ -53,6 +54,7 @@ public class HandLoginServiceImpl implements HandLoginService { user.setPresonName((userInfo.getPerson_name())); user.setUser(userInfo); user.setPermissions(permissionList); + user.setRoleNames(roleNameList); // SaLoginModel 配置登录相关参数 StpUtil.login(userInfo.getUser_id(), new SaLoginModel() .setDevice("PC") // 此次登录的客户端设备类型, 用于[同端互斥登录]时指定此次登录的设备类型 @@ -61,6 +63,7 @@ public class HandLoginServiceImpl implements HandLoginService { JSONObject result = new JSONObject(); result.put("token", StpUtil.getTokenValue()); result.put("roles", permissionList); + result.put("roleNames", roleNameList); result.put("user", user); return result; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/user/impl/ISysUserServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/user/impl/ISysUserServiceImpl.java index 702f12a..e12d7e7 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/user/impl/ISysUserServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/user/impl/ISysUserServiceImpl.java @@ -187,6 +187,7 @@ public class ISysUserServiceImpl extends ServiceImpl imp throw new BadRequestException("账号未激活"); } List permissionList = roleService.getPermissionList((JSONObject) JSON.toJSON(userInfo)); + List roleNameList = roleService.getRoleNameList(userInfo.getUser_id()); // 登录输入,登出删除 CurrentUser user = new CurrentUser(); user.setId(userInfo.getUser_id()); @@ -194,6 +195,7 @@ public class ISysUserServiceImpl extends ServiceImpl imp user.setPresonName((userInfo.getPerson_name())); user.setUser(userInfo); user.setPermissions(permissionList); + user.setRoleNames(roleNameList); // SaLoginModel 配置登录相关参数 StpUtil.login(userInfo.getUser_id(), new SaLoginModel() .setDevice("PC") // 此次登录的客户端设备类型, 用于[同端互斥登录]时指定此次登录的设备类型 @@ -202,6 +204,7 @@ public class ISysUserServiceImpl extends ServiceImpl imp JSONObject result = new JSONObject(); result.put("token", StpUtil.getTokenValue()); result.put("roles", permissionList); + result.put("roleNames", roleNameList); result.put("user", user); return result; } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/InBillServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/InBillServiceImpl.java index f300ae4..aa89ea0 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/InBillServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/InBillServiceImpl.java @@ -41,7 +41,10 @@ import org.nl.wms.sch_manage.service.util.tasks.StInTask; import org.nl.wms.sch_manage.service.util.tasks.jb.JbBackAgvTask; import org.nl.wms.sch_manage.service.util.tasks.jb.JbBackManualTask; import org.nl.wms.sch_manage.service.util.tasks.jb.JbDownAgvTask; +import org.nl.wms.sch_manage.service.util.tasks.jb.JbDownCloseUnsealingAgvTask; import org.nl.wms.sch_manage.service.util.tasks.jb.JbDownManualTask; +import org.nl.wms.system_manage.service.param.ISysParamService; +import org.nl.wms.system_manage.service.param.dao.Param; import org.nl.wms.sch_manage.service.util.tasks.zw.InBillTask; import org.nl.wms.warehouse_manage.enums.IOSConstant; import org.nl.wms.warehouse_manage.enums.IOSEnum; @@ -104,6 +107,8 @@ public class InBillServiceImpl extends ServiceImpl i @Resource private JbDownAgvTask jbDownAgvTask; @Resource + private JbDownCloseUnsealingAgvTask jbDownCloseUnsealingAgvTask; + @Resource private JbBackAgvTask jbBackAgvTask; @Resource private JbBackManualTask jbBackManualTask; @@ -116,6 +121,8 @@ public class InBillServiceImpl extends ServiceImpl i private JbDownManualTask jbDownManualTask; @Resource private IPdmBdWorkorderService workorderService; + @Resource + private ISysParamService paramService; @Override public IPage pageQuery(Map whereJson, PageQuery page) { @@ -797,88 +804,105 @@ public class InBillServiceImpl extends ServiceImpl i || !"2".equals(intoPoint.getPoint_type())) { throw new BadRequestException("请选择超细/中粗吨袋解包区对接位!"); } - String cfgPointType = "CXDDJBQ".equals(intoPoint.getRegion_code()) ? "1" : "2"; - String parentPointCode = intoPoint.getParent_point_code(); - if (ObjectUtil.isEmpty(parentPointCode)) { - throw new BadRequestException("解包对接点未配置父类编码!"); - } - SchBasePoint emptyPoint = pointService.getNotTaskByDeviceAndType(parentPointCode, "4"); - if (ObjectUtil.isEmpty(emptyPoint)) { - throw new BadRequestException("找不到可用的空桶缓存位!"); - } - // 获取无盖子的对应的点位 - List canUseCFGJs = pointService.getCanUseCFGJs(intoPoint, "1", cfgPointType); - if (canUseCFGJs.size() == 0) { - throw new BadRequestException("找不到可用的拆封盖机"); - } - SchBasePoint cfgjPoint = canUseCFGJs.get(0); - // 创建任务1 - String taskGroupId = IdUtil.getStringId(); - JSONObject task1 = new JSONObject(); - task1.put("task_type", "JbDownAgvTask"); - task1.put("group_id", groupPlate.getGroup_id()); - task1.put("workorder_id", whereJson.get("workorder_id")); - task1.put("task_group_id", taskGroupId); - task1.put("task_group_seq", 1); - task1.put("TaskCode", CodeUtil.getNewCode("TASK_CODE")); - task1.put("point_code1", structCode); - task1.put("point_code2", cfgjPoint.getPoint_code()); - task1.put("point_code3", cfgjPoint.getPoint_code()); - task1.put("point_code4", emptyPoint.getPoint_code()); - task1.put("truss_type", "3"); - task1.put("have_lid", "1"); - task1.put("vehicle_type", inStruct.getStoragevehicle_type()); - task1.put("seq", 1); - // 空托盘 - task1.put("vehicle_code", inStruct.getStoragevehicle_code()); - // 解包下料第1条:两段都搬空桶 - task1.put("vehicle_code2", inStruct.getStoragevehicle_code()); + if (isOpenUnsealingEnabled()) { + String cfgPointType = "CXDDJBQ".equals(intoPoint.getRegion_code()) ? "1" : "2"; + String parentPointCode = intoPoint.getParent_point_code(); + if (ObjectUtil.isEmpty(parentPointCode)) { + throw new BadRequestException("解包对接点未配置父类编码!"); + } + SchBasePoint emptyPoint = pointService.getNotTaskByDeviceAndType(parentPointCode, "4"); + if (ObjectUtil.isEmpty(emptyPoint)) { + throw new BadRequestException("找不到可用的空桶缓存位!"); + } + // 获取无盖子的对应的点位 + List canUseCFGJs = pointService.getCanUseCFGJs(intoPoint, "1", cfgPointType); + if (canUseCFGJs.size() == 0) { + throw new BadRequestException("找不到可用的拆封盖机"); + } + SchBasePoint cfgjPoint = canUseCFGJs.get(0); + // 创建任务1 + String taskGroupId = IdUtil.getStringId(); + JSONObject task1 = new JSONObject(); + task1.put("task_type", "JbDownAgvTask"); + task1.put("group_id", groupPlate.getGroup_id()); + task1.put("workorder_id", whereJson.get("workorder_id")); + task1.put("task_group_id", taskGroupId); + task1.put("task_group_seq", 1); + task1.put("TaskCode", CodeUtil.getNewCode("TASK_CODE")); + task1.put("point_code1", structCode); + task1.put("point_code2", cfgjPoint.getPoint_code()); + task1.put("point_code3", cfgjPoint.getPoint_code()); + task1.put("point_code4", emptyPoint.getPoint_code()); + task1.put("truss_type", "3"); + task1.put("have_lid", "0"); + task1.put("vehicle_type", inStruct.getStoragevehicle_type()); + task1.put("seq", 1); + task1.put("vehicle_code", inStruct.getStoragevehicle_code()); + task1.put("vehicle_code2", inStruct.getStoragevehicle_code()); - // 创建任务2 - JSONObject task2 = new JSONObject(); - task2.put("task_type", "JbDownAgvTask"); - task2.put("group_id", groupPlate.getGroup_id()); - task2.put("task_group_id", taskGroupId); - task2.put("task_group_seq", 2); - task2.put("workorder_id", whereJson.get("workorder_id")); - task2.put("TaskCode", CodeUtil.getNewCode("TASK_CODE")); - task2.put("point_code1", intoPoint.getPoint_code()); - task2.put("point_code2", cfgjPoint.getPoint_code()); - task2.put("point_code3", emptyPoint.getPoint_code()); - task2.put("point_code4", intoPoint.getPoint_code()); - task2.put("truss_type", "3"); - task2.put("have_lid", "0"); - task2.put("seq", 2); - // 解包下料第2条:段1搬满桶(对接位->拆封盖机) - task2.put("vehicle_code", map.get("storagevehicle_code")); - task2.put("vehicle_type", inStruct.getStoragevehicle_type()); - // 解包下料第2条:段2搬空桶(空桶缓存位->对接位) - task2.put("vehicle_code2", inStruct.getStoragevehicle_code()); + JSONObject task2 = new JSONObject(); + task2.put("task_type", "JbDownAgvTask"); + task2.put("group_id", groupPlate.getGroup_id()); + task2.put("task_group_id", taskGroupId); + task2.put("task_group_seq", 2); + task2.put("workorder_id", whereJson.get("workorder_id")); + task2.put("TaskCode", CodeUtil.getNewCode("TASK_CODE")); + task2.put("point_code1", intoPoint.getPoint_code()); + task2.put("point_code2", cfgjPoint.getPoint_code()); + task2.put("point_code3", emptyPoint.getPoint_code()); + task2.put("point_code4", intoPoint.getPoint_code()); + task2.put("truss_type", "3"); + task2.put("have_lid", "0"); + task2.put("seq", 2); + task2.put("vehicle_code", map.get("storagevehicle_code")); + task2.put("vehicle_type", inStruct.getStoragevehicle_type()); + task2.put("vehicle_code2", inStruct.getStoragevehicle_code()); - // 创建任务3 - JSONObject task3 = new JSONObject(); - task3.put("task_type", "JbDownAgvTask"); - task3.put("group_id", groupPlate.getGroup_id()); - task3.put("task_group_id", taskGroupId); - task3.put("task_group_seq", 3); - task3.put("workorder_id", whereJson.get("workorder_id")); - task3.put("TaskCode", CodeUtil.getNewCode("TASK_CODE")); - task3.put("point_code1", cfgjPoint.getPoint_code()); - task3.put("point_code2", structCode); - task3.put("point_code3", null); - task3.put("point_code4", null); - task3.put("truss_type", "3"); - task3.put("have_lid", "2"); - task3.put("seq", 3); - // 解包下料第3条:搬满桶(拆封盖机->料桶缓存库) - task3.put("vehicle_code", map.get("storagevehicle_code")); - task3.put("vehicle_type", inStruct.getStoragevehicle_type()); - // 两点任务不传第二载具号 - task3.put("vehicle_code2", null); - List jsonObjects = Arrays.asList(task1, task2, task3); - JSONObject requestTaskParam = new JSONObject(); - requestTaskParam.put("tasks", jsonObjects); - task_id = jbDownAgvTask.create(requestTaskParam); + JSONObject task3 = new JSONObject(); + task3.put("task_type", "JbDownAgvTask"); + task3.put("group_id", groupPlate.getGroup_id()); + task3.put("task_group_id", taskGroupId); + task3.put("task_group_seq", 3); + task3.put("workorder_id", whereJson.get("workorder_id")); + task3.put("TaskCode", CodeUtil.getNewCode("TASK_CODE")); + task3.put("point_code1", cfgjPoint.getPoint_code()); + task3.put("point_code2", structCode); + task3.put("point_code3", null); + task3.put("point_code4", null); + task3.put("truss_type", "3"); + task3.put("have_lid", "0"); + task3.put("seq", 3); + task3.put("vehicle_code", map.get("storagevehicle_code")); + task3.put("vehicle_type", inStruct.getStoragevehicle_type()); + task3.put("vehicle_code2", null); + List jsonObjects = Arrays.asList(task1, task2, task3); + JSONObject requestTaskParam = new JSONObject(); + requestTaskParam.put("tasks", jsonObjects); + task_id = jbDownAgvTask.create(requestTaskParam); + } else { + String taskGroupId = IdUtil.getStringId(); + JSONObject task = new JSONObject(); + task.put("task_type", "JbDownCloseUnsealingAgvTask"); + task.put("group_id", groupPlate.getGroup_id()); + task.put("workorder_id", whereJson.get("workorder_id")); + task.put("task_group_id", taskGroupId); + task.put("task_group_seq", 1); + task.put("TaskCode", CodeUtil.getNewCode("TASK_CODE")); + task.put("point_code1", intoPoint.getPoint_code()); + task.put("point_code2", structCode); + task.put("point_code3", structCode); + task.put("point_code4", intoPoint.getPoint_code()); + task.put("truss_type", "3"); + task.put("have_lid", "1"); + task.put("vehicle_type", inStruct.getStoragevehicle_type()); + task.put("seq", 1); + task.put("vehicle_code", map.get("storagevehicle_code")); + task.put("vehicle_code2", inStruct.getStoragevehicle_code()); + List jsonObjects = Arrays.asList(task); + JSONObject requestTaskParam = new JSONObject(); + requestTaskParam.put("tasks", jsonObjects); + task_id = jbDownCloseUnsealingAgvTask.create(requestTaskParam); + } } else if (StatusEnum.IOBILL_TYPE_IN.code("解包直接入库").equals(invObj.getBill_type())) { // 创建人工四点任务 String structCode = map.get("struct_code"); @@ -1098,6 +1122,14 @@ public class InBillServiceImpl extends ServiceImpl i ioStorInvDisMapper.updateById(dis); } + private boolean isOpenUnsealingEnabled() { + Param param = paramService.findByCode("is_open_unsealing"); + if (ObjectUtil.isEmpty(param) || StrUtil.isBlank(param.getValue())) { + return true; + } + return "1".equals(StrUtil.trim(param.getValue())); + } + @Override public String divPointNoTask(Map whereJson) { ArrayList rows = (ArrayList) whereJson.get("tableMater"); diff --git a/lms/nladmin-ui/src/store/getters.js b/lms/nladmin-ui/src/store/getters.js index 3c9ec20..4376444 100644 --- a/lms/nladmin-ui/src/store/getters.js +++ b/lms/nladmin-ui/src/store/getters.js @@ -8,6 +8,7 @@ const getters = { visitedViews: state => state.tagsView.visitedViews, cachedViews: state => state.tagsView.cachedViews, roles: state => state.user.roles, + roleNames: state => state.user.roleNames, user: state => state.user.user, loadMenus: state => state.user.loadMenus, permission_routers: state => state.permission.routers, diff --git a/lms/nladmin-ui/src/store/modules/user.js b/lms/nladmin-ui/src/store/modules/user.js index 1a6cc9d..91037e0 100644 --- a/lms/nladmin-ui/src/store/modules/user.js +++ b/lms/nladmin-ui/src/store/modules/user.js @@ -6,6 +6,7 @@ const user = { token: getToken(), user: {}, roles: [], + roleNames: [], // 第一次加载菜单时用到 loadMenus: false }, @@ -20,6 +21,9 @@ const user = { SET_ROLES: (state, roles) => { state.roles = roles }, + SET_ROLE_NAMES: (state, roleNames) => { + state.roleNames = roleNames + }, SET_LOAD_MENUS: (state, loadMenus) => { state.loadMenus = loadMenus } @@ -78,6 +82,7 @@ const user = { export const logOut = (commit) => { commit('SET_TOKEN', '') commit('SET_ROLES', []) + commit('SET_ROLE_NAMES', []) removeToken() } @@ -90,6 +95,7 @@ export const setUserInfo = (res, commit) => { } else { commit('SET_ROLES', res.permissions) } + commit('SET_ROLE_NAMES', res.roleNames || []) commit('SET_USER', res.user) } diff --git a/lms/nladmin-ui/src/views/wms/pm_manage/workerorder/index.vue b/lms/nladmin-ui/src/views/wms/pm_manage/workerorder/index.vue index 5971b0d..dd21bf5 100644 --- a/lms/nladmin-ui/src/views/wms/pm_manage/workerorder/index.vue +++ b/lms/nladmin-ui/src/views/wms/pm_manage/workerorder/index.vue @@ -71,6 +71,18 @@ > 批量建单 + + 审核 + - - @@ -436,7 +438,23 @@ + + + + this.canEditOrDelete(row)) if (!canDelete) { - this.$message.warning('仅工单状态为1时允许删除') + this.$message.warning('仅工单状态为1或2时允许删除') return false } return true @@ -733,10 +762,25 @@ export default { } this.crud.toQuery() }, + audit(row) { + if (String(row.workorder_status) !== '1') { + this.$message.warning('仅工单状态为1时允许审核') + return + } + this.fullscreenLoading = true + crudPdmBdWorkorder.audit(row).then(res => { + this.crud.notify('审核成功', CRUD.NOTIFICATION_TYPE.SUCCESS) + this.crud.toQuery() + }).catch(() => { + this.fullscreenLoading = false + }).finally(() => { + this.fullscreenLoading = false + }) + }, // 下发 submits(row) { - if (String(row.workorder_status) !== '1') { - this.$message.warning('仅工单状态为1时允许开工') + if (String(row.workorder_status) !== '2') { + this.$message.warning('仅工单状态为2时允许开工') return } this.fullscreenLoading = true diff --git a/lms/nladmin-ui/src/views/wms/pm_manage/workerorder/pdmBdWorkorder.js b/lms/nladmin-ui/src/views/wms/pm_manage/workerorder/pdmBdWorkorder.js index f9be8a9..254f47f 100644 --- a/lms/nladmin-ui/src/views/wms/pm_manage/workerorder/pdmBdWorkorder.js +++ b/lms/nladmin-ui/src/views/wms/pm_manage/workerorder/pdmBdWorkorder.js @@ -32,6 +32,14 @@ export function submits(param) { }) } +export function audit(param) { + return request({ + url: 'api/pdmBdWorkorder/audit', + method: 'post', + data: param + }) +} + export function loadComplete(param) { return request({ url: 'api/pdmBdWorkorder/loadComplete', @@ -76,4 +84,4 @@ export function batchAddOrders(data) { }) } -export default { add, edit, del, submits, loadComplete, forceFinish, orderSynchronize, queryMaterials, getCuster, batchAddOrders } +export default { add, edit, del, submits, audit, loadComplete, forceFinish, orderSynchronize, queryMaterials, getCuster, batchAddOrders }