diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/ISysMenuService.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/ISysMenuService.java index ac81039..76ba034 100644 --- a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/ISysMenuService.java +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/ISysMenuService.java @@ -1,11 +1,13 @@ package org.nl.system.service.menu; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.IService; import org.nl.common.domain.query.PageQuery; import org.nl.common.domain.vo.MenuVo; import org.nl.system.service.menu.dao.SysMenu; import org.nl.system.service.menu.dto.MenuDto; import org.nl.system.service.menu.dto.MenuQuery; +import org.nl.wms.pda.util.PdaResponse; import java.util.List; import java.util.Map; @@ -30,6 +32,7 @@ public interface ISysMenuService extends IService { /** * 条件查询 + * * @param query * @param page * @return @@ -100,6 +103,7 @@ public interface ISysMenuService extends IService { /** * 根据id查询 + * * @param userId 标识 * @return List 菜单集合 */ @@ -115,14 +119,16 @@ public interface ISysMenuService extends IService { /** * 获取菜单父级 + * * @param menuDtos 、 - * @param pid 父级id + * @param pid 父级id * @return List 菜单集合 */ - List buildMenus(List menuDtos,String pid); + List buildMenus(List menuDtos, String pid); /** * 获取菜单 + * * @param systemType / * @return List 菜单集合 */ @@ -130,6 +136,7 @@ public interface ISysMenuService extends IService { /** * 构建菜单树 + * * @param menuDtos 原始数据 * @return / */ @@ -137,6 +144,7 @@ public interface ISysMenuService extends IService { /** * 懒加载菜单数据 + * * @param pid / * @return / */ @@ -144,6 +152,7 @@ public interface ISysMenuService extends IService { /** * s + * * @param sysMenu * @return */ @@ -151,15 +160,17 @@ public interface ISysMenuService extends IService { /** * 根据roleId获取 - * @param roleId / + * + * @param roleId / * @param systemType / - * @param category / + * @param category / * @return List 集合 */ List getMenusByRole(String roleId, String systemType, String category); /** * 获取菜单 + * * @param param {} * @return Map */ 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 e86d31c..51fd8b8 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 @@ -26,19 +26,19 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; -import org.nl.common.utils.*; -import org.nl.config.RsaProperties; import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.*; import org.nl.common.utils.dto.CurrentUser; +import org.nl.config.RsaProperties; import org.nl.config.language.LangProcess; 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; import org.nl.system.service.user.ISysUserService; import org.nl.system.service.user.dao.SysUser; import org.nl.system.service.user.dto.OnlineUserDto; +import org.nl.wms.pda.util.PdaResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.scheduling.annotation.Async; @@ -72,11 +72,12 @@ public class OnlineUserService { /** * 保存在线用户信息 + * * @param userDto / - * @param token / + * @param token / * @param request / */ - public void save(SysUser userDto, String token, HttpServletRequest request){ + public void save(SysUser userDto, String token, HttpServletRequest request) { // 获取用户部门 List userDeptByUserId = deptService.getUserDeptByUserId(userDto.getUser_id()); StringBuilder sb = new StringBuilder(); @@ -92,33 +93,35 @@ public class OnlineUserService { String address = StringUtils.getCityInfo(ip); OnlineUserDto onlineUserDto = null; try { - onlineUserDto = new OnlineUserDto(userDto.getUsername(), userDto.getPerson_name(), 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); + log.error(e.getMessage(), e); } redisUtils.set("oline-" + userDto.getUsername(), onlineUserDto, StpUtil.getTokenTimeout()); } /** * 查询全部数据 - * @param filter / + * + * @param filter / * @param pageable / * @return / */ - public Map getAll(String filter, Pageable pageable){ + public Map getAll(String filter, Pageable pageable) { List onlineUserDtos = getAll(filter); return PageUtil.toPage( - PageUtil.toPage(pageable.getPageNumber(),pageable.getPageSize(), onlineUserDtos), + PageUtil.toPage(pageable.getPageNumber(), pageable.getPageSize(), onlineUserDtos), onlineUserDtos.size() ); } /** * 查询全部数据,不分页 + * * @param filter / * @return / */ - public List getAll(String filter){ + public List getAll(String filter) { List keys = redisUtils.scan("oline-*"); Collections.reverse(keys); List onlineUserDtos = new ArrayList<>(); @@ -132,6 +135,7 @@ public class OnlineUserService { /** * 踢出用户 + * * @param key: OnlineUserDto / */ public void kickOut(OnlineUserDto key) { @@ -146,6 +150,7 @@ public class OnlineUserService { /** * 踢出用户 + * * @param key:token / */ public void kickOut(String key) { @@ -156,6 +161,7 @@ public class OnlineUserService { /** * 退出登录 + * * @param token / */ public void logout(String token) { @@ -164,14 +170,15 @@ public class OnlineUserService { /** * 导出 - * @param all / + * + * @param all / * @param response / * @throws IOException / */ public void download(List all, HttpServletResponse response) throws IOException { List> list = new ArrayList<>(); for (OnlineUserDto user : all) { - Map map = new LinkedHashMap<>(); + Map map = new LinkedHashMap<>(); map.put("用户名", user.getUserName()); map.put("部门", user.getDept()); map.put("登录IP", user.getIp()); @@ -185,33 +192,35 @@ public class OnlineUserService { /** * 查询用户 + * * @param key / * @return / */ public OnlineUserDto getOne(String key) { - return (OnlineUserDto)redisUtils.get(key); + return (OnlineUserDto) redisUtils.get(key); } /** * 检测用户是否在之前已经登录,已经登录踢下线 + * * @param userName 用户名 */ - public void checkLoginOnUser(String userName, String igoreToken){ + public void checkLoginOnUser(String userName, String igoreToken) { List onlineUserDtos = getAll(userName); - if(onlineUserDtos ==null || onlineUserDtos.isEmpty()){ + if (onlineUserDtos == null || onlineUserDtos.isEmpty()) { return; } - for(OnlineUserDto onlineUserDto : onlineUserDtos){ - if(onlineUserDto.getUserName().equals(userName)){ + for (OnlineUserDto onlineUserDto : onlineUserDtos) { + if (onlineUserDto.getUserName().equals(userName)) { try { - String token =EncryptUtils.desDecrypt(onlineUserDto.getKey()); - if(StrUtil.isNotEmpty(igoreToken)&&!igoreToken.equals(token)){ + String token = EncryptUtils.desDecrypt(onlineUserDto.getKey()); + if (StrUtil.isNotEmpty(igoreToken) && !igoreToken.equals(token)) { this.kickOut(token); - }else if(StrUtil.isEmpty(igoreToken)){ + } else if (StrUtil.isEmpty(igoreToken)) { this.kickOut(token); } } catch (Exception e) { - log.error("checkUser is error",e); + log.error("checkUser is error", e); } } } @@ -219,6 +228,7 @@ public class OnlineUserService { /** * 根据用户名强退用户 + * * @param username / */ @Async @@ -231,8 +241,9 @@ public class OnlineUserService { } } } + @SneakyThrows - public Map login(Map paramMap, HttpServletRequest request){ + 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()); @@ -253,8 +264,8 @@ public class OnlineUserService { * SaSecureUtil.md5BySalt(password, "salt"): 这里需要密码加密 */ String salt = "salt"; - SysUser userInfo = sysUserService.getOne(new QueryWrapper().eq("username",authUser.getUsername())); - if (userInfo == null||!userInfo.getPassword().equals(SaSecureUtil.md5BySalt(password, salt))) { + SysUser userInfo = sysUserService.getOne(new QueryWrapper().eq("username", authUser.getUsername())); + if (userInfo == null || !userInfo.getPassword().equals(SaSecureUtil.md5BySalt(password, salt))) { throw new BadRequestException(LangProcess.msg("login_pwd")); } @@ -296,4 +307,51 @@ public class OnlineUserService { this.save(userInfo, StpUtil.getTokenValue(), request); return authInfo; } + + @SneakyThrows + public PdaResponse pdaLogin(JSONObject paramMap) { + // 密码解密 - 前端的加密规则: encrypt + AuthUserDto authUser = JSON.toJavaObject((JSON) JSON.toJSON(paramMap), AuthUserDto.class); + String password = RsaUtils.decryptByPrivateKey(RsaProperties.privateKey, authUser.getPassword()); + /* + * 校验数据库 + * username:根据用户名查询,在比对密码 + * SaSecureUtil.md5BySalt(password, "salt"): 这里需要密码加密 + */ + String salt = "salt"; + SysUser userInfo = sysUserService.getOne(new QueryWrapper().eq("username", authUser.getUsername())); + if (userInfo == null || !userInfo.getPassword().equals(SaSecureUtil.md5BySalt(password, salt))) { + throw new BadRequestException(LangProcess.msg("login_pwd")); + } + + // 获取权限列表 - 登录查找权限 + List permissionList = roleService.getPermissionList((JSONObject) JSON.toJSON(userInfo)); + + if (!userInfo.getIs_used()) { + throw new BadRequestException(LangProcess.msg("login_account")); + } + + // 登录输入,登出删除 + CurrentUser user = new CurrentUser(); + user.setId(userInfo.getUser_id()); + user.setUsername(userInfo.getUsername()); + user.setPresonName((userInfo.getPerson_name())); + user.setUser(userInfo); + user.setPermissions(permissionList); + + /* + * SaLoginModel 配置登录相关参数 + * PC: 此次登录的客户端设备类型, 用于[同端互斥登录]时指定此次登录的设备类型 + * loginInfo: Token挂载的扩展参数 (此方法只有在集成jwt插件时才会生效) + */ + StpUtil.login(userInfo.getUser_id(), new SaLoginModel() + .setDevice("PC") + .setExtra("loginInfo", user) + ); + JSONObject data = new JSONObject() + .fluentPut("token", "Bearer " + StpUtil.getTokenValue()) + .fluentPut("username", userInfo.getUsername()) + .fluentPut("nickname", userInfo.getPerson_name()); + return PdaResponse.requestParamOk(data); + } } diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdMeMaterialbaseService.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdMeMaterialbaseService.java index 6d70d38..df550d6 100644 --- a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdMeMaterialbaseService.java +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdMeMaterialbaseService.java @@ -1,6 +1,5 @@ package org.nl.wms.basedata_manage.service; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; @@ -98,4 +97,13 @@ public interface IMdMeMaterialbaseService extends IService { */ void deleteRow(MdMeMaterialbase dto); + /** + * 获取物料信息 + * @param whereJson { + * material_code: 查询条件 + * } + * @return List + */ + List getMaterialList (JSONObject whereJson); + } diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdMeMaterialbaseServiceImpl.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdMeMaterialbaseServiceImpl.java index 21dc84c..59f940b 100644 --- a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdMeMaterialbaseServiceImpl.java +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdMeMaterialbaseServiceImpl.java @@ -2,6 +2,7 @@ package org.nl.wms.basedata_manage.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -16,9 +17,7 @@ import org.nl.common.utils.IdUtil; import org.nl.common.utils.SecurityUtils; import org.nl.config.SpringContextHolder; import org.nl.system.controller.secutiry.MobileAuthorizationController; -import org.nl.system.service.logging.dao.SysLog; import org.nl.system.service.secutiry.dto.AuthUserDto; -import org.nl.system.service.user.dao.SysUser; import org.nl.wms.basedata_manage.service.IMdCsSupplierbaseService; import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService; import org.nl.wms.basedata_manage.service.IMdPbClassstandardService; @@ -77,13 +76,6 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl().lambda() @@ -92,7 +84,6 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl getSuppList() { return iMdCsSupplierbaseService.list( new QueryWrapper().lambda() - .eq(MdCsSupplierbase::getIs_used, IOSConstant.ONE) - .eq(MdCsSupplierbase::getIs_delete, IOSConstant.ZERO) + .eq(MdCsSupplierbase::getIs_used, IOSConstant.ONE) + .eq(MdCsSupplierbase::getIs_delete, IOSConstant.ZERO) ); } @@ -224,8 +207,8 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl getUnitList() { return iMdPbMeasureunitService.list( new QueryWrapper().lambda() - .eq(MdPbMeasureunit::getIs_delete, IOSConstant.ZERO) - .eq(MdPbMeasureunit::getIs_used, IOSConstant.ONE) + .eq(MdPbMeasureunit::getIs_delete, IOSConstant.ZERO) + .eq(MdPbMeasureunit::getIs_used, IOSConstant.ONE) ); } @@ -240,4 +223,21 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl getMaterialList(JSONObject whereJson) { + String materialCode = whereJson.getString("material_code"); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .eq(MdMeMaterialbase::getIs_delete, IOSConstant.ZERO) + .eq(MdMeMaterialbase::getIs_used, IOSConstant.ONE); + if (StrUtil.isNotBlank(materialCode)) { + queryWrapper.and(wrapper -> wrapper + .likeRight(MdMeMaterialbase::getMaterial_code, materialCode) + .or() + .likeRight(MdMeMaterialbase::getMaterial_name, materialCode) + .or() + .likeRight(MdMeMaterialbase::getMaterial_spec, materialCode)); + } + return this.list(queryWrapper); + } } diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/controller/MesToWmsController.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/controller/MesToWmsController.java index 8566657..ab069ea 100644 --- a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/controller/MesToWmsController.java +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/controller/MesToWmsController.java @@ -43,4 +43,18 @@ public class MesToWmsController { public ResponseEntity mouldLowMaterial(@RequestBody JSONObject whereJson) { return new ResponseEntity<>(mesToWmsService.mouldLowMaterial(whereJson), HttpStatus.OK); } + + @PostMapping("/returnTask") + @Log(value = "任务回传") + @SaIgnore + public ResponseEntity returnTask(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(mesToWmsService.returnTask(whereJson), HttpStatus.OK); + } + + @PostMapping("/cleanPoint") + @Log(value = "清空点位") + @SaIgnore + public ResponseEntity cleanPoint(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(mesToWmsService.cleanPoint(whereJson), HttpStatus.OK); + } } diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/AcsToWmsService.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/AcsToWmsService.java index ae58bb0..e9b0d69 100644 --- a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/AcsToWmsService.java +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/AcsToWmsService.java @@ -57,6 +57,7 @@ public interface AcsToWmsService { * @param whereJson { * task_code: 任务号 * point_code: 任务起点/终点 + * type: 类型:0-取,1-放 * } * @return BaseResponse { * data: { diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/MesToWmsService.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/MesToWmsService.java index f3187d8..3340850 100644 --- a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/MesToWmsService.java +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/MesToWmsService.java @@ -16,26 +16,54 @@ public interface MesToWmsService { /** * 成型叫料 + * * @param whereJson { - * materialCode:物料料号 - * deviceCode:叫料设备 - * taskCode:任务号 - * } + * materialCode:物料料号 + * deviceCode:叫料设备 + * taskCode:任务号 + * } * @return MesResponse */ MesResponse mouldCallMaterial(JSONObject whereJson); /** * 成型下料 + * * @param whereJson { - * pkgId: PKGID - * pointCode: 当前下料设备 - * materialCode: 物料料号 - * pcsn: 物料批次 - * qty: 物料数量 - * unitName: 计量单位 - * } + * pkgId: PKGID + * pointCode: 当前下料设备 + * materialCode: 物料料号 + * pcsn: 物料批次 + * qty: 物料数量 + * unitName: 计量单位 + * } * @return MesResponse */ MesResponse mouldLowMaterial(JSONObject whereJson); + + /** + * 任务回传 + * + * @param whereJson { + * pkgId: PKG_ID + * startPoint: 出库点位 + * materialCode: 物料料号 + * pcsn: 物料批次 + * qty: 物料数量 + * unitName: 计量单位 + * taskCode: LMS任务号 + * } + * @return MesResponse + */ + MesResponse returnTask(JSONObject whereJson); + + /** + * 清空点位 + * + * @param whereJson { + * pointCode: 点位 + * } + * @return MesResponse + */ + MesResponse cleanPoint(JSONObject whereJson); } diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/WmsToMesService.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/WmsToMesService.java index aad7abd..9b42f3a 100644 --- a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/WmsToMesService.java +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/WmsToMesService.java @@ -60,4 +60,33 @@ public interface WmsToMesService { */ MesResponse returnTaskMes(JSONObject param); + /** + * 制成叫料 + * + * @param param { + * regionCode: 叫料区域编码 + * materialCode: 物料料号 + * taskCode: LMS任务号 + * } + * @return MesResponse + */ + MesResponse productCallMaterial(JSONObject param); + + /** + * 成品/半成品组盘查询 + * + * @param param { + * pkgId: pkgId + * } + * @return MesResponse { + * data: { + * materialCode: 物料料号 + * pcsn: 物料批次 + * qty: 物料数量 + * unitName: 计量单位 + * } + * } + */ + MesResponse getProductGroupInfo(JSONObject param); + } diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/AcsToWmsServiceImpl.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/AcsToWmsServiceImpl.java index d1f9845..5286949 100644 --- a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/AcsToWmsServiceImpl.java +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/AcsToWmsServiceImpl.java @@ -236,20 +236,21 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { throw new BadRequestException("点位编码为【" + whereJson.getString("point_code") + "】的点位不存在!"); } // 调用分配规则进行二次分配 - String configCode = schBaseTask.getConfig_code(); SchBasePoint point = new SchBasePoint(); + String type = whereJson.getString("type"); + String materialId = schBaseTask.getMaterial_id(); // 点位取货 - if (MouldCallMaterialTask.class.getSimpleName().equals(configCode)) { - point = pointDisRuleUtil.disGetRegionRule(pointDao.getRegion_code(), schBaseTask.getMaterial_id(), pointDao.getPoint_code()) + if (IOSConstant.ZERO.equals(type)) { + point = pointDisRuleUtil.disGetRegionRule(pointDao.getRegion_code(), ObjectUtil.isEmpty(materialId) ? "0" : materialId, pointDao.getPoint_code()) .get(0); - schBaseTask.setRemark("二次分配成功,原点位"+schBaseTask.getPoint_code1()+"变更为"+point.getPoint_code()); + schBaseTask.setHandle_status("二次分配成功,原点位"+schBaseTask.getPoint_code1()+"变更为"+point.getPoint_code()); schBaseTask.setPoint_code1(point.getPoint_code()); } // 点位放货 - if (MouldLowMaterialTask.class.getSimpleName().equals(configCode)) { - point = pointDisRuleUtil.disPutRegionRule(pointDao.getRegion_code(), schBaseTask.getMaterial_id()) + if (IOSConstant.ONE.equals(type)) { + point = pointDisRuleUtil.disPutRegionRule(pointDao.getRegion_code(), ObjectUtil.isEmpty(materialId) ? "0" : materialId) .get(0); - schBaseTask.setRemark("二次分配成功,原点位"+schBaseTask.getPoint_code2()+"变更为"+point.getPoint_code()); + schBaseTask.setHandle_status("二次分配成功,原点位"+schBaseTask.getPoint_code2()+"变更为"+point.getPoint_code()); schBaseTask.setPoint_code2(point.getPoint_code()); } // 更新任务信息 diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/MesToWmsServiceImpl.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/MesToWmsServiceImpl.java index 90bcfca..e070c5a 100644 --- a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/MesToWmsServiceImpl.java +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/MesToWmsServiceImpl.java @@ -52,6 +52,7 @@ public class MesToWmsServiceImpl implements MesToWmsService { public MesResponse mouldCallMaterial(JSONObject whereJson) { log.info("MES下发成型叫料任务输入参数为:-------------------" + whereJson.toString()); String taskCode = whereJson.getString("taskCode"); + Assert.notEmpty(taskCode, "任务号不能为空!"); RLock lock = redissonClient.getLock(taskCode); boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); try { @@ -65,7 +66,7 @@ public class MesToWmsServiceImpl implements MesToWmsService { SchBasePoint endPointDao = iSchBasePointService.getById(deviceCode); Assert.notNull(endPointDao, "叫料设备不存在!"); // 调用点位取货分配规则 - Optional firstNoBlockPoint = pointDisRuleUtil.disGetRegionRule(RegionEnum.RAW_REGION.getCode(), materialCode,null) + Optional firstNoBlockPoint = pointDisRuleUtil.disGetRegionRule(RegionEnum.RAW_REGION.getCode(), materialCode, null) .stream().findFirst(); SchBasePoint point = firstNoBlockPoint.orElseThrow(() -> new BadRequestException("当前原料区可分配物料全部被阻挡,请检查点位库存!") @@ -93,6 +94,7 @@ public class MesToWmsServiceImpl implements MesToWmsService { public MesResponse mouldLowMaterial(JSONObject whereJson) { log.info("MES下发成型下料任务输入参数为:-------------------" + whereJson.toString()); String pkgId = whereJson.getString("pkgId"); + Assert.notEmpty(pkgId, "pkgId不能为空!"); RLock lock = redissonClient.getLock(pkgId); boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); try { @@ -135,4 +137,56 @@ public class MesToWmsServiceImpl implements MesToWmsService { log.info("MES下发成型下料任务输出参数为:-------------------" + MesResponse.requestOk("下发成型下料任务成功!")); return MesResponse.requestOk("下发成型下料任务成功!"); } + + @Override + @SneakyThrows + public MesResponse returnTask(JSONObject whereJson) { + log.info("MES回传任务输入参数为:-------------------" + whereJson.toString()); + String taskCode = whereJson.getString("taskCode"); + Assert.notEmpty(taskCode, "LMS任务号不能为空!"); + RLock lock = redissonClient.getLock(taskCode); + boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); + try { + if (tryLock) { + iSchBaseTaskService.returnTaskMesToLms(whereJson); + } else { + throw new BadRequestException("任务:" + taskCode + "的任务正在操作中!"); + } + } catch (Exception e) { + log.info("MES回传任务输出参数为:-------------------" + MesResponse.requestErp("MES回传任务失败:" + e.getMessage())); + return MesResponse.requestErp("回传任务失败:" + e.getMessage()); + } finally { + if (tryLock) { + lock.unlock(); + } + } + log.info("MES回传任务输出参数为:-------------------" + MesResponse.requestOk("MES回传任务成功!")); + return MesResponse.requestOk("MES回传任务成功!"); + } + + @Override + @SneakyThrows + public MesResponse cleanPoint(JSONObject whereJson) { + log.info("MES下发清空输入参数为:-------------------" + whereJson.toString()); + String pointCode = whereJson.getString("pointCode"); + Assert.notEmpty(pointCode, "点位编码不能为空!"); + RLock lock = redissonClient.getLock(pointCode); + boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); + try { + if (tryLock) { + iSchBasePointService.cleanPoint(pointCode); + } else { + throw new BadRequestException("点位:" + pointCode + "正在操作中!"); + } + } catch (Exception e) { + log.info("MES下发清空输出参数为:-------------------" + MesResponse.requestErp("MES清空点位失败:" + e.getMessage())); + return MesResponse.requestErp("清空点位失败:" + e.getMessage()); + } finally { + if (tryLock) { + lock.unlock(); + } + } + log.info("MES下发清空输出参数为:-------------------" + MesResponse.requestOk("MES清空点位成功!")); + return MesResponse.requestOk("MES清空点位成功!"); + } } diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/WmsToMesServiceImpl.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/WmsToMesServiceImpl.java index 4c39037..20d044b 100644 --- a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/WmsToMesServiceImpl.java +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/WmsToMesServiceImpl.java @@ -39,6 +39,16 @@ public class WmsToMesServiceImpl implements WmsToMesService { */ private final String RETURN_TASK = "/api"; + /** + * 制程叫料API + */ + private final String PRODUCT_CALL_MATERIAL = "/api"; + + /** + * 成品/半成品组盘查询API + */ + private final String PRODUCT_MATERIAL_GROUP = "/api"; + @Override public MesResponse rawMaterialGroupInfo(JSONObject param) { log.info("下发MES接口查询原料组盘信息的输入参数为:-------------------" + param.toString()); @@ -62,4 +72,20 @@ public class WmsToMesServiceImpl implements WmsToMesService { log.info("向MES回传任务信息的输出参数为:-------------------" + mesResponse.toString()); return mesResponse; } + + @Override + public MesResponse productCallMaterial(JSONObject param) { + log.info("向MES申请制程叫料的输入参数为:-------------------" + param.toString()); + MesResponse mesResponse = mesUtil.sendMes(param, PRODUCT_CALL_MATERIAL); + log.info("向MES申请制程叫料的输出参数为:-------------------" + mesResponse.toString()); + return mesResponse; + } + + @Override + public MesResponse getProductGroupInfo(JSONObject param) { + log.info("下发MES接口查询成品/半成品组盘信息的输入参数为:-------------------" + param.toString()); + MesResponse mesResponse = mesUtil.sendMes(param, PRODUCT_MATERIAL_GROUP); + log.info("下发MES接口查询成品/半成品组盘信息的输出参数为:-------------------" + mesResponse.toString()); + return mesResponse; + } } diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/authorization/controller/AuthorizationsController.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/authorization/controller/AuthorizationsController.java index e4f66d0..21e1c98 100644 --- a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/authorization/controller/AuthorizationsController.java +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/authorization/controller/AuthorizationsController.java @@ -1,6 +1,7 @@ package org.nl.wms.pda.authorization.controller; import cn.dev33.satoken.annotation.SaIgnore; +import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; import org.nl.common.logging.annotation.Log; @@ -8,6 +9,7 @@ import org.nl.config.MapOf; import org.nl.system.service.menu.ISysMenuService; import org.nl.system.service.param.ISysParamService; import org.nl.system.service.param.dao.Param; +import org.nl.system.service.secutiry.impl.OnlineUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -38,10 +40,13 @@ public class AuthorizationsController { @Autowired private ISysParamService iSysParamService; + @Autowired + private OnlineUserService onlineUserService; + @PostMapping(value = "/authority") @SaIgnore - public ResponseEntity queryAuthority(@RequestBody Map param) { - return new ResponseEntity<>(menuService.queryAuthority(param), HttpStatus.OK); + public ResponseEntity queryAuthority(@RequestBody JSONObject param) { + return new ResponseEntity<>(onlineUserService.pdaLogin(param), HttpStatus.OK); } /** diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/controller/ManMadeController.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/controller/ManMadeController.java index 5080879..865e6c4 100644 --- a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/controller/ManMadeController.java +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/controller/ManMadeController.java @@ -33,32 +33,32 @@ public class ManMadeController { @Resource private ManMadeService manMadeService; - @PostMapping("/parseCode") - @Log("人工放货-扫码解析") + @PostMapping("/directPut") + @Log("人工放货-直接放货") @SaIgnore - public ResponseEntity parseCode(@RequestBody JSONObject whereJson) { - return new ResponseEntity<>(manMadeService.parseCode(whereJson), HttpStatus.OK); + public ResponseEntity directPut(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(manMadeService.directPut(whereJson), HttpStatus.OK); } @PostMapping("/bindPoint") - @Log("人工放货-绑定点位") + @Log("人工放货-确认放货") @SaIgnore public ResponseEntity bindPoint(@RequestBody JSONObject whereJson) { return new ResponseEntity<>(manMadeService.bindPoint(whereJson), HttpStatus.OK); } - @PostMapping("/queryPointInfo") - @Log("人工取货-根据点位编码查询点位物料信息") + @PostMapping("/regionGet") + @Log("人工取货-区域取货") @SaIgnore - public ResponseEntity queryPointInfo(@RequestBody JSONObject whereJson) { - return new ResponseEntity<>(manMadeService.queryPointInfo(whereJson), HttpStatus.OK); + public ResponseEntity regionGet(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(manMadeService.regionGet(whereJson), HttpStatus.OK); } - @PostMapping("/unBindPoint") - @Log("人工取货-解绑点位") + @PostMapping("/pointGet") + @Log("人工取货-点位取货") @SaIgnore - public ResponseEntity unBindPoint(@RequestBody JSONObject whereJson) { - return new ResponseEntity<>(manMadeService.unBindPoint(whereJson), HttpStatus.OK); + public ResponseEntity pointGet(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(manMadeService.pointGet(whereJson), HttpStatus.OK); } } diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/controller/ProductCallMaterialController.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/controller/ProductCallMaterialController.java new file mode 100644 index 0000000..432cd48 --- /dev/null +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/controller/ProductCallMaterialController.java @@ -0,0 +1,63 @@ +package org.nl.wms.pda.buss_management.controller; + + +import cn.dev33.satoken.annotation.SaIgnore; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.logging.annotation.Log; +import org.nl.wms.pda.buss_management.service.ProductCallMaterialService; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + *

+ * PDA 产线叫料/叫料搬运 控制层 + *

+ * + * @author Liuxy + * @since 2026-08-18 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/pda/productMaterial") +@Slf4j +public class ProductCallMaterialController { + + @Resource + private ProductCallMaterialService productCallMaterialService; + + @PostMapping("/regionCallMaterial") + @Log("制成叫料-区域叫料") + @SaIgnore + public ResponseEntity regionCallMaterial(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(productCallMaterialService.regionCallMaterial(whereJson), HttpStatus.OK); + } + + @PostMapping("/pointCallMaterial") + @Log("制成叫料-点位叫料") + @SaIgnore + public ResponseEntity pointCallMaterial(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(productCallMaterialService.pointCallMaterial(whereJson), HttpStatus.OK); + } + + @PostMapping("/queryTask") + @Log("叫料搬运-查询任务") + @SaIgnore + public ResponseEntity queryTask() { + return new ResponseEntity<>(productCallMaterialService.queryTask(), HttpStatus.OK); + } + + @PostMapping("/sendTask") + @Log("叫料搬运-确认下发") + @SaIgnore + public ResponseEntity sendTask(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(productCallMaterialService.sendTask(whereJson), HttpStatus.OK); + } +} diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/controller/PublicController.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/controller/PublicController.java new file mode 100644 index 0000000..30a1fd9 --- /dev/null +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/controller/PublicController.java @@ -0,0 +1,77 @@ +package org.nl.wms.pda.buss_management.controller; + + +import cn.dev33.satoken.annotation.SaIgnore; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.logging.annotation.Log; +import org.nl.wms.pda.buss_management.service.PublicService; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + *

+ * PDA通用管理控制层 + *

+ * + * @author Liuxy + * @since 2026-08-24 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/pda/public") +@Slf4j +public class PublicController { + + @Resource + private PublicService publicService; + + @PostMapping("/queryPoint") + @Log("通用管理-点位查询") + @SaIgnore + public ResponseEntity queryPoint(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(publicService.queryPoint(whereJson), HttpStatus.OK); + } + + @PostMapping("/queryMaterial") + @Log("通用管理-物料查询") + @SaIgnore + public ResponseEntity queryMaterial(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(publicService.queryMaterial(whereJson), HttpStatus.OK); + } + + @PostMapping("/parseCode") + @Log("通用管理-扫码解析") + @SaIgnore + public ResponseEntity parseCode(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(publicService.parseCode(whereJson), HttpStatus.OK); + } + + @PostMapping("/getRegionNum") + @Log("通用管理-获取此区域中的有货点位") + @SaIgnore + public ResponseEntity getRegionNum(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(publicService.getRegionNum(whereJson), HttpStatus.OK); + } + + @PostMapping("/getRegion") + @Log("通用管理-获取区域") + @SaIgnore + public ResponseEntity getRegion() { + return new ResponseEntity<>(publicService.getRegion(), HttpStatus.OK); + } + + @PostMapping("/getRegionPoint") + @Log("通用管理-根据区域获取空位") + @SaIgnore + public ResponseEntity getRegionPoint(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(publicService.getRegionPoint(whereJson), HttpStatus.OK); + } +} diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/controller/TaskController.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/controller/TaskController.java new file mode 100644 index 0000000..45d168c --- /dev/null +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/controller/TaskController.java @@ -0,0 +1,72 @@ +package org.nl.wms.pda.buss_management.controller; + + +import cn.dev33.satoken.annotation.SaIgnore; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.logging.annotation.Log; +import org.nl.wms.pda.buss_management.service.TaskService; +import org.nl.wms.pda.buss_management.service.UnMaterialDisService; +import org.nl.wms.sch_manage.service.dao.SchBaseTask; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + *

+ * PDA 任务 控制层 + *

+ * + * @author Liuxy + * @since 2026-08-26 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/pda/task") +@Slf4j +public class TaskController { + + @Resource + private TaskService taskService; + + @PostMapping("/queryUnTask") + @Log("任务管理-查询未完成任务") + @SaIgnore + public ResponseEntity queryUnTask(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(taskService.queryUnTask(whereJson), HttpStatus.OK); + } + + @PostMapping("/confirmTask") + @Log("任务管理-查询已完成任务") + @SaIgnore + public ResponseEntity confirmTask(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(taskService.confirmTask(whereJson), HttpStatus.OK); + } + + @PostMapping("/padCancel") + @Log("任务管理-取消任务") + @SaIgnore + public ResponseEntity padCancel(@RequestBody SchBaseTask task) { + return new ResponseEntity<>(taskService.padCancel(task), HttpStatus.OK); + } + + @PostMapping("/againSendTask") + @Log("任务管理-重新下发") + @SaIgnore + public ResponseEntity againSendTask(@RequestBody SchBaseTask task) { + return new ResponseEntity<>(taskService.againSendTask(task), HttpStatus.OK); + } + + @PostMapping("/confirm") + @Log("任务管理-强制完成") + @SaIgnore + public ResponseEntity confirm(@RequestBody SchBaseTask task) { + return new ResponseEntity<>(taskService.confirm(task), HttpStatus.OK); + } +} diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/controller/UnMaterialDisController.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/controller/UnMaterialDisController.java new file mode 100644 index 0000000..7858f31 --- /dev/null +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/controller/UnMaterialDisController.java @@ -0,0 +1,56 @@ +package org.nl.wms.pda.buss_management.controller; + + +import cn.dev33.satoken.annotation.SaIgnore; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.logging.annotation.Log; +import org.nl.wms.pda.buss_management.service.UnMaterialDisService; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + *

+ * PDA 制成下料/下料配送 控制层 + *

+ * + * @author Liuxy + * @since 2026-08-19 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/pda/unMaterialDis") +@Slf4j +public class UnMaterialDisController { + + @Resource + private UnMaterialDisService unMaterialDisService; + + @PostMapping("/productSend") + @Log("制程下料-下料配送") + @SaIgnore + public ResponseEntity productSend(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(unMaterialDisService.productSend(whereJson), HttpStatus.OK); + } + + @PostMapping("/sendRegion") + @Log("下料配送-区域送货") + @SaIgnore + public ResponseEntity sendRegion(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(unMaterialDisService.sendRegion(whereJson), HttpStatus.OK); + } + + @PostMapping("/sendPoint") + @Log("下料配送-单点配送") + @SaIgnore + public ResponseEntity sendPoint(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(unMaterialDisService.sendPoint(whereJson), HttpStatus.OK); + } +} diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/service/ManMadeService.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/service/ManMadeService.java index 9d8ddde..d3d9880 100644 --- a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/service/ManMadeService.java +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/service/ManMadeService.java @@ -14,14 +14,18 @@ import org.nl.wms.pda.util.PdaResponse; public interface ManMadeService { /** - * 人工放货 - 扫码解析 + * 人工放货-直接放货 * * @param whereJson { - * code + * pointCode: 点位编码 + * materialCode: 物料料号 + * pcsn: 物料批次 + * qty: 物料数量 + * unitName: 计量单位 * } * @return PdaResponse */ - PdaResponse parseCode(JSONObject whereJson); + PdaResponse directPut(JSONObject whereJson); /** * 人工放货 - 绑定点位 @@ -38,22 +42,22 @@ public interface ManMadeService { PdaResponse bindPoint(JSONObject whereJson); /** - * 人工取货 - 根据点位编码查询点位物料信息 + * 人工取货-区域取货 * * @param whereJson { - * pointCode: 点位编码 + * point_code: 点位编码 * } * @return PdaResponse */ - PdaResponse queryPointInfo(JSONObject whereJson); + PdaResponse regionGet(JSONObject whereJson); /** - * 人工取货 - 解绑点位 + * 人工取货-点位取货 * * @param whereJson { - * pointCode: 点位编码 + * point_code: 点位编码 * } * @return PdaResponse */ - PdaResponse unBindPoint(JSONObject whereJson); + PdaResponse pointGet(JSONObject whereJson); } diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/service/ProductCallMaterialService.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/service/ProductCallMaterialService.java new file mode 100644 index 0000000..863667e --- /dev/null +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/service/ProductCallMaterialService.java @@ -0,0 +1,72 @@ +package org.nl.wms.pda.buss_management.service; + +import com.alibaba.fastjson.JSONObject; +import org.nl.wms.pda.util.PdaResponse; + +/** + *

+ * PDA产线叫料 接口 + *

+ * + * @author Liuxy + * @since 2026-08-18 + */ +public interface ProductCallMaterialService { + + /** + * 产线叫料接口-叫料规则 + * + * @param whereJson { + * region_code: 叫料区域 + * point_code: 叫料点位 + * material_code: 叫料料号 + * out_region_code: 出料区域 + * } + * @return PdaResponse + */ + void callMaterial(JSONObject whereJson); + + /** + * 制成叫料-区域叫料 + * + * @param whereJson { + * point_code:叫料点位 + * material_code:物料编码 + * } + * @return PdaResponse + */ + PdaResponse regionCallMaterial(JSONObject whereJson); + + /** + * 制成叫料-点位叫料 + * + * @param whereJson { + * point_code:叫料点位 + * material_code:物料编码 + * } + * @return PdaResponse + */ + PdaResponse pointCallMaterial(JSONObject whereJson); + + /** + * 叫料搬运-查询任务 + * + * @return PdaResponse + */ + PdaResponse queryTask(); + + /** + * 叫料搬运-确认下发 + * + * @param whereJson { + * source_code: 起点 + * task_code: 任务号 + * material_code: 物料编码 + * pcsn: 批次 + * qty: 数量 + * unitName: 单位 + * } + * @return PdaResponse + */ + PdaResponse sendTask(JSONObject whereJson); +} diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/service/PublicService.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/service/PublicService.java new file mode 100644 index 0000000..64bdd2f --- /dev/null +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/service/PublicService.java @@ -0,0 +1,72 @@ +package org.nl.wms.pda.buss_management.service; + +import com.alibaba.fastjson.JSONObject; +import org.nl.wms.pda.util.PdaResponse; + +/** + *

+ * PDA通用管理控制层接口 + *

+ * + * @author Liuxy + * @since 2026-08-24 + */ +public interface PublicService { + + /** + * 通用管理-点位查询 + * + * @param whereJson { + * point_code: 点位编码 + * } + * @return PdaResponse + */ + PdaResponse queryPoint(JSONObject whereJson); + + /** + * 通用管理-物料查询 + * + * @param whereJson { + * material_code: 查询条件 + * } + * @return PdaResponse + */ + PdaResponse queryMaterial(JSONObject whereJson); + + /** + * 通用管理-扫码解析 + * + * @param whereJson { + * code:编码 + * } + * @return PdaResponse + */ + PdaResponse parseCode(JSONObject whereJson); + + /** + * 通用管理-获取此区域中的有货点位 + * + * @param whereJson { + * point_code: 点位编码 + * } + * @return PdaResponse + */ + PdaResponse getRegionNum(JSONObject whereJson); + + /** + * 通用管理-获取区域 + * + * @return PdaResponse + */ + PdaResponse getRegion(); + + /** + * 通用管理-根据区域获取空位 + * + * @param whereJson { + * region_code:区域编码 + * } + * @return PdaResponse + */ + PdaResponse getRegionPoint(JSONObject whereJson); +} diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/service/TaskService.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/service/TaskService.java new file mode 100644 index 0000000..d0c3a01 --- /dev/null +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/service/TaskService.java @@ -0,0 +1,60 @@ +package org.nl.wms.pda.buss_management.service; + +import com.alibaba.fastjson.JSONObject; +import org.nl.wms.pda.util.PdaResponse; +import org.nl.wms.sch_manage.service.dao.SchBaseTask; + +/** + *

+ * PDA任务管理 接口 + *

+ * + * @author Liuxy + * @since 2026-08-26 + */ +public interface TaskService { + + /** + * 任务管理-查询未完成任务 + * + * @param whereJson { + * task_code: 查询 + * } + * @return PdaResponse + */ + PdaResponse queryUnTask(JSONObject whereJson); + + /** + * 任务管理-查询已完成任务 + * + * @param whereJson { + * task_code: 查询 + * } + * @return PdaResponse + */ + PdaResponse confirmTask(JSONObject whereJson); + + /** + * 任务管理-取消任务 + * + * @param task 任务实体类 + * @return PdaResponse + */ + PdaResponse padCancel(SchBaseTask task); + + /** + * 任务管理-重新下发 + * + * @param task 任务实体类 + * @return PdaResponse + */ + PdaResponse againSendTask(SchBaseTask task); + + /** + * 任务管理-强制完成 + * + * @param task 任务实体类 + * @return PdaResponse + */ + PdaResponse confirm(SchBaseTask task); +} diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/service/UnMaterialDisService.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/service/UnMaterialDisService.java new file mode 100644 index 0000000..c02c919 --- /dev/null +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/service/UnMaterialDisService.java @@ -0,0 +1,54 @@ +package org.nl.wms.pda.buss_management.service; + +import com.alibaba.fastjson.JSONObject; +import org.nl.wms.pda.util.PdaResponse; + +/** + *

+ * PDA制成下料/下料配送 接口 + *

+ * + * @author Liuxy + * @since 2026-08-19 + */ +public interface UnMaterialDisService { + + /** + * 制程下料-下料配送 + * + * @param whereJson { + * point_code: 起点 + * material_code: 物料编码 + * pcsn: 批次 + * qty: 数量 + * unitName: 单位 + * region_code: 目的区域 + * end_point_code: 目的点位 + * } + * @return PdaResponse + */ + PdaResponse productSend(JSONObject whereJson); + + /** + * 下料配送-区域送货 + * + * @param whereJson { + * in_region_code:放料区域 + * region_code:取料区域 + * } + * @return PdaResponse + */ + PdaResponse sendRegion(JSONObject whereJson); + + /** + * 下料配送-单点配送 + * + * @param whereJson { + * point_code:取料点位 + * in_region_code:放料区域 + * in_point_code:放料点位(可以为空) + * } + * @return PdaResponse + */ + PdaResponse sendPoint(JSONObject whereJson); +} diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/service/impl/ManMadeServiceImpl.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/service/impl/ManMadeServiceImpl.java index bf95e10..95506eb 100644 --- a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/service/impl/ManMadeServiceImpl.java +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/service/impl/ManMadeServiceImpl.java @@ -2,15 +2,14 @@ package org.nl.wms.pda.buss_management.service.impl; import cn.hutool.core.lang.Assert; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import lombok.extern.slf4j.Slf4j; -import org.nl.wms.ext.service.WmsToMesService; -import org.nl.wms.ext.service.util.MesResponse; import org.nl.wms.pda.buss_management.service.ManMadeService; import org.nl.wms.pda.util.PdaResponse; import org.nl.wms.sch_manage.enums.PointStatusEnum; import org.nl.wms.sch_manage.service.ISchBasePointService; import org.nl.wms.sch_manage.service.dao.SchBasePoint; -import org.springframework.http.HttpStatus; +import org.nl.wms.warehouse_management.enums.IOSConstant; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -28,24 +27,21 @@ import javax.annotation.Resource; @Slf4j public class ManMadeServiceImpl implements ManMadeService { - @Resource - private WmsToMesService wmsToMesService; - @Resource private ISchBasePointService iSchBasePointService; @Override - public PdaResponse parseCode(JSONObject whereJson) { - String code = whereJson.getString("code"); - Assert.notNull(code, "扫码内容为空!"); + @Transactional + public PdaResponse directPut(JSONObject whereJson) { + Assert.notEmpty(whereJson, "输入参数为空!"); - String[] arrCode = code.split(","); - JSONObject paramJson = new JSONObject() - .fluentPut("materialCode", arrCode[0]) - .fluentPut("pcsn", arrCode[1]); - MesResponse mesResponse = wmsToMesService.rawMaterialGroupInfo(paramJson); - Assert.equals(HttpStatus.OK.value(), mesResponse.getStatus(), mesResponse.getMessage()); - return PdaResponse.requestParamOk(mesResponse.getData()); + boolean isUpdate = iSchBasePointService.lambdaUpdate() + .eq(SchBasePoint::getPoint_code, whereJson.getString("pointCode")) + .set(SchBasePoint::getPoint_status, PointStatusEnum.FULL_POINT.getCode()) + .set(SchBasePoint::getMaterial_id, IOSConstant.ZERO) + .update(); + Assert.isTrue(isUpdate, "点位不存在【{}】", whereJson.getString("pointCode")); + return PdaResponse.requestOk("放货完成"); } @Override @@ -62,26 +58,38 @@ public class ManMadeServiceImpl implements ManMadeService { .set(SchBasePoint::getPoint_status, PointStatusEnum.FULL_POINT.getCode()) .update(); Assert.isTrue(isUpdate, "点位不存在【{}】", whereJson.getString("pointCode")); - return PdaResponse.requestOk(); + return PdaResponse.requestOk("放货完成"); } @Override - public PdaResponse queryPointInfo(JSONObject whereJson) { - return PdaResponse.requestParamOk(iSchBasePointService.getById(whereJson.getString("pointCode"))); + public PdaResponse regionGet(JSONObject whereJson) { + SchBasePoint pointCode = iSchBasePointService.getById(whereJson.getString("point_code")); + iSchBasePointService.update( + new UpdateWrapper().lambda() + .eq(SchBasePoint::getRegion_code, pointCode.getRegion_code()) + .eq(SchBasePoint::getIs_used, IOSConstant.ONE) + .eq(SchBasePoint::getIs_lock, IOSConstant.ZERO) + .eq(SchBasePoint::getPoint_status, PointStatusEnum.FULL_POINT.getCode()) + .set(SchBasePoint::getMaterial_id, "") + .set(SchBasePoint::getMaterial_pcsn, "") + .set(SchBasePoint::getMaterial_qty, "") + .set(SchBasePoint::getUnit_name, "") + .set(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode()) + ); + return PdaResponse.requestOk("区域取货完成!"); } @Override - public PdaResponse unBindPoint(JSONObject whereJson) { - Assert.notEmpty(whereJson, "输入参数为空!"); - boolean isUpdate = iSchBasePointService.lambdaUpdate() - .eq(SchBasePoint::getPoint_code, whereJson.getString("pointCode")) - .set(SchBasePoint::getMaterial_id, "") - .set(SchBasePoint::getMaterial_pcsn, "") - .set(SchBasePoint::getMaterial_qty, "") - .set(SchBasePoint::getUnit_name, "") - .set(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode()) - .update(); - Assert.isTrue(isUpdate, "点位不存在【{}】", whereJson.getString("pointCode")); - return PdaResponse.requestOk(); + public PdaResponse pointGet(JSONObject whereJson) { + iSchBasePointService.update( + new UpdateWrapper().lambda() + .eq(SchBasePoint::getPoint_code, whereJson.getString("point_code")) + .set(SchBasePoint::getMaterial_id, "") + .set(SchBasePoint::getMaterial_pcsn, "") + .set(SchBasePoint::getMaterial_qty, "") + .set(SchBasePoint::getUnit_name, "") + .set(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode()) + ); + return PdaResponse.requestOk("点位取货完成!"); } } diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/service/impl/ProductCallMaterialServiceImpl.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/service/impl/ProductCallMaterialServiceImpl.java new file mode 100644 index 0000000..c2f49d3 --- /dev/null +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/service/impl/ProductCallMaterialServiceImpl.java @@ -0,0 +1,162 @@ +package org.nl.wms.pda.buss_management.service.impl; + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +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.service.WmsToMesService; +import org.nl.wms.ext.service.util.MesResponse; +import org.nl.wms.pda.buss_management.service.ProductCallMaterialService; +import org.nl.wms.pda.util.PdaResponse; +import org.nl.wms.sch_manage.enums.TaskStatus; +import org.nl.wms.sch_manage.service.ISchBasePointService; +import org.nl.wms.sch_manage.service.ISchBaseTaskService; +import org.nl.wms.sch_manage.service.dao.SchBasePoint; +import org.nl.wms.sch_manage.service.dao.SchBaseTask; +import org.nl.wms.sch_manage.service.util.tasks.ProductCallMaterialTask; +import org.nl.wms.sch_manage.util.PointDisRuleUtil; +import org.nl.wms.warehouse_management.enums.IOSConstant; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +/** + *

+ * PDA产线叫料 实现类 + *

+ * + * @author Liuxy + * @since 2026-08-18 + */ +@Service +@Slf4j +public class ProductCallMaterialServiceImpl implements ProductCallMaterialService { + + @Resource + private ISchBasePointService iSchBasePointService; + + @Resource + private ISchBaseTaskService iSchBaseTaskService; + + @Resource + private PointDisRuleUtil pointDisRuleUtil; + + @Resource + private WmsToMesService wmsToMesService; + + /** + * + * @param whereJson { + * region_code: 叫料区域 + * point_code: 叫料点位 + * material_code: 叫料料号 + * out_region_code: 出料区域 + * } + * 叫料规则: + * 1.叫料点位不为空则指定当前点位 + * 2.叫料点位为空,区域不为空则分配一个空位 + * 3.出料区域不为空,则分配此区域对应的物料 + * 4.出料区域为空,则请求MES + */ + @Override + @Transactional + public void callMaterial(JSONObject whereJson) { + Assert.notEmpty(whereJson.getString("material_code"), "物料料号不能为空!"); + String materialCode = whereJson.getString("material_code"); + String pointCode = whereJson.getString("point_code"); + String regionCode = whereJson.getString("region_code"); + String outRegionCode = whereJson.getString("out_region_code"); + + String endPoint = Optional.ofNullable(pointCode) + .filter(ObjectUtil::isNotEmpty) + .orElseGet(() -> { + List pointList = pointDisRuleUtil.disPutRegionRule(regionCode, materialCode); + Assert.notEmpty(pointList, "此区域【" + regionCode + "】没有空位或空的一排!"); + return pointList.get(0).getPoint_code(); + }); + + // 出料区域为空:调用MES直接返回 + if (ObjectUtil.isEmpty(outRegionCode)) { + SchBasePoint point = iSchBasePointService.getById(endPoint); + String taskId = iSchBaseTaskService.createBussTask(new SchBasePoint(), "", endPoint, + ProductCallMaterialTask.class.getSimpleName(), ""); + JSONObject param = new JSONObject() + .fluentPut("regionCode", point.getRegion_code()) + .fluentPut("materialCode", materialCode) + .fluentPut("taskCode", taskId); + MesResponse mesResponse = wmsToMesService.productCallMaterial(param); + Assert.equals(HttpStatus.OK.value(), mesResponse.getStatus(), mesResponse.getMessage()); + return; + } + + // 存在出料区域,获取起始点位 + SchBasePoint pointDao = Optional.ofNullable(pointDisRuleUtil.disGetRegionRule(outRegionCode, materialCode, null)) + .filter(ObjectUtil::isNotEmpty) + .map(list -> list.get(0)) + .orElseThrow(() -> new BadRequestException("未获取到可用起始点位")); + String startPoint = pointDao.getPoint_code(); + + iSchBaseTaskService.createBussTask(pointDao, startPoint, endPoint, + ProductCallMaterialTask.class.getSimpleName(), ""); + } + + @Override + public PdaResponse regionCallMaterial(JSONObject whereJson) { + SchBasePoint pointDao = iSchBasePointService.getById(whereJson.getString("point_code")); + JSONObject param = new JSONObject() + .fluentPut("region_code", pointDao.getRegion_code()) + .fluentPut("material_code", whereJson.getString("material_code")); + this.callMaterial(param); + return PdaResponse.requestOk("区域叫料成功"); + } + + @Override + public PdaResponse pointCallMaterial(JSONObject whereJson) { + SchBasePoint pointDao = iSchBasePointService.getById(whereJson.getString("point_code")); + JSONObject param = new JSONObject() + .fluentPut("region_code", pointDao.getRegion_code()) + .fluentPut("point_code", pointDao.getPoint_code()) + .fluentPut("material_code", whereJson.getString("material_code")); + this.callMaterial(param); + return PdaResponse.requestOk("点位叫料成功"); + } + + @Override + public PdaResponse queryTask() { + List taskList = iSchBaseTaskService.list(new LambdaQueryWrapper() + .eq(SchBaseTask::getTask_status, TaskStatus.CREATE.getCode()) + .eq(SchBaseTask::getIs_delete, IOSConstant.ZERO) + .eq(SchBaseTask::getConfig_code, ProductCallMaterialTask.class.getSimpleName())); + + List resultList = taskList.stream().map(item -> { + JSONObject json = JSONObject.parseObject(JSONObject.toJSONString(item)); + Optional.ofNullable(iSchBasePointService.getById(item.getPoint_code2())) + .ifPresent(p -> { + json.put("region_name", item.getTask_code() + "|" + p.getRegion_name()); + json.put("end_point_code", p.getPoint_code()); + }); + return json; + }).collect(Collectors.toList()); + return PdaResponse.requestParamOk(resultList); + } + + @Override + public PdaResponse sendTask(JSONObject whereJson) { + SchBaseTask taskDao = iSchBaseTaskService.getByCode(whereJson.getString("task_code")); + taskDao.setPoint_code1(whereJson.getString("source_code")); + taskDao.setMaterial_id(whereJson.getString("material_code")); + taskDao.setMaterial_pcsn(whereJson.getString("pcsn")); + taskDao.setMaterial_qty(whereJson.getBigDecimal("qty")); + taskDao.setUnit_name(whereJson.getString("unitName")); + iSchBaseTaskService.updateById(taskDao); + iSchBaseTaskService.sendOneTask(taskDao); + return PdaResponse.requestOk("下发成功"); + } +} diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/service/impl/PublicServiceImpl.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/service/impl/PublicServiceImpl.java new file mode 100644 index 0000000..dfe1baa --- /dev/null +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/service/impl/PublicServiceImpl.java @@ -0,0 +1,117 @@ +package org.nl.wms.pda.buss_management.service.impl; + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.exception.BadRequestException; +import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService; +import org.nl.wms.ext.service.WmsToMesService; +import org.nl.wms.ext.service.util.MesResponse; +import org.nl.wms.pda.buss_management.service.PublicService; +import org.nl.wms.pda.util.PdaResponse; +import org.nl.wms.sch_manage.enums.PointStatusEnum; +import org.nl.wms.sch_manage.service.ISchBasePointService; +import org.nl.wms.sch_manage.service.ISchBaseRegionService; +import org.nl.wms.sch_manage.service.dao.SchBasePoint; +import org.nl.wms.warehouse_management.enums.IOSConstant; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + *

+ * PDA通用管理控制层 实现类 + *

+ * + * @author Liuxy + * @since 2026-08-24 + */ +@Service +@Slf4j +public class PublicServiceImpl implements PublicService { + + @Resource + private ISchBasePointService iSchBasePointService; + + @Resource + private IMdMeMaterialbaseService iMdMeMaterialbaseService; + + @Resource + private WmsToMesService wmsToMesService; + + @Resource + private ISchBaseRegionService iSchBaseRegionService; + + @Override + public PdaResponse queryPoint(JSONObject whereJson) { + JSONObject result = iSchBasePointService.queryPointInfo(whereJson); + if (ObjectUtil.isEmpty(result)) { + throw new BadRequestException("此点位不存在【" + whereJson.getString("point_code") + "】"); + } + return PdaResponse.requestParamOk(result); + } + + @Override + public PdaResponse queryMaterial(JSONObject whereJson) { + return PdaResponse.requestParamOk(iMdMeMaterialbaseService.getMaterialList(whereJson)); + } + + @Override + public PdaResponse parseCode(JSONObject whereJson) { + String code = whereJson.getString("code"); + Assert.notNull(code, "扫码内容为空!"); + // 判断是否存在逗号 + if (code.contains(",")) { + String[] arrCode = code.split(","); + JSONObject paramJson = new JSONObject() + .fluentPut("materialCode", arrCode[0]) + .fluentPut("pcsn", arrCode[1]); + + MesResponse mesResponse = wmsToMesService.rawMaterialGroupInfo(paramJson); + Assert.equals(HttpStatus.OK.value(), mesResponse.getStatus(), mesResponse.getMessage()); + return PdaResponse.requestParamOk(mesResponse.getData()); + } + JSONObject paramJson = new JSONObject() + .fluentPut("pkgId", code); + MesResponse mesResponse = wmsToMesService.getProductGroupInfo(paramJson); + Assert.equals(HttpStatus.OK.value(), mesResponse.getStatus(), mesResponse.getMessage()); + return PdaResponse.requestParamOk(mesResponse.getData()); + } + + @Override + public PdaResponse getRegionNum(JSONObject whereJson) { + SchBasePoint pointDao = iSchBasePointService.getById(whereJson.getString("point_code")); + List list = iSchBasePointService.list( + new QueryWrapper().lambda() + .eq(SchBasePoint::getIs_lock, IOSConstant.ZERO) + .eq(SchBasePoint::getIs_used, IOSConstant.ONE) + .eq(SchBasePoint::getPoint_status, PointStatusEnum.FULL_POINT.getCode()) + .eq(SchBasePoint::getRegion_code, pointDao.getRegion_code()) + ); + JSONObject result = new JSONObject() + .fluentPut("region_name", pointDao.getRegion_name()) + .fluentPut("num", list.size()); + return PdaResponse.requestParamOk(result); + } + + @Override + public PdaResponse getRegion() { + return PdaResponse.requestParamOk(iSchBaseRegionService.list()); + } + + @Override + public PdaResponse getRegionPoint(JSONObject whereJson) { + List list = iSchBasePointService.list( + new QueryWrapper().lambda() + .eq(SchBasePoint::getIs_lock, IOSConstant.ZERO) + .eq(SchBasePoint::getIs_used, IOSConstant.ONE) + .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode()) + .eq(SchBasePoint::getRegion_code, whereJson.getString("region_code")) + ); + return PdaResponse.requestParamOk(list); + } +} diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/service/impl/TaskServiceImpl.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/service/impl/TaskServiceImpl.java new file mode 100644 index 0000000..32e7b5e --- /dev/null +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/service/impl/TaskServiceImpl.java @@ -0,0 +1,70 @@ +package org.nl.wms.pda.buss_management.service.impl; + +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.nl.wms.pda.buss_management.service.TaskService; +import org.nl.wms.pda.util.PdaResponse; +import org.nl.wms.sch_manage.service.ISchBaseTaskService; +import org.nl.wms.sch_manage.service.dao.SchBaseTask; +import org.nl.wms.sch_manage.service.dao.mapper.SchBaseTaskMapper; +import org.nl.wms.sch_manage.service.util.AbstractTask; +import org.nl.wms.sch_manage.service.util.TaskFactory; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + *

+ * PDA任务股那里 实现类 + *

+ * + * @author Liuxy + * @since 2026-08-26 + */ +@Service +@Slf4j +public class TaskServiceImpl implements TaskService { + + @Resource + private ISchBaseTaskService iSchBaseTaskService; + + @Resource + private SchBaseTaskMapper schBaseTaskMapper; + + @Resource + private TaskFactory taskFactory; + + @Override + public PdaResponse queryUnTask(JSONObject whereJson) { + return PdaResponse.requestParamOk(schBaseTaskMapper.queryUnTask(whereJson)); + } + + @Override + public PdaResponse confirmTask(JSONObject whereJson) { + return PdaResponse.requestParamOk(schBaseTaskMapper.confirmTask(whereJson)); + } + + @Override + public PdaResponse padCancel(SchBaseTask task) { + SchBaseTask taskDao = iSchBaseTaskService.getByCode(task.getTask_code()); + AbstractTask factory = taskFactory.getTask(taskDao.getConfig_code()); + factory.cancel(taskDao.getTask_code()); + return PdaResponse.requestOk("取消任务成功!"); + } + + @Override + public PdaResponse againSendTask(SchBaseTask task) { + SchBaseTask taskDao = iSchBaseTaskService.getByCode(task.getTask_code()); + AbstractTask factory = taskFactory.getTask(taskDao.getConfig_code()); + factory.sendTaskOne(taskDao.getTask_id()); + return PdaResponse.requestOk("重新下发任务成功!"); + } + + @Override + public PdaResponse confirm(SchBaseTask task) { + SchBaseTask taskDao = iSchBaseTaskService.getByCode(task.getTask_code()); + AbstractTask factory = taskFactory.getTask(taskDao.getConfig_code()); + factory.forceFinish(taskDao.getTask_code()); + return PdaResponse.requestOk("强制完成任务成功!"); + } +} diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/service/impl/UnMaterialDisServiceImpl.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/service/impl/UnMaterialDisServiceImpl.java new file mode 100644 index 0000000..e065ac6 --- /dev/null +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/buss_management/service/impl/UnMaterialDisServiceImpl.java @@ -0,0 +1,171 @@ +package org.nl.wms.pda.buss_management.service.impl; + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.exception.BadRequestException; +import org.nl.wms.pda.buss_management.service.UnMaterialDisService; +import org.nl.wms.pda.util.PdaResponse; +import org.nl.wms.sch_manage.service.ISchBasePointService; +import org.nl.wms.sch_manage.service.ISchBaseTaskService; +import org.nl.wms.sch_manage.service.dao.SchBasePoint; +import org.nl.wms.sch_manage.service.dao.mapper.SchBasePointMapper; +import org.nl.wms.sch_manage.service.util.tasks.ProductUnMaterialTask; +import org.nl.wms.sch_manage.service.util.tasks.UnMaterialDisTask; +import org.nl.wms.sch_manage.util.PointDisRuleUtil; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.List; +import java.util.stream.IntStream; + +/** + *

+ * PDA制成下料/下料配送 实现类 + *

+ * + * @author Liuxy + * @since 2026-08-19 + */ +@Service +@Slf4j +public class UnMaterialDisServiceImpl implements UnMaterialDisService { + + @Resource + private ISchBasePointService iSchBasePointService; + + @Resource + private SchBasePointMapper schBasePointMapper; + + @Resource + private PointDisRuleUtil pointDisRuleUtil; + + @Resource + private ISchBaseTaskService iSchBaseTaskService; + + @Override + @Transactional + public PdaResponse productSend(JSONObject whereJson) { + this.unMaterial(whereJson); + return PdaResponse.requestOk("下料下发成功!"); + } + + @Override + public PdaResponse sendRegion(JSONObject whereJson) { + this.unRegion(whereJson); + return PdaResponse.requestOk("区域送货下发成功!"); + } + + @Override + @Transactional + public PdaResponse sendPoint(JSONObject whereJson) { + this.unPoint(whereJson); + return PdaResponse.requestOk("单点送货下发成功!"); + } + + /** + * 制程下料: + * 逻辑:如果目的点位不为空则下发当前点位,为空则分配一个空点位 + * + * @param whereJson { + * point_code: 起点 + * material_code: 物料编码 + * pcsn: 批次 + * qty: 数量 + * unitName: 单位 + * region_code: 目的区域 + * end_point_code: 目的点位 + * } + */ + private void unMaterial(JSONObject whereJson) { + Assert.notEmpty(whereJson.getString("point_code"), "下料点位不能为空!"); + Assert.notEmpty(whereJson.getString("material_code"), "物料编码不能为空!"); + Assert.notEmpty(whereJson.getString("pcsn"), "批次不能为空!"); + Assert.notEmpty(whereJson.getString("qty"), "下料数量不能为空!"); + Assert.notEmpty(whereJson.getString("unitName"), "单位不能为空!"); + Assert.notEmpty(whereJson.getString("region_code"), "目的区域不能为空!"); + + SchBasePoint pointDao = iSchBasePointService.getById(whereJson.getString("end_point_code")); + if (ObjectUtil.isEmpty(pointDao)) { + // 调用找一个空位 + List empList = pointDisRuleUtil.disPutRegionRule(whereJson.getString("region_code"), whereJson.getString("material_code")); + if (ObjectUtil.isEmpty(empList)) { + throw new BadRequestException("当前区域没有空位或空的一排【" + whereJson.getString("region_code") + "】"); + } + pointDao = empList.get(0); + } + pointDao.setMaterial_id(whereJson.getString("material_code")); + pointDao.setMaterial_pcsn(whereJson.getString("pcsn")); + pointDao.setMaterial_qty(whereJson.getString("qty")); + pointDao.setUnit_name(whereJson.getString("unitName")); + iSchBaseTaskService.createBussTask(pointDao, whereJson.getString("point_code"), pointDao.getPoint_code(), + ProductUnMaterialTask.class.getSimpleName(), ""); + } + + /** + * 区域送货逻辑 + * 查询取货区域所有有货点位(根据出库顺序排序) + * + * @param whereJson { + * in_region_code:放料区域 + * region_code:取料区域 + * } + */ + private void unRegion(JSONObject whereJson) { + String in_region_code = whereJson.getString("in_region_code"); + String out_region_code = whereJson.getString("region_code"); + Assert.notEmpty(in_region_code, "放货区域不能为空!"); + Assert.notEmpty(out_region_code, "取货区域不能为空!"); + // 所有有货点位 + List outPointList = schBasePointMapper.getRegionAllOutPoint(out_region_code); + // 查询入库空位 + List inPointList = schBasePointMapper.getRegionAllInPoint(in_region_code); + if (ObjectUtil.isEmpty(outPointList)) { + throw new BadRequestException("取货区域无可用点位!"); + } + if (ObjectUtil.isEmpty(inPointList) || inPointList.size() < outPointList.size()) { + throw new BadRequestException("目标区域空位不足!"); + } + + IntStream.range(0, outPointList.size()) + .forEach(i -> { + SchBasePoint outPoint = outPointList.get(i); + SchBasePoint inPoint = inPointList.get(i); + iSchBaseTaskService.createBussTask(outPoint, outPoint.getPoint_code(), inPoint.getPoint_code(), + UnMaterialDisTask.class.getSimpleName(), ""); + }); + } + + /** + * 单点送货逻辑: + * 放料点位为空则分配此区域的点位 + * + * @param whereJson { + * point_code:取料点位 + * in_region_code:放料区域 + * in_point_code:放料点位(可以为空) + * } + */ + private void unPoint(JSONObject whereJson) { + String point_code = whereJson.getString("point_code"); + String in_region_code = whereJson.getString("in_region_code"); + Assert.notEmpty(point_code, "取料点位不能为空!"); + Assert.notEmpty(in_region_code, "放货不能为空!"); + + SchBasePoint pointDao = iSchBasePointService.getById(point_code); + String in_point_code = whereJson.getString("in_point_code"); + if (ObjectUtil.isEmpty(in_point_code)) { + // 调用找一个空位 + List empList = pointDisRuleUtil.disPutRegionRule(in_region_code, pointDao.getMaterial_id()); + if (ObjectUtil.isEmpty(empList)) { + throw new BadRequestException("当前区域没有空位或空的一排【" + in_region_code + "】"); + } + in_point_code = empList.get(0).getPoint_code(); + } + iSchBaseTaskService.createBussTask(pointDao, point_code, in_point_code, + UnMaterialDisTask.class.getSimpleName(), ""); + } + +} diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/util/PdaResponse.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/util/PdaResponse.java index a777871..2eabb4a 100644 --- a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/util/PdaResponse.java +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/util/PdaResponse.java @@ -20,6 +20,11 @@ public class PdaResponse { */ private String message; + /** + * 状态码 + */ + private int status; + /** * 返回数据 */ @@ -29,18 +34,20 @@ public class PdaResponse { * 不带数据反馈 * @return ErpResponse */ - public static PdaResponse requestOk() { + public static PdaResponse requestOk() { return PdaResponse.builder() .message("操作成功!") + .status(200) .build(); } /** * 带信息反馈 * @return ErpResponse */ - public static PdaResponse requestOk(String message) { + public static PdaResponse requestOk(String message) { return PdaResponse.builder() .message(message) + .status(200) .build(); } @@ -48,9 +55,10 @@ public class PdaResponse { * 带数据反馈 * @return ErpResponse */ - public static PdaResponse requestParamOk(T data) { + public static PdaResponse requestParamOk(T data) { return PdaResponse.builder() .message("操作成功!") + .status(200) .data(data) .build(); } diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/controller/SchBasePointController.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/controller/SchBasePointController.java index 5ebb876..1697fa2 100644 --- a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/controller/SchBasePointController.java +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/controller/SchBasePointController.java @@ -79,7 +79,7 @@ public class SchBasePointController { @Log("获取点位物料信息") @PostMapping("/getPointDtl") public ResponseEntity getPointDtl(@RequestBody JSONObject whereJson) { - return new ResponseEntity<>(schBasePointService.getPointDtl(whereJson),HttpStatus.OK); + return new ResponseEntity<>(schBasePointService.queryPointInfo(whereJson), HttpStatus.OK); } @Log("清载具") diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBasePointService.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBasePointService.java index 616b642..db98739 100644 --- a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBasePointService.java +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBasePointService.java @@ -69,28 +69,36 @@ public interface ISchBasePointService extends IService { */ void changeLock(JSONObject points); - /** - * - * @param whereJson { - * point_code:点位编码 - * storagevehicle_code:载具编码 - * } - * @return - */ - JSONObject getPointDtl(JSONObject whereJson); /** * 清载具 + * * @param dao 实体类 */ void cleanVehicle(SchBasePoint dao); /** * 清物料 + * * @param dao 实体类 */ void cleanMaterial(SchBasePoint dao); - List getByVehicleCode(String search); + /** + * 清点位 + * + * @param pointCode 点位编码 + */ + void cleanPoint(String pointCode); + + /** + * 根据点位编码获取点位物料信息 + * + * @param param { + * point_code: 点位编码 + * } + * @return JSONObject + */ + JSONObject queryPointInfo(JSONObject param); } diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBaseTaskService.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBaseTaskService.java index c8c2475..4dd24df 100644 --- a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBaseTaskService.java +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBaseTaskService.java @@ -2,7 +2,6 @@ package org.nl.wms.sch_manage.service; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import org.nl.common.domain.query.PageQuery; @@ -12,7 +11,6 @@ import org.nl.wms.sch_manage.service.dto.SchBaseTaskQuery; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.util.List; import java.util.Map; import java.util.Set; @@ -76,19 +74,28 @@ public interface ISchBaseTaskService extends IService { SchBaseTask getByCode(String taskCode); /** - * 业务创建任务(统一入口) - * @param pointDao 点位实体类(物料信息) - * @param startPoint 起点 - * @param endPoint 终点 - * @param configCode 任务配置编码 - * @param taskCode 外部系统任务号 + * 下发任务 + * + * @param task 任务实体类 */ - void createBussTask(SchBasePoint pointDao, String startPoint, String endPoint, String configCode,String taskCode); + void sendOneTask(SchBaseTask task); + + /** + * 业务创建任务(统一入口) + * + * @param pointDao 点位实体类(物料信息) + * @param startPoint 起点 + * @param endPoint 终点 + * @param configCode 任务配置编码 + * @param taskCode 外部系统任务号 + */ + String createBussTask(SchBasePoint pointDao, String startPoint, String endPoint, String configCode, String taskCode); /** * 导出 - * @param map map - * @param response response + * + * @param map map + * @param response response * @param product_area product_area * @throws IOException IOException */ @@ -96,7 +103,23 @@ public interface ISchBaseTaskService extends IService { /** * 任务回传mes + * * @param entity 任务实体类 */ void returnTaskMes(SchBaseTask entity); + + /** + * 接受MES回传任务 + * + * @param whereJson { + * pkgId: PKG_ID + * startPoint: 出库点位 + * materialCode: 物料料号 + * pcsn: 物料批次 + * qty: 物料数量 + * unitName: 计量单位 + * taskCode: LMS任务号 + * } + */ + void returnTaskMesToLms(JSONObject whereJson); } diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.java index bb4b216..9eb4223 100644 --- a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.java +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.java @@ -24,22 +24,6 @@ public interface SchBasePointMapper extends BaseMapper { */ void batchChangeUsed(List pointCodes, Boolean used); - /** - * 获得所有解锁异常点 - * - * @return List - */ - List getAllUnlockAbnormalPoints(); - - /** - * 行锁获取id的点位 - * - * @param id id - * @return SchBasePoint - */ - SchBasePoint selectByIdLock(String id); - - /** * 点位left join查询 * @@ -49,64 +33,15 @@ public interface SchBasePointMapper extends BaseMapper { IPage selectPageLeftJoin(IPage pages, SchBasePointQuery whereJson); /** - * 查询点位物料明细 + * 根据点位编码获取点位物料信息 * * @param whereJson { * point_code:点位编码 - * storagevehicle_code:载具编码 * } * @return List */ - List getPointDtl(@Param("param") JSONObject whereJson); + JSONObject getPointInfo(@Param("param") JSONObject whereJson); - List getCanUsePointByRegion(String regionCode); - - List getCanUsePointByCode(String point_code); - - /** - * 无人车卸货 - 查询无人车点位信息 - * - * @return PdaResponse - */ - List queryNotCarPoint(); - - /** - * 手持功能 - * 点位更新 - 根据载具/点位查询明细 - * - * @param whereJson { - * point_code: 点位编码 - * vehicle_code: 载具编码 - * } - * @return PdaResponse - */ - List pdaQueryPointDtl(@Param("param") JSONObject whereJson); - - List getNoTaskPointByRegionAndType(String region, String type, String pointStatus, String material_type); - - List getNoTaskPointByRegionAndTypeCp(String region, String type, String pointStatus); - - List getCRUsedDevice(); - - /** - * 手持:卸货库存查询 - 查询库存 - * - * @param whereJson { - * region_code: 区域编码 - * } - * @return List - */ - List getUnLoadIvt(@Param("param") JSONObject whereJson); - - /** - * 手持:卸货库存查询 - 查询库存 - * - * @param whereJson { - * region_code: 区域编码 - * } - * @return List - */ - List getUnLoadIvtWbc(@Param("param") JSONObject whereJson); /** * 根据区域编码、物料料号查询点位库存信息(有任务的不查询) @@ -152,4 +87,28 @@ public interface SchBasePointMapper extends BaseMapper { "HAVING MAX(point_status) = '1' AND MIN(point_status) = '1'" + "ORDER BY row_num LIMIT 1") String getEmpRowNum(@Param("region_code") String region_code); + + /** + * 根据区域编码查询所有有货点位并根据出库顺序排序 + * + * @param region_code 区域编码 + * @return List + */ + @Select("select * from sch_base_point" + + " where region_code = #{region_code} and is_used = '1' and point_status = '2'" + + " and is_lock = '0' order by out_order_seq ASC" + ) + List getRegionAllOutPoint(@Param("region_code") String region_code); + + /** + * 根据区域编码查询所有空位点位并根据入库顺序排序 + * + * @param region_code 区域编码 + * @return List + */ + @Select("select * from sch_base_point" + + " where region_code = #{region_code} and is_used = '1' and point_status = '1'" + + " and is_lock = '0' order by in_order_seq ASC" + ) + List getRegionAllInPoint(@Param("region_code") String region_code); } diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.xml b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.xml index 61759cb..3e0eb97 100644 --- a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.xml +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.xml @@ -12,19 +12,7 @@ - - + - SELECT point.*, - task.task_code, - task.point_code1, - task.point_code2, - task.car_no, mater.material_code, - mater.material_name, - late.pcsn, - late.qty, - late.produce_time, - late.quality_type, - supp.supp_code, - supp.supp_name, - late.bake_num, - bom.device_code, - bom.bom_code, - late.qty_unit_name + mater.material_spec, + mater.material_name FROM sch_base_point point - LEFT JOIN sch_base_task task ON point.ing_task_code = task.task_id - LEFT JOIN md_pb_groupplate late ON late.storagevehicle_code = point.vehicle_code - LEFT JOIN md_me_materialbase mater ON late.material_id = mater.material_id - LEFT JOIN md_cs_supplierbase supp ON late.supp_code = supp.supp_code - LEFT JOIN pdm_bom_callmaterial bom ON bom.bom_id = late.bom_id + LEFT JOIN md_me_materialbase mater ON point.material_id = mater.material_code 1 = 1 AND point.point_code = #{param.point_code} - - - AND - point.vehicle_code = #{param.storagevehicle_code} - - - - AND - (point.vehicle_code = #{param.search} or - point.point_code = #{param.search}) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java index 03ff752..3923467 100644 --- a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java @@ -196,12 +196,6 @@ public class SchBasePointServiceImpl extends ServiceImpl getByVehicleCode(String search) { - LambdaQueryWrapper lam = new QueryWrapper().lambda(); - lam.eq(SchBasePoint::getVehicle_code, search); - return list(lam); + public void cleanPoint(String pointCode) { + SchBasePoint point = this.getById(pointCode); + if (ObjectUtil.isEmpty(point)) { + throw new BadRequestException("点位【" + pointCode + "】不存在!"); + } + point.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode()); + point.setVehicle_code(""); + point.setMaterial_id(""); + point.setMaterial_pcsn(""); + point.setMaterial_qty(""); + point.setUnit_name(""); + this.updateById(point); + } + + @Override + public JSONObject queryPointInfo(JSONObject param) { + return this.baseMapper.getPointInfo(param); } } diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBaseTaskServiceImpl.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBaseTaskServiceImpl.java index 3ba9a96..31bbaa8 100644 --- a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBaseTaskServiceImpl.java +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBaseTaskServiceImpl.java @@ -169,7 +169,13 @@ public class SchBaseTaskServiceImpl extends ServiceImpl + * 制程叫料任务类 + *

+ * + * @author Liuxy + * @since 2026-08-14 + */ +@Component(value = "ProductCallMaterialTask") +@TaskType("ProductCallMaterialTask") +public class ProductCallMaterialTask extends AbstractTask { + + /** + * 任务服务类 + */ + @Autowired + private ISchBaseTaskService taskService; + + /** + * 点位服务 + */ + @Resource + private ISchBasePointService iSchBasePointService; + + @Override + public String create(JSONObject json) { + SchBaseTask task = new SchBaseTask(); + task.setTask_id(IdUtil.getStringId()); + task.setTask_code(CodeUtil.getNewCode("TASK_CODE")); + task.setTask_status(TaskStatus.CREATE.getCode()); + task.setConfig_code(ProductCallMaterialTask.class.getSimpleName()); + task.setPoint_code1(json.getString("point_code1")); + task.setPoint_code2(json.getString("point_code2")); + task.setVehicle_code(json.getString("vehicle_code")); + task.setMaterial_id(json.getString("material_id")); + task.setMaterial_qty(json.getBigDecimal("material_qty")); + task.setMaterial_pcsn(json.getString("material_pcsn")); + task.setUnit_name(json.getString("unit_name")); + task.setRequest_param(json.toString()); + task.setPriority(json.getString("Priority")); + task.setContact_task(json.getString("contact_task")); + task.setRemark(json.getString("remark")); + task.setCreate_id(SecurityUtils.getCurrentUserId()); + task.setCreate_name(SecurityUtils.getCurrentNickName()); + task.setCreate_time(DateUtil.now()); + taskService.save(task); + if (ObjectUtil.isNotEmpty(task.getPoint_code1())) { + // 更新起点 + iSchBasePointService.update( + new UpdateWrapper().lambda() + .eq(SchBasePoint::getPoint_code, task.getPoint_code1()) + .set(SchBasePoint::getIs_lock, IOSConstant.ONE) + ); + // 下发任务 + this.sendTaskOne(task.getTask_id()); + } + return task.getTask_id(); + } + + @Override + public AcsTaskDto sendAcsParam(String taskId) { + SchBaseTask taskDao = taskService.getById(taskId); + + // 组织下发给acs的数据 + AcsTaskDto acsTaskDto = new AcsTaskDto(); + acsTaskDto.setExt_task_id(taskDao.getTask_id()); + acsTaskDto.setTask_code(taskDao.getTask_code()); + acsTaskDto.setStart_device_code(taskDao.getPoint_code1()); + acsTaskDto.setNext_device_code(taskDao.getPoint_code2()); + acsTaskDto.setPriority(taskDao.getPriority()); + acsTaskDto.setVehicle_code(taskDao.getVehicle_code()); + + acsTaskDto.setVehicle_type(IOSConstant.ONE); + acsTaskDto.setTask_type(ACSTaskTypeEnum.AGV_TASK.getCode()); + + acsTaskDto.setPriority(IOSConstant.ONE); + acsTaskDto.setAgv_system_type(IOSConstant.TWO); + + return acsTaskDto; + } + + @Override + @Transactional + 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("执行中"); + taskObj.setUpdate_time(DateUtil.now()); + taskService.updateById(taskObj); + } + if (status.equals(TaskStatus.FINISHED)) { + this.finishTask(taskObj); + } + if (status.equals(TaskStatus.CANCELED)) { + this.cancelTask(taskObj); + } + } + + @Override + @Transactional + public void forceFinish(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + this.finishTask(taskObj); + } + + @Override + @Transactional + public void cancel(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + if (Integer.parseInt(taskObj.getTask_status()) > Integer.parseInt(TaskStatus.EXECUTING.getCode())) { + throw new BadRequestException("只能取消生成中的任务!"); + } + this.cancelTask(taskObj); + } + + @Transactional + public void finishTask(SchBaseTask taskObj) { + // 更新起点 + iSchBasePointService.update( + new UpdateWrapper().lambda() + .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1()) + .set(SchBasePoint::getVehicle_code, "") + .set(SchBasePoint::getMaterial_id, "") + .set(SchBasePoint::getMaterial_qty, "") + .set(SchBasePoint::getMaterial_pcsn, "") + .set(SchBasePoint::getUnit_name, "") + .set(SchBasePoint::getIs_lock, IOSConstant.ZERO) + .set(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode()) + ); + // 更新终点 + iSchBasePointService.update( + new UpdateWrapper().lambda() + .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code2()) + .set(SchBasePoint::getVehicle_code, taskObj.getVehicle_code()) + .set(SchBasePoint::getMaterial_id, taskObj.getMaterial_id()) + .set(SchBasePoint::getMaterial_qty, taskObj.getMaterial_qty()) + .set(SchBasePoint::getMaterial_pcsn, taskObj.getMaterial_pcsn()) + .set(SchBasePoint::getUnit_name, taskObj.getUnit_name()) + .set(SchBasePoint::getIs_lock, IOSConstant.ZERO) + .set(SchBasePoint::getPoint_status, PointStatusEnum.FULL_POINT.getCode()) + ); + // 更新任务 + taskObj.setRemark("已完成"); + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskObj.setUpdate_time(DateUtil.now()); + taskService.updateById(taskObj); + // 回传mes + taskService.returnTaskMes(taskObj); + } + + @Transactional + public void cancelTask(SchBaseTask taskObj) { + // 更新任务 + taskObj.setRemark("已取消"); + taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + taskObj.setUpdate_time(DateUtil.now()); + taskService.updateById(taskObj); + // 更新起点 + iSchBasePointService.update( + new UpdateWrapper().lambda() + .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1()) + .set(SchBasePoint::getIs_lock, IOSConstant.ZERO) + ); + } + + @Override + public void taskOperate(String task_id, JSONObject whereJson) { + SchBaseTask taskDao = taskService.getById(task_id); + taskDao.setPoint_code1(whereJson.getString("startPoint")); + taskDao.setVehicle_code(whereJson.getString("pkgId")); + taskDao.setMaterial_id(whereJson.getString("materialCode")); + taskDao.setMaterial_pcsn(whereJson.getString("pcsn")); + taskDao.setMaterial_qty(whereJson.getBigDecimal("qty")); + taskDao.setUnit_name(whereJson.getString("unitName")); + taskService.updateById(taskDao); + this.sendTaskOne(taskDao.getTask_id()); + } +} diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/ProductUnMaterialTask.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/ProductUnMaterialTask.java new file mode 100644 index 0000000..7b10949 --- /dev/null +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/ProductUnMaterialTask.java @@ -0,0 +1,204 @@ +package org.nl.wms.sch_manage.service.util.tasks; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.CodeUtil; +import org.nl.common.utils.SecurityUtils; +import org.nl.config.IdUtil; +import org.nl.wms.sch_manage.enums.PointStatusEnum; +import org.nl.wms.sch_manage.enums.TaskStatus; +import org.nl.wms.sch_manage.service.ISchBasePointService; +import org.nl.wms.sch_manage.service.ISchBaseTaskService; +import org.nl.wms.sch_manage.service.dao.SchBasePoint; +import org.nl.wms.sch_manage.service.dao.SchBaseTask; +import org.nl.wms.sch_manage.service.util.ACSTaskTypeEnum; +import org.nl.wms.sch_manage.service.util.AbstractTask; +import org.nl.wms.sch_manage.service.util.AcsTaskDto; +import org.nl.wms.sch_manage.service.util.TaskType; +import org.nl.wms.warehouse_management.enums.IOSConstant; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; + +/** + *

+ * 制程下料任务类 + *

+ * + * @author Liuxy + * @since 2026-08-14 + */ +@Component(value = "ProductUnMaterialTask") +@TaskType("ProductUnMaterialTask") +public class ProductUnMaterialTask extends AbstractTask { + + /** + * 任务服务类 + */ + @Autowired + private ISchBaseTaskService taskService; + + /** + * 点位服务 + */ + @Resource + private ISchBasePointService iSchBasePointService; + + @Override + public String create(JSONObject json) { + SchBaseTask task = new SchBaseTask(); + task.setTask_id(IdUtil.getStringId()); + task.setTask_code(CodeUtil.getNewCode("TASK_CODE")); + task.setTask_status(TaskStatus.CREATE.getCode()); + task.setConfig_code(ProductUnMaterialTask.class.getSimpleName()); + task.setPoint_code1(json.getString("point_code1")); + task.setPoint_code2(json.getString("point_code2")); + task.setVehicle_code(json.getString("vehicle_code")); + task.setMaterial_id(json.getString("material_id")); + task.setMaterial_qty(json.getBigDecimal("material_qty")); + task.setMaterial_pcsn(json.getString("material_pcsn")); + task.setUnit_name(json.getString("unit_name")); + task.setRequest_param(json.toString()); + task.setPriority(json.getString("Priority")); + task.setContact_task(json.getString("contact_task")); + task.setRemark(json.getString("remark")); + task.setCreate_id(SecurityUtils.getCurrentUserId()); + task.setCreate_name(SecurityUtils.getCurrentNickName()); + task.setCreate_time(DateUtil.now()); + taskService.save(task); + + this.sendTaskOne(task.getTask_id()); + return task.getTask_id(); + } + + @Override + public AcsTaskDto sendAcsParam(String taskId) { + SchBaseTask taskDao = taskService.getById(taskId); + + // 组织下发给acs的数据 + AcsTaskDto acsTaskDto = new AcsTaskDto(); + acsTaskDto.setExt_task_id(taskDao.getTask_id()); + acsTaskDto.setTask_code(taskDao.getTask_code()); + acsTaskDto.setStart_device_code(taskDao.getPoint_code1()); + acsTaskDto.setNext_device_code(taskDao.getPoint_code2()); + acsTaskDto.setPriority(taskDao.getPriority()); + acsTaskDto.setVehicle_code(taskDao.getVehicle_code()); + + acsTaskDto.setVehicle_type(IOSConstant.ONE); + acsTaskDto.setTask_type(ACSTaskTypeEnum.AGV_TASK.getCode()); + + acsTaskDto.setPriority(IOSConstant.ONE); + acsTaskDto.setAgv_system_type(IOSConstant.TWO); + + return acsTaskDto; + } + + @Override + @Transactional + 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("执行中"); + taskObj.setUpdate_time(DateUtil.now()); + taskService.updateById(taskObj); + } + if (status.equals(TaskStatus.FINISHED)) { + this.finishTask(taskObj); + } + if (status.equals(TaskStatus.CANCELED)) { + this.cancelTask(taskObj); + } + } + + @Override + @Transactional + public void forceFinish(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + this.finishTask(taskObj); + } + + @Override + @Transactional + public void cancel(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + if (Integer.parseInt(taskObj.getTask_status()) > Integer.parseInt(TaskStatus.EXECUTING.getCode())) { + throw new BadRequestException("只能取消生成中的任务!"); + } + this.cancelTask(taskObj); + } + + @Transactional + public void finishTask(SchBaseTask taskObj) { + // 更新起点 + iSchBasePointService.update( + new UpdateWrapper().lambda() + .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1()) + .set(SchBasePoint::getVehicle_code, "") + .set(SchBasePoint::getMaterial_id, "") + .set(SchBasePoint::getMaterial_qty, "") + .set(SchBasePoint::getMaterial_pcsn, "") + .set(SchBasePoint::getUnit_name, "") + .set(SchBasePoint::getIs_lock, IOSConstant.ZERO) + .set(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode()) + ); + // 更新终点 + iSchBasePointService.update( + new UpdateWrapper().lambda() + .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code2()) + .set(SchBasePoint::getVehicle_code, taskObj.getVehicle_code()) + .set(SchBasePoint::getMaterial_id, taskObj.getMaterial_id()) + .set(SchBasePoint::getMaterial_qty, taskObj.getMaterial_qty()) + .set(SchBasePoint::getMaterial_pcsn, taskObj.getMaterial_pcsn()) + .set(SchBasePoint::getUnit_name, taskObj.getUnit_name()) + .set(SchBasePoint::getIs_lock, IOSConstant.ZERO) + .set(SchBasePoint::getPoint_status, PointStatusEnum.FULL_POINT.getCode()) + ); + // 更新任务 + taskObj.setRemark("已完成"); + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskObj.setUpdate_time(DateUtil.now()); + taskService.updateById(taskObj); + // 回传mes + taskService.returnTaskMes(taskObj); + } + + @Transactional + public void cancelTask(SchBaseTask taskObj) { + // 更新任务 + taskObj.setRemark("已取消"); + taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + taskObj.setUpdate_time(DateUtil.now()); + taskService.updateById(taskObj); + // 更新起点 + iSchBasePointService.update( + new UpdateWrapper().lambda() + .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1()) + .set(SchBasePoint::getIs_lock, IOSConstant.ZERO) + ); + } + + @Override + public void taskOperate(String task_id, JSONObject whereJson) { + } +} diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/UnMaterialDisTask.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/UnMaterialDisTask.java new file mode 100644 index 0000000..9e67a5b --- /dev/null +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/UnMaterialDisTask.java @@ -0,0 +1,209 @@ +package org.nl.wms.sch_manage.service.util.tasks; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.CodeUtil; +import org.nl.common.utils.SecurityUtils; +import org.nl.config.IdUtil; +import org.nl.wms.sch_manage.enums.PointStatusEnum; +import org.nl.wms.sch_manage.enums.TaskStatus; +import org.nl.wms.sch_manage.service.ISchBasePointService; +import org.nl.wms.sch_manage.service.ISchBaseTaskService; +import org.nl.wms.sch_manage.service.dao.SchBasePoint; +import org.nl.wms.sch_manage.service.dao.SchBaseTask; +import org.nl.wms.sch_manage.service.util.ACSTaskTypeEnum; +import org.nl.wms.sch_manage.service.util.AbstractTask; +import org.nl.wms.sch_manage.service.util.AcsTaskDto; +import org.nl.wms.sch_manage.service.util.TaskType; +import org.nl.wms.warehouse_management.enums.IOSConstant; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; + +/** + *

+ * 下料配送任务类 + *

+ * + * @author Liuxy + * @since 2026-08-14 + */ +@Component(value = "UnMaterialDisTask") +@TaskType("UnMaterialDisTask") +public class UnMaterialDisTask extends AbstractTask { + + /** + * 任务服务类 + */ + @Autowired + private ISchBaseTaskService taskService; + + /** + * 点位服务 + */ + @Resource + private ISchBasePointService iSchBasePointService; + + @Override + public String create(JSONObject json) { + SchBaseTask task = new SchBaseTask(); + String materialId = json.getString("material_id"); + task.setTask_id(IdUtil.getStringId()); + task.setTask_code(CodeUtil.getNewCode("TASK_CODE")); + task.setTask_status(TaskStatus.CREATE.getCode()); + task.setConfig_code(UnMaterialDisTask.class.getSimpleName()); + task.setPoint_code1(json.getString("point_code1")); + task.setPoint_code2(json.getString("point_code2")); + task.setVehicle_code(json.getString("vehicle_code")); + task.setMaterial_id(ObjectUtil.isEmpty(materialId) ? "0" : materialId); + task.setMaterial_qty(json.getBigDecimal("material_qty")); + task.setMaterial_pcsn(json.getString("material_pcsn")); + task.setUnit_name(json.getString("unit_name")); + task.setRequest_param(json.toString()); + task.setPriority(json.getString("Priority")); + task.setContact_task(json.getString("contact_task")); + task.setRemark(json.getString("remark")); + task.setCreate_id(SecurityUtils.getCurrentUserId()); + task.setCreate_name(SecurityUtils.getCurrentNickName()); + task.setCreate_time(DateUtil.now()); + taskService.save(task); + // 更新起点 + iSchBasePointService.update( + new UpdateWrapper().lambda() + .eq(SchBasePoint::getPoint_code, task.getPoint_code1()) + .set(SchBasePoint::getIs_lock, IOSConstant.ONE) + ); + + this.sendTaskOne(task.getTask_id()); + return task.getTask_id(); + } + + @Override + public AcsTaskDto sendAcsParam(String taskId) { + SchBaseTask taskDao = taskService.getById(taskId); + + // 组织下发给acs的数据 + AcsTaskDto acsTaskDto = new AcsTaskDto(); + acsTaskDto.setExt_task_id(taskDao.getTask_id()); + acsTaskDto.setTask_code(taskDao.getTask_code()); + acsTaskDto.setStart_device_code(taskDao.getPoint_code1()); + acsTaskDto.setNext_device_code(taskDao.getPoint_code2()); + acsTaskDto.setPriority(taskDao.getPriority()); + acsTaskDto.setVehicle_code(taskDao.getVehicle_code()); + + acsTaskDto.setVehicle_type(IOSConstant.ONE); + acsTaskDto.setTask_type(ACSTaskTypeEnum.AGV_TASK.getCode()); + + acsTaskDto.setPriority(IOSConstant.ONE); + acsTaskDto.setAgv_system_type(IOSConstant.TWO); + + return acsTaskDto; + } + + @Override + @Transactional + 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("执行中"); + taskObj.setUpdate_time(DateUtil.now()); + taskService.updateById(taskObj); + } + if (status.equals(TaskStatus.FINISHED)) { + this.finishTask(taskObj); + } + if (status.equals(TaskStatus.CANCELED)) { + this.cancelTask(taskObj); + } + } + + @Override + @Transactional + public void forceFinish(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + this.finishTask(taskObj); + } + + @Override + @Transactional + public void cancel(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + if (Integer.parseInt(taskObj.getTask_status()) > Integer.parseInt(TaskStatus.EXECUTING.getCode())) { + throw new BadRequestException("只能取消生成中的任务!"); + } + this.cancelTask(taskObj); + } + + @Transactional + public void finishTask(SchBaseTask taskObj) { + // 更新起点 + iSchBasePointService.update( + new UpdateWrapper().lambda() + .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1()) + .set(SchBasePoint::getVehicle_code, "") + .set(SchBasePoint::getMaterial_id, "") + .set(SchBasePoint::getMaterial_qty, "") + .set(SchBasePoint::getMaterial_pcsn, "") + .set(SchBasePoint::getUnit_name, "") + .set(SchBasePoint::getIs_lock, IOSConstant.ZERO) + .set(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode()) + ); + // 更新终点 + iSchBasePointService.update( + new UpdateWrapper().lambda() + .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code2()) + .set(SchBasePoint::getVehicle_code, taskObj.getVehicle_code()) + .set(SchBasePoint::getMaterial_id, taskObj.getMaterial_id()) + .set(SchBasePoint::getMaterial_qty, taskObj.getMaterial_qty()) + .set(SchBasePoint::getMaterial_pcsn, taskObj.getMaterial_pcsn()) + .set(SchBasePoint::getUnit_name, taskObj.getUnit_name()) + .set(SchBasePoint::getIs_lock, IOSConstant.ZERO) + .set(SchBasePoint::getPoint_status, PointStatusEnum.FULL_POINT.getCode()) + ); + // 更新任务 + taskObj.setRemark("已完成"); + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskObj.setUpdate_time(DateUtil.now()); + taskService.updateById(taskObj); + } + + @Transactional + public void cancelTask(SchBaseTask taskObj) { + // 更新任务 + taskObj.setRemark("已取消"); + taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + taskObj.setUpdate_time(DateUtil.now()); + taskService.updateById(taskObj); + // 更新起点 + iSchBasePointService.update( + new UpdateWrapper().lambda() + .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1()) + .set(SchBasePoint::getIs_lock, IOSConstant.ZERO) + ); + } + + @Override + public void taskOperate(String task_id, JSONObject whereJson) { + } +} diff --git a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/util/PointDisRuleUtil.java b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/util/PointDisRuleUtil.java index 4c19b59..17c1b9c 100644 --- a/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/util/PointDisRuleUtil.java +++ b/LMS/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/util/PointDisRuleUtil.java @@ -180,6 +180,7 @@ public class PointDisRuleUtil { new QueryWrapper().lambda() .eq(SchBasePoint::getRow_num, schBasePointMapper.getEmpRowNum(regionCode)) .eq(SchBasePoint::getIs_used, IOSConstant.ONE) + .eq(SchBasePoint::getRegion_code, regionCode) .orderByAsc(SchBasePoint::getIn_order_seq) ); } diff --git a/LMS/nladmin-ui/src/views/wms/basedata/material/index.vue b/LMS/nladmin-ui/src/views/wms/basedata/material/index.vue index c301a4a..e8bc54d 100644 --- a/LMS/nladmin-ui/src/views/wms/basedata/material/index.vue +++ b/LMS/nladmin-ui/src/views/wms/basedata/material/index.vue @@ -31,17 +31,6 @@ - - 导出 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + @@ -147,75 +87,9 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +