From 13c1cdb824f4f6c5ed044873268e2b730eb383f6 Mon Sep 17 00:00:00 2001 From: liyongde <1419499670@qq.com> Date: Thu, 3 Aug 2023 14:50:13 +0800 Subject: [PATCH] =?UTF-8?q?rev:=20=E5=9C=A8=E7=BA=BF=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E3=80=81=E5=BC=BA=E5=88=B6=E7=94=A8=E6=88=B7=E4=B8=8B=E7=BA=BF?= =?UTF-8?q?=E3=80=81=E5=AF=B9=E6=8E=A5=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lms/nladmin-system/doc/wms.xls | Bin 360960 -> 325120 bytes .../secutiry/AuthorizationController.java | 4 +- .../controller/user/OnlineController.java | 9 ++- .../system/service/dept/ISysDeptService.java | 2 + .../dept/dao/mapper/SysDeptMapper.java | 2 + .../service/dept/dao/mapper/SysDeptMapper.xml | 13 ++++ .../service/dept/impl/SysDeptServiceImpl.java | 5 ++ .../secutiry/impl/OnlineUserService.java | 53 ++++++++++--- .../system/service/user/ISysUserService.java | 1 - .../service/IDasDeviceCheckRecordService.java | 3 +- .../impl/DasDeviceCheckRecordServiceImpl.java | 4 +- .../wms/ext/acs/service/AcsToWmsService.java | 5 +- .../wms/ext/acs/service/MesToWmsService.java | 9 +++ .../wms/ext/acs/service/WmsToMesService.java | 9 +++ .../acs/service/impl/AcsToWmsServiceImpl.java | 2 +- .../acs/service/impl/MesToWmsServiceImpl.java | 15 ++++ .../acs/service/impl/WmsToAcsServiceImpl.java | 6 +- .../acs/service/impl/WmsToMesServiceImpl.java | 15 ++++ .../service/ISysInteractRecordService.java | 4 +- .../record/service/dao/SysInteractRecord.java | 4 +- .../impl/SysInteractRecordServiceImpl.java | 12 ++- .../nl/wms/pda/controller/PdaController.java | 3 +- .../wms/pda/service/dao/mapper/PdaMapper.xml | 4 +- .../pda/service/dao/vo/DropdownListVo.java | 2 +- .../wms/pda/service/dao/vo/PdaResponseVo.java | 20 +++++ .../dao/mapper/PdmBdWorkorderMapper.xml | 10 ++- .../service/dao/vo/AcsWorkOrderVo.java | 8 +- .../nl/wms/sch/task_manage/AbstractTask.java | 21 ++++- .../task_manage/task/tasks/dtk/CTQKTask.java | 1 + .../task_manage/task/tasks/fj/FJQLTask.java | 1 + .../src/views/monitor/online/index.vue | 4 +- .../src/views/system/dept/index.vue | 1 + .../src/views/wms/das/outKiln/index.vue | 73 ++++++++++++++++++ .../src/views/wms/ext/record/index.vue | 67 ++++++++++------ .../src/views/wms/pdm/residue/index.vue | 2 +- 35 files changed, 315 insertions(+), 79 deletions(-) create mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/MesToWmsService.java create mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/WmsToMesService.java create mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/MesToWmsServiceImpl.java create mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToMesServiceImpl.java create mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/vo/PdaResponseVo.java create mode 100644 lms/nladmin-ui/src/views/wms/das/outKiln/index.vue diff --git a/lms/nladmin-system/doc/wms.xls b/lms/nladmin-system/doc/wms.xls index 8283c5728a5fb3cebd8b10afdadd61cc1e0fd950..1ecfd51751309e8dfb9e7b7276f68f7e24124d64 100644 GIT binary patch delta 14522 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 diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/secutiry/AuthorizationController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/secutiry/AuthorizationController.java index 321bfa3..183a9f2 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/secutiry/AuthorizationController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/secutiry/AuthorizationController.java @@ -49,11 +49,11 @@ public class AuthorizationController { @ApiOperation("登录授权") @PostMapping(value = "/login") - public ResponseEntity login(@RequestBody Map authMap) throws Exception { + public ResponseEntity login(@RequestBody Map authMap, HttpServletRequest request) throws Exception { if (ObjectUtil.isEmpty(authMap)){ return ResponseEntity.noContent().build(); } - return ResponseEntity.ok(onlineUserService.login(authMap)); + return ResponseEntity.ok(onlineUserService.login(authMap, request)); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/user/OnlineController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/user/OnlineController.java index 567898e..f48db8f 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/user/OnlineController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/user/OnlineController.java @@ -15,10 +15,12 @@ */ package org.nl.system.controller.user; +import com.alibaba.fastjson.JSONArray; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.nl.common.utils.EncryptUtils; import org.nl.system.service.secutiry.impl.OnlineUserService; +import org.nl.system.service.user.dto.OnlineUserDto; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; @@ -27,6 +29,7 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.util.List; import java.util.Set; /** @@ -57,10 +60,10 @@ public class OnlineController { @ApiOperation("踢出用户") @DeleteMapping // @SaCheckPermission("@el.check()") - public ResponseEntity delete(@RequestBody Set keys) throws Exception { - for (String key : keys) { + public ResponseEntity delete(@RequestBody List keys) throws Exception { + for (OnlineUserDto key : keys) { // 解密Key - key = EncryptUtils.desDecrypt(key); + key.setKey(EncryptUtils.desDecrypt(key.getKey())); onlineUserService.kickOut(key); } return new ResponseEntity<>(HttpStatus.OK); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/ISysDeptService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/ISysDeptService.java index 3e2df59..8d159d8 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/ISysDeptService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/ISysDeptService.java @@ -65,4 +65,6 @@ public interface ISysDeptService extends IService { void createDept(SysDept dept); + List getUserDeptByUserId(String userId); + } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/mapper/SysDeptMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/mapper/SysDeptMapper.java index 97d0e9b..33ce82b 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/mapper/SysDeptMapper.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/mapper/SysDeptMapper.java @@ -41,4 +41,6 @@ public interface SysDeptMapper extends BaseMapper { * @return */ String findAllChild(String pid); + + List getUserDeptByUserId(String userId); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/mapper/SysDeptMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/mapper/SysDeptMapper.xml index b5ec9e8..8f4acca 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/mapper/SysDeptMapper.xml +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/dao/mapper/SysDeptMapper.xml @@ -37,4 +37,17 @@ ) + diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/impl/SysDeptServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/impl/SysDeptServiceImpl.java index 93ea266..dbe47eb 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/impl/SysDeptServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dept/impl/SysDeptServiceImpl.java @@ -176,4 +176,9 @@ public class SysDeptServiceImpl extends ServiceImpl impl sysDeptMapper.updateSubCount(dept.getPid()); } } + + @Override + public List getUserDeptByUserId(String userId) { + return sysDeptMapper.getUserDeptByUserId(userId); + } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/secutiry/impl/OnlineUserService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/secutiry/impl/OnlineUserService.java index b63ef55..24be8e2 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/secutiry/impl/OnlineUserService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/secutiry/impl/OnlineUserService.java @@ -18,9 +18,11 @@ package org.nl.system.service.secutiry.impl; import cn.dev33.satoken.secure.SaSecureUtil; import cn.dev33.satoken.stp.SaLoginModel; import cn.dev33.satoken.stp.StpUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @@ -28,6 +30,8 @@ import org.nl.common.utils.*; import org.nl.config.RsaProperties; import org.nl.common.exception.BadRequestException; import org.nl.common.utils.dto.CurrentUser; +import org.nl.system.service.dept.ISysDeptService; +import org.nl.system.service.dept.dao.SysDept; import org.nl.system.service.secutiry.dto.UserDto; import org.nl.system.service.role.ISysRoleService; import org.nl.system.service.secutiry.dto.AuthUserDto; @@ -55,6 +59,8 @@ public class OnlineUserService { @Autowired private ISysUserService sysUserService; @Autowired + private ISysDeptService deptService; + @Autowired private ISysRoleService roleService; @Autowired private RedisUtils redisUtils; @@ -69,20 +75,27 @@ public class OnlineUserService { * @param token / * @param request / */ - public void save(UserDto userDto, String token, HttpServletRequest request){ -// String dept = userDto.getDept().getName(); - String dept = ""; + public void save(SysUser userDto, String token, HttpServletRequest request){ + // 获取用户部门 + List userDeptByUserId = deptService.getUserDeptByUserId(userDto.getUser_id()); + StringBuilder sb = new StringBuilder(); + for (SysDept dept : userDeptByUserId) { + sb.append(dept.getName()).append("、"); + } + if (sb.length() > 0) { + sb.setLength(sb.length() - 1); + } + String dept = sb.toString(); String ip = StringUtils.getIp(request); String browser = StringUtils.getBrowser(request); - // String address = StringUtils.getCityInfo(ip); - String address = "局域网"; + String address = StringUtils.getCityInfo(ip); OnlineUserDto onlineUserDto = null; try { -// onlineUserDto = new OnlineUserDto(userDto.getUsername(), userDto.getNickName(), dept, browser , ip, address, EncryptUtils.desEncrypt(token), new Date()); + onlineUserDto = new OnlineUserDto(userDto.getUsername(), userDto.getPerson_name(), dept, browser , ip, address, EncryptUtils.desEncrypt(token), new Date()); } catch (Exception e) { log.error(e.getMessage(),e); } - redisUtils.set(token, onlineUserDto, StpUtil.getTokenTimeout()); + redisUtils.set("oline-" + userDto.getUsername(), onlineUserDto, StpUtil.getTokenTimeout()); } /** @@ -109,7 +122,7 @@ public class OnlineUserService { Collections.reverse(keys); List onlineUserDtos = new ArrayList<>(); for (String key : keys) { - if (key.length() == 1511) { + if (key.startsWith("oline-")) { OnlineUserDto onlineUserDto = (OnlineUserDto) redisUtils.get(key); if(StrUtil.isNotEmpty(filter)){ if(onlineUserDto.toString().contains(filter)){ @@ -127,10 +140,26 @@ public class OnlineUserService { /** * 踢出用户 - * @param key / + * @param key: OnlineUserDto / + */ + public void kickOut(OnlineUserDto key) { + // 获取用户 + SysUser one = sysUserService.getOne(new LambdaQueryWrapper().eq(SysUser::getUsername, key.getUserName())); + if (ObjectUtil.isNotEmpty(one)) { + redisUtils.del("oline-" + one.getUsername()); + } + // 下线 + StpUtil.logoutByTokenValue(key.getKey()); // 通过token强退 + } + + /** + * 踢出用户 + * @param key:token / */ - public void kickOut(String key){ + public void kickOut(String key) { redisUtils.del(key); + // 下线 + StpUtil.logoutByTokenValue(key); // 通过token强退 } /** @@ -211,7 +240,7 @@ public class OnlineUserService { } } @SneakyThrows - public Map login(Map paramMap){ + public Map login(Map paramMap, HttpServletRequest request){ // 密码解密 - 前端的加密规则: encrypt AuthUserDto authUser = JSON.toJavaObject((JSON) JSON.toJSON(paramMap), AuthUserDto.class); String password = RsaUtils.decryptByPrivateKey(RsaProperties.privateKey, authUser.getPassword()); @@ -263,7 +292,7 @@ public class OnlineUserService { put("user", user); }}; // 保存在线信息 -// onlineUserService.save(userDto, StpUtil.getTokenValue(), request); + this.save(userInfo, StpUtil.getTokenValue(), request); return authInfo; } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/user/ISysUserService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/user/ISysUserService.java index d58d747..26ebead 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/user/ISysUserService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/user/ISysUserService.java @@ -1,6 +1,5 @@ package org.nl.system.service.user; -import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.IService; import org.nl.common.domain.query.PageQuery; import org.nl.system.service.user.dao.SysUser; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/das/devicecheck/service/IDasDeviceCheckRecordService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/das/devicecheck/service/IDasDeviceCheckRecordService.java index 7cbc002..96e2372 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/das/devicecheck/service/IDasDeviceCheckRecordService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/das/devicecheck/service/IDasDeviceCheckRecordService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import org.nl.common.domain.query.PageQuery; import com.baomidou.mybatisplus.extension.service.IService; import org.nl.wms.das.devicecheck.service.dao.DasDeviceCheckRecord; +import org.nl.wms.pda.service.dao.vo.PdaResponseVo; import java.util.Map; import java.util.Set; @@ -27,7 +28,7 @@ public interface IDasDeviceCheckRecordService extends IService() .eq(SysUser::getUsername, entity.getUsername())); String now = DateUtil.now(); @@ -54,6 +55,7 @@ public class DasDeviceCheckRecordServiceImpl extends ServiceImpl { /** * - * @param code + * @param name * @param request * @param response * @param direction */ - void saveRecord(String code, Object request, T response, String direction); + void saveRecord(String name, K request, V response, String direction); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/dao/SysInteractRecord.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/dao/SysInteractRecord.java index 9bcb4f7..f5ef9a9 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/dao/SysInteractRecord.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/dao/SysInteractRecord.java @@ -25,8 +25,8 @@ public class SysInteractRecord implements Serializable { @ApiModelProperty(value = "对接标识") private String interact_id; - @ApiModelProperty(value = "对接编码") - private String interact_code; + @ApiModelProperty(value = "对接名称") + private String interact_name; @ApiModelProperty(value = "响应编码") private int code; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/impl/SysInteractRecordServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/impl/SysInteractRecordServiceImpl.java index 59f8dab..4f89a4f 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/impl/SysInteractRecordServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/impl/SysInteractRecordServiceImpl.java @@ -16,7 +16,6 @@ import org.nl.wms.ext.acs.service.dto.to.BaseResponse; import org.nl.wms.ext.record.service.ISysInteractRecordService; import org.nl.wms.ext.record.service.dao.mapper.SysInteractRecordMapper; import org.nl.wms.ext.record.service.dao.SysInteractRecord; -import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder; import org.nl.wms.pdm.workorder.service.dao.vo.AcsWorkOrderVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -70,7 +69,7 @@ public class SysInteractRecordServiceImpl extends ServiceImpl void saveRecord(String code, Object request, T response, String direction) { + public void saveRecord(String name, K request, V response, String direction) { SysInteractRecord entity = new SysInteractRecord(); entity.setInteract_id(IdUtil.getSnowflake(1, 1).nextIdStr()); - entity.setRecord_time(DateUtil.now()); + entity.setRecord_time(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss.SSS")); + entity.setInteract_name(name); entity.setDirection(direction); entity.setRequest_param(JSONObject.toJSONString(request)); entity.setResponse_param(JSONObject.toJSONString(response)); if (response instanceof BaseResponse) { BaseResponse re = (BaseResponse) response; - entity.setInteract_code(re.getRequestNo()); entity.setCode(re.getCode()); entity.setMessage(re.getMessage()); entity.setIs_success(re.getCode() == HttpStatus.HTTP_OK); } if (response instanceof ResultForAcs) { ResultForAcs re = (ResultForAcs) response; - entity.setInteract_code(IdUtil.simpleUUID()); // todo: 暂定 entity.setCode(re.getStatus()); entity.setMessage(re.getMessage()); entity.setIs_success(re.getStatus() == HttpStatus.HTTP_OK); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/controller/PdaController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/controller/PdaController.java index a96648a..0d730b0 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/controller/PdaController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/controller/PdaController.java @@ -37,8 +37,7 @@ public class PdaController { @ApiOperation("设备点检") @SaIgnore public ResponseEntity deviceCheck(@Validated @RequestBody DasDeviceCheckRecord entity){ - deviceCheckRecordService.create(entity); - return new ResponseEntity<>(HttpStatus.OK); + return new ResponseEntity<>(deviceCheckRecordService.create(entity), HttpStatus.OK); } @PostMapping("/deviceCheck/deviceInfo") diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/mapper/PdaMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/mapper/PdaMapper.xml index c85c4ce..af79ffd 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/mapper/PdaMapper.xml +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/mapper/PdaMapper.xml @@ -5,7 +5,7 @@ SELECT `value`, - label + label AS text FROM `sys_dict` WHERE `code` = #{code} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/vo/DropdownListVo.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/vo/DropdownListVo.java index b3fb6c5..89093a8 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/vo/DropdownListVo.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/vo/DropdownListVo.java @@ -12,5 +12,5 @@ import java.io.Serializable; @Data public class DropdownListVo implements Serializable { private String value; - private String label; + private String text; } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/vo/PdaResponseVo.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/vo/PdaResponseVo.java new file mode 100644 index 0000000..c2757e9 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/vo/PdaResponseVo.java @@ -0,0 +1,20 @@ +package org.nl.wms.pda.service.dao.vo; + +import lombok.Data; + +/** + * @Author: lyd + * @Description: 手持返回 + * @Date: 2023/8/3 + */ +@Data +public class PdaResponseVo { + // 先提供一个message + private String message; + + public static PdaResponseVo pdaResultOk(String message) { + PdaResponseVo vo = new PdaResponseVo(); + vo.setMessage(message); + return vo; + } +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/mapper/PdmBdWorkorderMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/mapper/PdmBdWorkorderMapper.xml index 62a51a9..8e2f782 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/mapper/PdmBdWorkorderMapper.xml +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/mapper/PdmBdWorkorderMapper.xml @@ -40,9 +40,15 @@ 0 AS b, 0 AS h, 0 AS w, - 0 AS `size`, + 0 AS size_error, 0 AS single_weight, - 0 AS drawing_address + 0 AS drawing_address, + 0 AS standard_size1, + 0 AS standard_size2, + 0 AS standard_size3, + 0 AS standard_size4, + 0 AS standard_weight, + 0 AS detection_error FROM `pdm_bd_workorder` w LEFT JOIN md_base_material m ON m.material_id = w.material_id diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/vo/AcsWorkOrderVo.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/vo/AcsWorkOrderVo.java index fe92e16..065a08a 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/vo/AcsWorkOrderVo.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/vo/AcsWorkOrderVo.java @@ -17,7 +17,13 @@ public class AcsWorkOrderVo { private String b; private String h; private String w; - private String size; // 尺寸允许误差 + private String size_error; // 尺寸允许误差 private String single_weight; // 单重允许误差 private String drawing_address; // 图纸地址 + private String standard_size_height1; // 标准尺寸1 + private String standard_size_height2; // 标准尺寸2 + private String standard_size_height3; // 标准尺寸3 + private String standard_size_height4; // 标准尺寸4 + private String standard_weight; // 标准重量 + private String detection_error; // 检测误差值 } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java index e1dd81c..133025d 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java @@ -4,10 +4,13 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.http.HttpStatus; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; import org.nl.wms.ext.acs.service.dto.ResultForAcs; +import org.nl.wms.ext.record.service.ISysInteractRecordService; import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService; import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder; import org.nl.wms.sch.point.service.ISchBasePointService; @@ -33,6 +36,7 @@ import java.util.List; * @date 2023年05月16日 16:42 * @desc desc */ +@Slf4j @Component public abstract class AbstractTask { @Autowired @@ -43,7 +47,8 @@ public abstract class AbstractTask { private ISchBasePointService pointService; @Autowired private IPdmBdWorkorderService workorderService; - + @Autowired + private ISysInteractRecordService interactRecordService; /** * 任务创建 @@ -72,6 +77,7 @@ public abstract class AbstractTask { * @created 2020年6月12日 下午5:52:28 */ protected ResultForAcs renotifyAcs(List taskList) { + ResultForAcs resultForAcs = ResultForAcs.requestOk(); //1、获取任务 //2、根据任务配置补全任务 //3、下发 @@ -97,8 +103,17 @@ public abstract class AbstractTask { this.setTask(task.getConfig_code(), taskDto); list.add(taskDto); } - - return AcsUtil.notifyAcs("api/wms/task", list); + try { + resultForAcs = AcsUtil.notifyAcs("api/wms/task", list); + } catch (Exception e) { + log.error("任务下发异常: {}", e.getMessage()); + resultForAcs.setTimestamp(DateUtil.now()); + resultForAcs.setStatus(HttpStatus.HTTP_BAD_REQUEST); + resultForAcs.setMessage(e.getMessage()); + } + // 记录日志 + interactRecordService.saveRecord("下发任务", list, resultForAcs, GeneralDefinition.LMS_ACS); + return resultForAcs; } private AcsTaskDto setTask(String config_code, AcsTaskDto taskDto) { diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/CTQKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/CTQKTask.java index bc3ce4c..6347f33 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/CTQKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/CTQKTask.java @@ -13,6 +13,7 @@ import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; import org.nl.wms.sch.task.service.dao.SchBaseTask; import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; import org.nl.wms.sch.task_manage.AbstractTask; +import org.nl.wms.sch.task_manage.GeneralDefinition; import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; import org.nl.wms.sch.task_manage.enums.PointStatusEnum; import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQLTask.java index 5f4688c..cbe3076 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQLTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQLTask.java @@ -20,6 +20,7 @@ import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; import org.nl.wms.sch.task.service.dao.SchBaseTask; import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; import org.nl.wms.sch.task_manage.AbstractTask; +import org.nl.wms.sch.task_manage.GeneralDefinition; import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; import org.nl.wms.sch.task_manage.enums.PointStatusEnum; import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum; diff --git a/lms/nladmin-ui/src/views/monitor/online/index.vue b/lms/nladmin-ui/src/views/monitor/online/index.vue index 3a104a5..0b3ec34 100644 --- a/lms/nladmin-ui/src/views/monitor/online/index.vue +++ b/lms/nladmin-ui/src/views/monitor/online/index.vue @@ -45,7 +45,7 @@

确定强制退出该用户吗?

取消 - 确定 + 确定
强退 @@ -101,7 +101,7 @@ export default { const ids = [] if (key instanceof Array) { key.forEach(val => { - ids.push(val.key) + ids.push(val) }) } else ids.push(key) this.delLoading = true diff --git a/lms/nladmin-ui/src/views/system/dept/index.vue b/lms/nladmin-ui/src/views/system/dept/index.vue index eedd374..633a7a9 100644 --- a/lms/nladmin-ui/src/views/system/dept/index.vue +++ b/lms/nladmin-ui/src/views/system/dept/index.vue @@ -90,6 +90,7 @@ +
+ +
+ + + + + + + + + + + + + + + + + + +
+
+ + + + + diff --git a/lms/nladmin-ui/src/views/wms/ext/record/index.vue b/lms/nladmin-ui/src/views/wms/ext/record/index.vue index 320cdb1..eb2cdbc 100644 --- a/lms/nladmin-ui/src/views/wms/ext/record/index.vue +++ b/lms/nladmin-ui/src/views/wms/ext/record/index.vue @@ -10,11 +10,11 @@ :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" :title="crud.status.title" - width="500px" + width="550px" > - - - + + + @@ -23,10 +23,10 @@ - + - + @@ -66,9 +66,9 @@ > @@ -124,7 +124,7 @@ import pagination from '@crud/Pagination' const defaultForm = { interact_id: null, - interact_code: null, + interact_name: null, code: null, message: null, request_param: null, @@ -144,7 +144,13 @@ export default { url: 'api/sysInteractRecord', idField: 'interact_id', sort: 'interact_id,desc', - crudMethod: { ...crudSysInteractRecord } + crudMethod: { ...crudSysInteractRecord }, + optShow: { + add: false, + edit: false, + del: true, + download: false + } }) }, data() { @@ -154,21 +160,32 @@ export default { } }, computed: { - formattedRequestParam() { - try { - const jsonObject = JSON.parse(this.form.request_param) // 解析 JSON 字符串为 JavaScript 对象 - return JSON.stringify(jsonObject, null, 2) // 使用 null 和 2 来进行格式化 - } catch (error) { - // 错误处理,如果 JSON 解析失败则返回原始字符串 - return this.form.request_param + formattedRequestParam: { + get() { + try { + const jsonObject = JSON.parse(this.form.request_param) // 解析 JSON 字符串为 JavaScript 对象 + return JSON.stringify(jsonObject, null, 2) // 使用 null 和 2 来进行格式化 + } catch (error) { + // 错误处理,如果 JSON 解析失败则返回原始字符串 + return this.form.request_param + } + }, + set(value) { + this.form.request_param = value // 可以编辑响应结果并保存到数据属性中 } - }, formattedResponseParam() { - try { - const jsonObject = JSON.parse(this.form.response_param) // 解析 JSON 字符串为 JavaScript 对象 - return JSON.stringify(jsonObject, null, 2) // 使用 null 和 2 来进行格式化 - } catch (error) { - // 错误处理,如果 JSON 解析失败则返回原始字符串 - return this.form.response_param + }, + formattedResponseParam: { + get() { + try { + const jsonObject = JSON.parse(this.form.response_param) // 解析 JSON 字符串为 JavaScript 对象 + return JSON.stringify(jsonObject, null, 2) // 使用 null 和 2 来进行格式化 + } catch (error) { + // 错误处理,如果 JSON 解析失败则返回原始字符串 + return this.form.response_param + } + }, + set(value) { + this.form.response_param = value // 可以编辑响应结果并保存到数据属性中 } } }, diff --git a/lms/nladmin-ui/src/views/wms/pdm/residue/index.vue b/lms/nladmin-ui/src/views/wms/pdm/residue/index.vue index c22a6c7..e127004 100644 --- a/lms/nladmin-ui/src/views/wms/pdm/residue/index.vue +++ b/lms/nladmin-ui/src/views/wms/pdm/residue/index.vue @@ -33,7 +33,7 @@ - +