diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/NoticeTypeEnum.java b/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/NoticeTypeEnum.java new file mode 100644 index 0000000..5ad1221 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/NoticeTypeEnum.java @@ -0,0 +1,21 @@ +package org.nl.common.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author: lyd + * @Description: 通知类型枚举 + * @Date: 2023/6/15 + */ +@Getter +@AllArgsConstructor +public enum NoticeTypeEnum { + + EXCEPTION("1", "异常"), + WARN("2", "警告"), + NOTIFICATION("3", "通知"); + + private final String code; + private final String name; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/common/exception/BadRequestException.java b/nladmin-system/nlsso-server/src/main/java/org/nl/common/exception/BadRequestException.java index 627bdef..371b175 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/common/exception/BadRequestException.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/common/exception/BadRequestException.java @@ -17,8 +17,15 @@ package org.nl.common.exception; import lombok.Getter; import lombok.extern.slf4j.Slf4j; -import org.nl.common.logging.annotation.Log; +import org.nl.common.enums.NoticeTypeEnum; +import org.nl.config.SpringContextHolder; +import org.nl.system.service.notice.ISysNoticeService; +import org.nl.system.service.notice.impl.SysNoticeServiceImpl; +import org.nl.wms.pda.ios_manage.service.impl.PdaIosInServiceImpl; import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; import static org.springframework.http.HttpStatus.BAD_REQUEST; @@ -30,9 +37,7 @@ import static org.springframework.http.HttpStatus.BAD_REQUEST; @Slf4j @Getter public class BadRequestException extends RuntimeException{ - private Integer status = BAD_REQUEST.value(); - public BadRequestException(String msg){ super(msg); log.error("异常信息:{}", msg); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/common/exception/handler/GlobalExceptionHandler.java b/nladmin-system/nlsso-server/src/main/java/org/nl/common/exception/handler/GlobalExceptionHandler.java index 6009929..95c75ce 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/common/exception/handler/GlobalExceptionHandler.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/common/exception/handler/GlobalExceptionHandler.java @@ -17,10 +17,14 @@ package org.nl.common.exception.handler; import cn.dev33.satoken.exception.NotLoginException; import lombok.extern.slf4j.Slf4j; +import org.nl.common.enums.NoticeTypeEnum; import org.nl.common.exception.BadRequestException; import org.nl.common.exception.EntityExistException; import org.nl.common.exception.EntityNotFoundException; import org.nl.common.utils.ThrowableUtil; +import org.nl.config.SpringContextHolder; +import org.nl.system.service.notice.ISysNoticeService; +import org.nl.system.service.notice.impl.SysNoticeServiceImpl; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.MethodArgumentNotValidException; @@ -69,6 +73,7 @@ public class GlobalExceptionHandler { public ResponseEntity badRequestException(BadRequestException e) { // 打印堆栈信息 log.error(ThrowableUtil.getStackTrace(e)); + SpringContextHolder.getBean(SysNoticeServiceImpl.class).createNotice( e.getMessage(), "异常信息", NoticeTypeEnum.EXCEPTION.getCode()); return buildResponseEntity(ApiError.error(e.getStatus(), e.getMessage())); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/MapOf.java b/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/MapOf.java index 7107bc7..e9707c7 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/MapOf.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/MapOf.java @@ -3,6 +3,8 @@ package org.nl.common.utils; import java.io.Serializable; import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Map; /* * @author ZZQ @@ -10,10 +12,24 @@ import java.util.HashMap; */ public class MapOf implements Serializable { - public static HashMap of(K... key) { + public static HashMap of(K... key){ HashMap map = new HashMap<>(); - for (int i = 0; i < (key.length & ~1); i = i + 2) { - map.put(key[i], key[i + 1]); + for (int i = 0; i < (key.length & ~1); i=i+2) { + map.put(key[i],key[i+1]); + } + return map; + } + public static LinkedHashMap linkOf(K... key){ + LinkedHashMap map = new LinkedHashMap(); + for (int i = 0; i < (key.length & ~1); i=i+2) { + map.put(key[i],key[i+1]); + } + return map; + } + public static HashMap push(Map...item){ + HashMap map = new HashMap<>(); + for (int i = 0; i < (item.length & ~1); i=i+1) { + map.putAll(item[i]); } return map; } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/notice/ISysNoticeService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/notice/ISysNoticeService.java index 50ce767..c7f7930 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/notice/ISysNoticeService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/notice/ISysNoticeService.java @@ -81,4 +81,6 @@ public interface ISysNoticeService extends IService { * @param type: 类型 */ void createNotice(String msg, String title, String type); + + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/notice/impl/SysNoticeServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/notice/impl/SysNoticeServiceImpl.java index 0f58aa0..dc7520d 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/notice/impl/SysNoticeServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/notice/impl/SysNoticeServiceImpl.java @@ -10,31 +10,25 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.common.domain.query.PageQuery; import org.nl.common.enums.NoticeEnum; import org.nl.common.exception.BadRequestException; -import org.nl.common.mnt.websocket.MsgType; -import org.nl.common.mnt.websocket.SocketMsg; import org.nl.common.mnt.websocket.WebSocketServer; -import org.nl.common.utils.SecurityUtils; import org.nl.config.language.LangProcess; import org.nl.system.service.dict.dao.Dict; import org.nl.system.service.dict.dao.mapper.SysDictMapper; import org.nl.system.service.notice.ISysNoticeService; -import org.nl.system.service.notice.dao.mapper.SysNoticeMapper; import org.nl.system.service.notice.dao.SysNotice; +import org.nl.system.service.notice.dao.mapper.SysNoticeMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.io.IOException; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.function.Consumer; /** * @author lyd @@ -65,7 +59,7 @@ public class SysNoticeServiceImpl extends ServiceImpl lam = new LambdaQueryWrapper<>(); - lam.like(ObjectUtil.isNotEmpty(notice_title), SysNotice::getNotice_title, notice_title) + lam.like(ObjectUtil.isNotEmpty(notice_title), SysNotice::getNotice_content, notice_title) .eq(ObjectUtil.isNotEmpty(notice_type), SysNotice::getNotice_type, notice_type) .eq(ObjectUtil.isNotEmpty(have_read), SysNotice::getHave_read, have_read) .eq(ObjectUtil.isNotEmpty(deal_status), SysNotice::getDeal_status, deal_status) @@ -163,8 +157,11 @@ public class SysNoticeServiceImpl extends ServiceImpl sysNotices = sysNoticeMapper.selectList(new LambdaQueryWrapper() - .eq(SysNotice::getNotice_title, title) + .eq(SysNotice::getNotice_content, msg) .eq(SysNotice::getHave_read, NoticeEnum.HAVE_READ_OFF.getValue())); + if (ObjectUtil.isNotEmpty(sysNotices)) { + return; + } SysNotice noticeDto = SysNotice.builder() .notice_id(IdUtil.getSnowflake(1, 1).nextIdStr()) .notice_type(type) @@ -174,19 +171,15 @@ public class SysNoticeServiceImpl extends ServiceImpl TableColumn(String tableName){ + Map map = new HashMap<>(); + try { + List> mapList = columnMapper.listTableColumn(tableName); + map = mapList.stream().collect(Collectors.toMap((Function, Object>) stringStringMap -> stringStringMap.get("COLUMN_NAME"), (Function, Object>) stringStringMap -> stringStringMap.get("COLUMN_COMMENT"))); + }catch (Exception ex){ + log.error(tableName+"获取表结构失败",ex); + } + return map; + }; + public Map TableColumn2(String tableName){ + Map map = new HashMap<>(); + try { + List> mapList = columnMapper.listTableColumn(tableName); + map = mapList.stream().collect(Collectors.toMap((Function, Object>) stringStringMap -> stringStringMap.get("COLUMN_COMMENT"), (Function, Object>) stringStringMap -> stringStringMap.get("COLUMN_NAME"))); + }catch (Exception ex){ + log.error(tableName+"获取表结构失败",ex); + } + return map; + }; + + @SneakyThrows + public void exportFile(String tableName,List data, HttpServletResponse response,List passParam, Map customizMap) { + if (CollectionUtils.isEmpty(data)){ + throw new BindException("导出失败,没有导出数据"+data.size()); + } + List> excel_lst = new ArrayList<>(); + Map t = data.get(0); + Map map = new LinkedHashMap<>(); + if (!StringUtils.isEmpty(tableName)){ + map = this.TableColumn(tableName); + if (!CollectionUtils.isEmpty(passParam)){ + for (Object s : passParam) { + map.remove(s); + } + } + } + map.putAll(customizMap); + if (CollectionUtils.isEmpty(map)){ + throw new BindException("导出失败,表结构信息失败"+tableName); + } + for (Map item : data) { + Map excelMap = new LinkedHashMap<>(); + for (Map.Entry entry : map.entrySet()) { + excelMap.put(entry.getValue(),item.get(entry.getKey())); + } + excel_lst.add(excelMap); + } + if (CollectionUtils.isEmpty(excel_lst)){ + throw new BindException("导出失败,没有获取到导出参数"+data.size()); + } + FileUtil.downloadExcel(excel_lst,response); + }; + + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/tableData/dao/mapper/ColumnMapper.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/tableData/dao/mapper/ColumnMapper.java new file mode 100644 index 0000000..96b5348 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/tableData/dao/mapper/ColumnMapper.java @@ -0,0 +1,22 @@ +package org.nl.system.service.tableData.dao.mapper; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 角色表 Mapper 接口 + *

+ * + * @author generator + * @since 2022-12-15 + */ +@Mapper +public interface ColumnMapper { + + @Select("select column_name,column_comment from information_schema.COLUMNS where TABLE_SCHEMA = (select database()) and TABLE_NAME = #{table}") + List> listTableColumn(String table); +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/MaterialbaseController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/MaterialbaseController.java index 83f90c0..6072e1f 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/MaterialbaseController.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/MaterialbaseController.java @@ -4,8 +4,10 @@ package org.nl.wms.basedata_manage.controller; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.nl.common.base.TableDataInfo; import org.nl.common.domain.query.PageQuery; +import org.nl.common.exception.BadRequestException; import org.nl.common.logging.annotation.Log; import org.nl.common.utils.RedissonUtils; import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService; @@ -45,6 +47,9 @@ public class MaterialbaseController { return new ResponseEntity<>(TableDataInfo.build(iMdMeMaterialbaseService.queryAll(whereJson, page)), HttpStatus.OK); } + + + @PostMapping @Log("新增物料") public ResponseEntity create(@Validated @RequestBody MdMeMaterialbase dto) { @@ -65,9 +70,29 @@ public class MaterialbaseController { RedissonUtils.lock(() -> { iMdMeMaterialbaseService.excelImport1(file, request, response); }, "分区信息导入", null); - return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK); + return new ResponseEntity<>(TableDataInfo.build(), HttpStatus.OK); } + @PostMapping("/getStruct") + public ResponseEntity getStruct(@RequestParam Map whereJson) { + return new ResponseEntity<>(iMdMeMaterialbaseService.getStruct(whereJson), HttpStatus.OK); + } + @PostMapping("/getAllStruct") + public ResponseEntity getAllStruct(@RequestParam Map whereJson) { + return new ResponseEntity<>(iMdMeMaterialbaseService.getAllStruct(whereJson), HttpStatus.OK); + } + + @PostMapping("/getUser") + public ResponseEntity getUser(@RequestParam Map whereJson) { + return new ResponseEntity<>(iMdMeMaterialbaseService.getUser(whereJson), HttpStatus.OK); + } + @PostMapping("/getUserBindStruct") + public ResponseEntity getUserBindStruct(@RequestParam Map whereJson) { + return new ResponseEntity<>(iMdMeMaterialbaseService.getUserBindStruct(whereJson), HttpStatus.OK); + } + + + @PutMapping @Log("修改物料") public ResponseEntity update(@Validated @RequestBody MdMeMaterialbase dto) { @@ -75,6 +100,17 @@ public class MaterialbaseController { return new ResponseEntity<>(HttpStatus.NO_CONTENT); } + @PostMapping("/updateUser") + @Log("修改用户绑定货架信息") + public ResponseEntity updateUser(@RequestBody JSONObject whereJson) { + if (StringUtils.isBlank(whereJson.getString("user_id"))) { + throw new BadRequestException("用户信息不能为空!"); + } + iMdMeMaterialbaseService.updateUser(whereJson); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @DeleteMapping @Log("删除物料") public ResponseEntity delete(@RequestBody Set ids) { diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/StructattrController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/StructattrController.java index bb9ae51..584588c 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/StructattrController.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/StructattrController.java @@ -2,14 +2,20 @@ package org.nl.wms.basedata_manage.controller; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.common.base.TableDataInfo; import org.nl.common.domain.query.PageQuery; import org.nl.common.logging.annotation.Log; +import org.nl.common.utils.MapOf; +import org.nl.system.service.tableData.ColumnInfoService; +import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleextService; import org.nl.wms.basedata_manage.service.IStructattrService; import org.nl.wms.basedata_manage.service.dao.Structattr; import org.nl.wms.basedata_manage.service.dto.StructattrQuery; +import org.nl.wms.basedata_manage.service.impl.MdPbStoragevehicleextServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -17,6 +23,8 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Map; /** @@ -32,10 +40,15 @@ import java.util.Map; @RequestMapping("/api/structattr") @Slf4j public class StructattrController { - + @Autowired + private ColumnInfoService columnInfoService; @Resource private IStructattrService structattrService; + @Resource + private IMdPbStoragevehicleextService iMdPbStoragevehicleextService; + + @GetMapping @Log("查询仓位") public ResponseEntity query(StructattrQuery whereJson, PageQuery page) { @@ -69,5 +82,22 @@ public class StructattrController { structattrService.changeActive(json); return new ResponseEntity<>(HttpStatus.NO_CONTENT); } + @PostMapping("/exportFile") + public void exportFile(@RequestBody StructattrQuery query, HttpServletResponse response) { + PageQuery page = new PageQuery(); + page.setPage(0); + page.setSize(99999); + Map whereJson = (Map) JSONObject.toJSON(query); + IPage result =iMdPbStoragevehicleextService.queryAll(whereJson, page); + List maps = result.getRecords().stream().map(item -> (Map)item).collect(java.util.stream.Collectors.toList()); + columnInfoService.exportFile("", maps, response, + null, + MapOf.linkOf("struct_code", "仓位编码", "struct_name", "仓位名称", "stor_name", "仓库", "sect_name", "库区", "placement_type", "货架区域", + "material_code", "物料编码", "material_name", "物料名称", "pcsn", "批次号", + "storagevehicle_code", "载具号", "qty", "可用数", "frozen_qty", "冻结数", + "lock_type", "锁定类型", "qty_unit_name", "计量单位", "create_time", "入库时间","remark", "备注")); + } + + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdMeMaterialbaseService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdMeMaterialbaseService.java index ee6894f..ed0a181 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdMeMaterialbaseService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdMeMaterialbaseService.java @@ -4,11 +4,15 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import org.nl.common.domain.query.PageQuery; +import org.nl.system.service.user.dao.SysUser; +import org.nl.wms.basedata_manage.service.dao.BsrealStorattr; import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase; +import org.nl.wms.basedata_manage.service.dao.Structattr; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Map; import java.util.Set; @@ -50,6 +54,15 @@ public interface IMdMeMaterialbaseService extends IService { */ void excelImport1(MultipartFile file, HttpServletRequest request, HttpServletResponse response); + List getStruct(Map whereJson); + List getAllStruct(Map whereJson); + + + + List getUser(Map whereJson); + String getUserBindStruct(Map whereJson); + + /** * 修改物料 @@ -63,6 +76,9 @@ public interface IMdMeMaterialbaseService extends IService { */ void delete(Set ids); + + + /** * 物料同步 * @param whereJson { @@ -71,6 +87,18 @@ public interface IMdMeMaterialbaseService extends IService { */ void materialSync(JSONObject whereJson); + + /** + * 用户绑定货架信息 + * @param whereJson { + * -- + * } + */ + void updateUser(JSONObject whereJson); + + + + /** * 根据编码获取物料 * @param material_code 物料编码 diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/MdMeMaterialbase.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/MdMeMaterialbase.java index 59a59a5..9f91963 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/MdMeMaterialbase.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/MdMeMaterialbase.java @@ -180,9 +180,9 @@ public class MdMeMaterialbase implements Serializable { private String ext_id; /** - * 用户id + * 用户绑定货架 */ - private String user_id; + private String placement_type; /** * 外部标识 @@ -197,4 +197,11 @@ public class MdMeMaterialbase implements Serializable { */ @TableField(exist = false) private String pcsn=""; + + /** + * 用户绑定库位 + */ + @TableField(exist = false) + private String struct_id=""; + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.xml index 07aa89a..cb992c8 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.xml +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.xml @@ -41,12 +41,12 @@ AND - attr.struct_code LIKE #{param.struct_code} + attr.struct_code LIKE CONCAT('%', #{param.struct_code}, '%') AND - material.material_code LIKE #{param.material_code} + material.material_code LIKE CONCAT('%', #{param.material_code}, '%') @@ -76,6 +76,7 @@ attr.struct_name, attr.stor_name, attr.sect_name, + attr.placement_type, attr.lock_type, mater.material_code, mater.material_name @@ -95,7 +96,10 @@ AND attr.sect_id = #{param.sect_id} - + + AND + attr.placement_type = #{param.placement_type} + AND (attr.struct_code LIKE CONCAT('%', #{param.struct_code}, '%') or @@ -161,6 +165,7 @@ attr.stor_name AS stor_name, attr.struct_code AS point_code, attr.struct_name AS point_name, + attr.placement_type, ext.storagevehicle_code AS pallet_code, mater.material_code AS mater_code, mater.material_name AS mater_name, @@ -242,6 +247,7 @@ attr.sect_name, attr.struct_id, attr.struct_code, + attr.placement_type, attr.struct_name, mater.material_code, mater.material_name diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StrategyStructParam.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StrategyStructParam.java index ee84cb4..bb5c949 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StrategyStructParam.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StrategyStructParam.java @@ -60,12 +60,21 @@ public class StrategyStructParam { */ private String ext_id; - + /** + * 是否电子仓库 + */ + private String dz; /** * 用户ID */ private String user_id; + + /** + * 用户绑定货架 + */ + private String placement_type; + /** * 出入库类型 */ diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StructattrQuery.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StructattrQuery.java index aacd36d..91ae064 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StructattrQuery.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StructattrQuery.java @@ -20,11 +20,12 @@ public class StructattrQuery extends BaseQuery { private String lock_type; private String layer_num; private String is_used; + private String placement_type; private String is_have; @Override public void paramMapping() { - super.doP.put("search", QParam.builder().k(new String[]{"struct_code","struct_name"}).type(QueryTEnum.ORLK).build()); + super.doP.put("search", QParam.builder().k(new String[]{"struct_code","struct_name","storagevehicle_code"}).type(QueryTEnum.ORLK).build()); super.doP.put("is_have", QParam.builder().k(new String[]{"storagevehicle_code"}).type(QueryTEnum.NULL_OR_HAS).build()); } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdMeMaterialbaseServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdMeMaterialbaseServiceImpl.java index e28d64c..dba72ac 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdMeMaterialbaseServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdMeMaterialbaseServiceImpl.java @@ -14,12 +14,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.StringUtils; import org.nl.common.domain.query.PageQuery; import org.nl.common.exception.BadRequestException; import org.nl.common.utils.IdUtil; import org.nl.common.utils.SecurityUtils; import org.nl.system.service.user.ISysUserService; import org.nl.system.service.user.dao.SysUser; +import org.nl.wms.basedata_manage.enums.BaseDataEnum; import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService; import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleinfoService; import org.nl.wms.basedata_manage.service.IStructattrService; @@ -33,7 +35,6 @@ import org.nl.wms.sch_manage.service.ISchBasePointService; import org.nl.wms.sch_manage.service.dao.SchBasePoint; import org.nl.wms.warehouse_management.enums.IOSEnum; import org.nl.wms.warehouse_management.service.IMdPbGroupplateService; -import org.nl.wms.warehouse_management.service.dao.GroupPlate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -60,6 +61,11 @@ import java.util.stream.Collectors; @Service public class MdMeMaterialbaseServiceImpl extends ServiceImpl implements IMdMeMaterialbaseService { + /** + * 用户信息 + */ + @Autowired + private ISysUserService iSysUserService; /** * 组盘记录服务 */ @@ -71,12 +77,6 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl(page.getPage() + 1, page.getSize()), + IPage result = this.baseMapper.selectPage(new Page<>(page.getPage() + 1, page.getSize()), queryWrapper ); + for (MdMeMaterialbase r : result.getRecords()) { + if (StringUtils.isNotBlank(r.getPlacement_type())) { + if ("0".equals(r.getPlacement_type())) { + r.setPlacement_type(""); + } + if ("0".equals(r.getExt_id())) { + r.setExt_id(""); + } + } + } + return result; } @Override @@ -149,11 +160,59 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl> read = excelReader.read(); + if (read.size() > 1) { + List materialList = new ArrayList<>(); + for (int i = 1; i < read.size(); i++) { + List list = read.get(i); + String m1 = String.valueOf(list.get(0)); + String m2 = "未知物料名称待补充"; + String m3 = m1; + //String m4 = ObjectUtil.isEmpty(list.get(3)) ? null : String.valueOf(list.get(3)); + //String m5 = ObjectUtil.isEmpty(list.get(4)) ? null : String.valueOf(list.get(4)); + // 根据物料编码查询是否有相同物料编码的物料 + MdMeMaterialbase mdMeMaterialbase = this.baseMapper.selectOne( + new QueryWrapper().lambda() + .eq(MdMeMaterialbase::getMaterial_code, m1) + ); + if (ObjectUtil.isNotEmpty(mdMeMaterialbase)) { + continue; + } + MdMeMaterialbase dao = new MdMeMaterialbase(); + dao.setMaterial_id(IdUtil.getStringId()); + dao.setMaterial_code(m1); + dao.setMaterial_name(m2); + dao.setMaterial_spec(m3); + //dao.setMaterial_model(m4); + dao.setBase_unit_id("1"); + dao.setIs_used("1"); + dao.setIs_delete("0"); + dao.setCreate_id(SecurityUtils.getCurrentUserId()); + dao.setCreate_name(SecurityUtils.getCurrentNickName()); + dao.setCreate_time(DateUtil.now()); + dao.setUpdate_optid(SecurityUtils.getCurrentUserId()); + dao.setUpdate_optname(SecurityUtils.getCurrentNickName()); + dao.setUpdate_time(DateUtil.now()); + materialList.add(dao); + } + this.saveBatch(materialList); + } + } catch (Exception ex) { + throw new BadRequestException("导入失败" + ex.getMessage()); + } + } + + // @Override 物料导入 + @Transactional + public void excelImport1111(MultipartFile file, HttpServletRequest request, HttpServletResponse response) { try { InputStream inputStream = file.getInputStream(); ExcelReader excelReader = ExcelUtil.getReader(inputStream); @@ -199,6 +258,7 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl groupPlateList = iMdPbGroupplateService.list( - new LambdaQueryWrapper() - .eq(GroupPlate::getStoragevehicle_code, mdPbStoragevehicleinfo.get(0).getStoragevehicle_code()) - .eq(GroupPlate::getMaterial_id, mdMeMaterialbase.getMaterial_id()) - .lt(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库")) - ); - if (ObjectUtils.isNotEmpty(groupPlateList)) { - continue; - } - } + // if (!ObjectUtil.isEmpty(mdPbStoragevehicleinfo)) { + // List groupPlateList = iMdPbGroupplateService.list( + // new LambdaQueryWrapper() + // .eq(GroupPlate::getStoragevehicle_code, mdPbStoragevehicleinfo.get(0).getStoragevehicle_code()) + // .eq(GroupPlate::getMaterial_id, mdMeMaterialbase.getMaterial_id()) + // .lt(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库")) + // ); + // if (ObjectUtils.isNotEmpty(groupPlateList)) { + // continue; + // } + // } //物料数量 JSONObject whereJson = new JSONObject(); JSONArray dataArray = new JSONArray(); @@ -315,7 +375,7 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl() .eq(Structattr::getStoragevehicle_code, m3) ); - if (struct == null) { + if (struct != null) { + //清空原库存 + iStructattrService.update(new LambdaUpdateWrapper<>(Structattr.class) + .set(Structattr::getStoragevehicle_code, null) + .set(Structattr::getLock_type, "0") + .set(Structattr::getUpdate_optid, currentUserId) + .set(Structattr::getUpdate_optname, nickName) + .set(Structattr::getUpdate_time, now) + .eq(Structattr::getStruct_id, struct.getStruct_id())); + //锁定新库存 iStructattrService.update(new LambdaUpdateWrapper<>(Structattr.class) .set(Structattr::getStoragevehicle_code, m3) .set(Structattr::getUpdate_optid, currentUserId) .set(Structattr::getUpdate_optname, nickName) .set(Structattr::getUpdate_time, now) - .set(Structattr::getIs_used, 1) + .set(Structattr::getLock_type, "0") .eq(Structattr::getStruct_id, structattr.getStruct_id()) ); } @@ -348,6 +417,112 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl> read = excelReader.read(); + if (read.size() > 1) { + for (int i = 1; i < read.size(); i++) { + in = i; + if (i == 12) { + int a = 0; + } + List list = read.get(i); + if (list.size() < 2) { + continue; + } + if (ObjectUtil.isEmpty(list.get(1))) { + throw new BadRequestException("第" + i + "行,库位号不能为空,请检查。"); + } + //库位编码 + String m1 = String.valueOf(list.get(0)).trim(); + if (m1.contains("L")) { + Structattr structattr = iStructattrService.getOne( + new QueryWrapper().lambda() + .eq(Structattr::getStruct_code, m1) + ); + if (ObjectUtil.isEmpty(structattr)) { + throw new BadRequestException("第" + i + "行,库位编号不存在【" + m1 + "】,请检查。"); + } + //用户账号 + String m2 = String.valueOf(list.get(1)).trim(); + if (ObjectUtil.isNotEmpty(m2)) { + List sysUserList = iSysUserService.list( + new QueryWrapper().lambda() + .eq(SysUser::getUsername, m2) + ); + if (ObjectUtil.isNotEmpty(sysUserList)) { + iStructattrService.update(new LambdaUpdateWrapper<>(Structattr.class) + .set(Structattr::getUser_id, sysUserList.get(0).getUser_id()) + .set(Structattr::getUpdate_optid, currentUserId) + .set(Structattr::getUpdate_optname, nickName) + .set(Structattr::getUpdate_time, now) + .set(Structattr::getIs_used, 1) + .eq(Structattr::getStruct_code, m1)); + } + } + } else { + //物料编码 + String m3 = String.valueOf(list.get(0)).trim(); + if (ObjectUtil.isNotEmpty(m3)) { + MdMeMaterialbase mdMeMaterialbase = this.baseMapper.selectOne( + new QueryWrapper().lambda() + .eq(MdMeMaterialbase::getMaterial_code, m3) + ); + if (ObjectUtil.isEmpty(mdMeMaterialbase)) { + MdMeMaterialbase dao = new MdMeMaterialbase(); + dao.setMaterial_id(IdUtil.getStringId()); + dao.setMaterial_code(m3); + dao.setMaterial_name("未命名"); + dao.setMaterial_spec(m3); + //dao.setMaterial_model(m4); + dao.setBase_unit_id("1"); + dao.setIs_used("1"); + dao.setIs_delete("0"); + dao.setCreate_id(SecurityUtils.getCurrentUserId()); + dao.setCreate_name(SecurityUtils.getCurrentNickName()); + dao.setCreate_time(DateUtil.now()); + dao.setUpdate_optid(SecurityUtils.getCurrentUserId()); + dao.setUpdate_optname(SecurityUtils.getCurrentNickName()); + dao.setUpdate_time(DateUtil.now()); + this.save(dao); + } + //用户账号 + String m4 = String.valueOf(list.get(1)).trim(); + //用户账号 + if (ObjectUtil.isNotEmpty(m4)) { + this.baseMapper.update( + null, + new LambdaUpdateWrapper() + .set(MdMeMaterialbase::getPlacement_type, m4) + .set(MdMeMaterialbase::getUpdate_optid, currentUserId) + .set(MdMeMaterialbase::getUpdate_optname, nickName) + .set(MdMeMaterialbase::getUpdate_time, now) + .set(MdMeMaterialbase::getIs_used, 1) + .eq(MdMeMaterialbase::getMaterial_id, mdMeMaterialbase.getMaterial_id()) + ); + } + } + } + + } + } + } catch (Exception ex) { + throw new BadRequestException("导入失败" + ex.getMessage() + ":" + in); + } + + } + + + /** + * 分区信息导入 + */ + //@Override + public void excelImport999(MultipartFile file, HttpServletRequest request, HttpServletResponse response) { Integer in = 1; try { String currentUserId = SecurityUtils.getCurrentUserId(); @@ -380,16 +555,19 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl sysUserList = iSysUserService.list( - new QueryWrapper().lambda() - .eq(SysUser::getUsername, m2) - ); - if (ObjectUtil.isNotEmpty(sysUserList)) { + if ("0".equals(m2)) { iStructattrService.update(new LambdaUpdateWrapper<>(Structattr.class) - .set(Structattr::getUser_id, sysUserList.get(0).getUser_id()) + .set(Structattr::getIs_used, "0") + .set(Structattr::getUpdate_optid, currentUserId) + .set(Structattr::getUpdate_optname, nickName) + .set(Structattr::getUpdate_time, now) + .eq(Structattr::getStruct_code, m1)); + } else { + iStructattrService.update(new LambdaUpdateWrapper<>(Structattr.class) + .set(Structattr::getPlacement_type, m2) .set(Structattr::getUpdate_optid, currentUserId) .set(Structattr::getUpdate_optname, nickName) .set(Structattr::getUpdate_time, now) @@ -398,40 +576,6 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl().lambda() - .eq(MdMeMaterialbase::getMaterial_code, m3) - ); - if (ObjectUtil.isEmpty(mdMeMaterialbase)) { - throw new BadRequestException("第" + i + "行,物料编码不存在【" + m3 + "】,请检查。"); - } - //用户账号 - String m4 = String.valueOf(list.get(3)).trim(); - //用户账号 - if (ObjectUtil.isNotEmpty(m4)) { - List sysUserList = iSysUserService.list( - new QueryWrapper().lambda() - .eq(SysUser::getUsername, m4) - ); - if (ObjectUtil.isNotEmpty(sysUserList)) { - // 直接使用 update 方法,传入包装器 - this.baseMapper.update( - null, - new LambdaUpdateWrapper() - .set(MdMeMaterialbase::getUser_id, sysUserList.get(0).getUser_id()) - .set(MdMeMaterialbase::getUpdate_optid, currentUserId) - .set(MdMeMaterialbase::getUpdate_optname, nickName) - .set(MdMeMaterialbase::getUpdate_time, now) - .set(MdMeMaterialbase::getIs_used, 1) - .eq(MdMeMaterialbase::getMaterial_id, mdMeMaterialbase.getMaterial_id()) - ); - } - } - } } } } @@ -716,7 +860,9 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl updateWrapper = new LambdaUpdateWrapper(); + updateWrapper.set(Structattr::getUpdate_time, now) + .set(Structattr::getUpdate_optname, nickName) + .set(Structattr::getUpdate_optid, currentUserId) + .eq(Structattr::getStor_code, "CTU"); + if (ObjectUtils.isEmpty(structList)) { + updateWrapper.set(Structattr::getUser_id, '0') + .eq(Structattr::getUser_id, userId); + iStructattrService.update(updateWrapper); + } else { + List extIdList = structList.stream().map(Object::toString).collect(Collectors.toList()); + updateWrapper.set(Structattr::getUser_id, userId) + .in(Structattr::getPlacement_type, extIdList); + iStructattrService.update(updateWrapper); + } + + } + @Override public MdMeMaterialbase getByCode(String materialCode) { MdMeMaterialbase one = this.getOne( @@ -782,4 +955,106 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl getStruct(Map whereJson) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(Structattr.class) + .select(Structattr::getStor_id, Structattr::getStor_code, Structattr::getStor_name, Structattr::getPlacement_type) + .eq(Structattr::getSect_code, "CTU01") + .eq(Structattr::getUser_id, "0") + .isNotNull(Structattr::getPlacement_type) + .eq(Structattr::getIs_delete, BaseDataEnum.IS_YES_NOT.code("否") + ).groupBy(Structattr::getStor_id, Structattr::getStor_code, Structattr::getStor_name, Structattr::getPlacement_type); + List result = iStructattrService.list(queryWrapper); + //自然排序:按照字母部分和数字部分分别排序 + result.sort((s1, s2) -> { + String str1 = s1.getPlacement_type(); + String str2 = s2.getPlacement_type(); + return compareNatural(str1, str2); + }); + return result; + } + + @Override + public List getAllStruct(Map whereJson) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(Structattr.class) + .select(Structattr::getStor_id, Structattr::getStor_code, Structattr::getStor_name, Structattr::getFont_direction_scode) + .eq(Structattr::getSect_code, "CTU01") + .isNotNull(Structattr::getFont_direction_scode) + .eq(Structattr::getIs_delete, BaseDataEnum.IS_YES_NOT.code("否") + ); + List result = iStructattrService.list(queryWrapper); + //自然排序:按照字母部分和数字部分分别排序 + result.sort((s1, s2) -> { + String str1 = s1.getFont_direction_scode(); + String str2 = s2.getFont_direction_scode(); + return compareNatural(str1, str2); + }); + return result; + } + + public List getUser(Map whereJson) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(SysUser.class) + .select(SysUser::getPerson_name, SysUser::getUser_id, SysUser::getUsername) + .eq(SysUser::getIs_used, BaseDataEnum.IS_YES_NOT.code("是")); + List list = iSysUserService.list(queryWrapper); + return list; + } + + public String getUserBindStruct(Map whereJson) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(Structattr.class) + .select(Structattr::getStruct_name, Structattr::getPlacement_type) + .eq(Structattr::getSect_code, "CTU01") + .eq(Structattr::getUser_id, whereJson.get("user_id")) + .isNotNull(Structattr::getPlacement_type) + .eq(Structattr::getIs_delete, BaseDataEnum.IS_YES_NOT.code("否") + ).groupBy(Structattr::getPlacement_type); + List list = iStructattrService.list(queryWrapper); + if (ObjectUtil.isEmpty(list)) { + return "暂未绑定货架"; + } + list.forEach(r -> { + r.setStruct_name(r.getPlacement_type()); + }); + return list.stream().map(Structattr::getStruct_name).collect(Collectors.joining(",")); + } + + /** + * 自然排序比较方法,对包含字母和数字的字符串进行排序 + */ + private int compareNatural(String s1, String s2) { + if (s1 == null) return s2 == null ? 0 : -1; + if (s2 == null) return 1; + int len1 = 0, len2 = 0; + while (len1 < s1.length() && len2 < s2.length()) { + char c1 = s1.charAt(len1); + char c2 = s2.charAt(len2); + // 如果都是数字,提取整个数字部分进行数值比较 + if (Character.isDigit(c1) && Character.isDigit(c2)) { + // 提取数字部分 + int num1 = 0, num2 = 0; + while (len1 < s1.length() && Character.isDigit(s1.charAt(len1))) { + num1 = num1 * 10 + (s1.charAt(len1) - '0'); + len1++; + } + while (len2 < s2.length() && Character.isDigit(s2.charAt(len2))) { + num2 = num2 * 10 + (s2.charAt(len2) - '0'); + len2++; + } + if (num1 != num2) { + return Integer.compare(num1, num2); + } + } else { + // 如果不是数字,直接比较字符 + if (c1 != c2) { + return Character.compare(c1, c2); + } + len1++; + len2++; + } + } + // 如果一个字符串已经遍历完,另一个还有剩余,则长度长的较大 + return Integer.compare(s1.length(), s2.length()); + } } + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbStoragevehicleinfoServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbStoragevehicleinfoServiceImpl.java index cad371e..4fb9ad9 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbStoragevehicleinfoServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbStoragevehicleinfoServiceImpl.java @@ -19,6 +19,7 @@ import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleinfoMappe import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; import java.util.Map; import java.util.Set; @@ -102,13 +103,13 @@ public class MdPbStoragevehicleinfoServiceImpl extends ServiceImpl list = this.list( new QueryWrapper().lambda() .eq(MdPbStoragevehicleinfo::getStoragevehicle_code, storagevehicle_code) ); - if (ObjectUtil.isEmpty(one)) { + if (ObjectUtil.isEmpty(list)) { throw new BadRequestException("载具编码为【"+storagevehicle_code+"】的载具不存在!"); } - return one; + return list.get(0); } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java index 40ad7fd..7cd53a5 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java @@ -337,7 +337,7 @@ public class StructattrServiceImpl extends ServiceImpl strategy = one.getStrategy(); Map decisionerMap = SpringContextHolder.getBeansOfType(Decisioner.class); @@ -379,16 +379,27 @@ public class StructattrServiceImpl extends ServiceImpl list = this.list(query); for (String decisionerType : strategy) { Decisioner decisioner = decisionerMap.get(decisionerType); @@ -435,7 +446,6 @@ public class StructattrServiceImpl extends ServiceImpl { public List handler(List list, JSONObject param) { // 判断仓位是否为空 if (CollectionUtils.isEmpty(list)) { - throw new BadRequestException("均衡策略结果:载具号:" + param.getString("storagevehicle_code") + "当前分配策略无可用货位"); + throw new BadRequestException("均衡策略结果:载具号:" + param.getString("storagevehicle_code") + "当前分配策略无可用货位,详细参数:"+param); } long startTime1 = System.currentTimeMillis(); /** diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/base/FIFORuleHandler.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/base/FIFORuleHandler.java index bdebfe3..c28e439 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/base/FIFORuleHandler.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/base/FIFORuleHandler.java @@ -46,7 +46,7 @@ public class FIFORuleHandler extends Decisioner divStruct = new ArrayList<>(); for (StructattrVechielDto vechielDto : vechielDtos) { diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/base/NearbyRuleHandler.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/base/NearbyRuleHandler.java index 3def196..12d916f 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/base/NearbyRuleHandler.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/base/NearbyRuleHandler.java @@ -47,7 +47,7 @@ public class NearbyRuleHandler extends Decisioner { @Override public List handler(List list, JSONObject param) { if (CollectionUtils.isEmpty(list)) { - throw new BadRequestException("当前分配策略无可用货位"); + throw new BadRequestException("当前分配策略无可用货位,详细参数:"+param); } List before = list.subList(0, list.size() > 10 ? 10 : list.size()); log.info("就近分配前:" + before.stream().map(Structattr::getStruct_code).collect(Collectors.joining(","))); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/base/WeightRuleHandler.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/base/WeightRuleHandler.java index edaaed0..ab403f4 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/base/WeightRuleHandler.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/base/WeightRuleHandler.java @@ -35,7 +35,7 @@ public class WeightRuleHandler extends Decisioner { public List handler(List list, JSONObject param) { // 判断仓位是否为空 if (ObjectUtil.isEmpty(list)) { - throw new BadRequestException("仓位集合为空!"); + throw new BadRequestException("仓位集合为空!详细参数:"+param); } List resultList = new ArrayList<>(); switch (param.getString("ioType")) { diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/diy/InventoryRuleHandler.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/diy/InventoryRuleHandler.java index c15b35a..2d9a3df 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/diy/InventoryRuleHandler.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/diy/InventoryRuleHandler.java @@ -60,7 +60,7 @@ public class InventoryRuleHandler extends Decisioner { @Override public List handler(List list, JSONObject param) { if (CollectionUtils.isEmpty(list)) { - throw new BadRequestException("当前分配策略无可用货位"); + throw new BadRequestException("当前分配策略无可用货位,详细参数:"+param); } String start_point = param.getString("start_point"); String target = LINK_POINT.get(start_point); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/diy/SameBlockNumRuleHandler.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/diy/SameBlockNumRuleHandler.java index 2394a3a..0330118 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/diy/SameBlockNumRuleHandler.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/diy/SameBlockNumRuleHandler.java @@ -36,7 +36,7 @@ public class SameBlockNumRuleHandler extends Decisioner public List handler(List list, JSONObject param) { // 判断仓位是否为空 if (CollectionUtils.isEmpty(list)) { - throw new BadRequestException("当前分配策略sameBlockNum无可用货位"); + throw new BadRequestException("当前分配策略sameBlockNum无可用货位,详细参数:"+param); } // 1. 找出最小巷道号 Integer minBlockNum = list.stream() diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosInServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosInServiceImpl.java index 0e647dd..a326b6c 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosInServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosInServiceImpl.java @@ -23,6 +23,8 @@ import org.nl.common.exception.BadRequestException; import org.nl.common.utils.IdUtil; import org.nl.common.utils.SecurityUtils; import org.nl.config.SpringContextHolder; +import org.nl.system.service.user.ISysUserService; +import org.nl.system.service.user.dao.SysUser; import org.nl.wms.basedata_manage.enums.BaseDataEnum; import org.nl.wms.basedata_manage.service.*; import org.nl.wms.basedata_manage.service.dao.*; @@ -77,6 +79,10 @@ public class PdaIosInServiceImpl implements PdaIosInService { @Autowired private MdPbGroupplateMapper mdPbGroupplateMapper; + /** + * 仓库服务 + */ + /** * 组盘记录服务 */ @@ -115,7 +121,11 @@ public class PdaIosInServiceImpl implements PdaIosInService { */ @Autowired private PdaIosOutService pdaIosOutService; - + /** + * 用户信息 + */ + @Autowired + private ISysUserService iSysUserService; /** * 库区服务 @@ -241,6 +251,19 @@ public class PdaIosInServiceImpl implements PdaIosInService { JSONArray dataArray = whereJson.getJSONArray("data"); String vehicleCode = whereJson.getString("vehicle_code"); String extCode = whereJson.getString("ext_code"); + String userId = whereJson.getString("user_id"); + String userName = null; + if (StringUtils.isNotBlank(userId)) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(SysUser.class) + .select(SysUser::getPerson_name, SysUser::getUser_id, SysUser::getUsername) + .eq(SysUser::getUser_id, userId) + .eq(SysUser::getIs_used, BaseDataEnum.IS_YES_NOT.code("是")); + List list = iSysUserService.list(queryWrapper); + userName = list.get(0).getPerson_name(); + } else { + userName = SecurityUtils.getCurrentNickName(); + userId = SecurityUtils.getCurrentUserId(); + } List groupList = new ArrayList<>(); MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getByCode(vehicleCode); if (ObjectUtil.isEmpty(vehicleDao)) { @@ -261,14 +284,37 @@ public class PdaIosInServiceImpl implements PdaIosInService { if (qtyIsEmpty) { throw new BadRequestException("物料数量不能为空"); } + //校验物料与货架权限 if (vehicleCode.contains("LX")) { // 校验物料归属 MdMeMaterialbase materInfo = iMdMeMaterialbaseService.getByCode(dataArray.getJSONObject(0).getString("material_id")); - if (ObjectUtil.isEmpty(materInfo)) { - throw new BadRequestException("物料信息错误:" + dataArray.getJSONObject(0).getString("material_id")); - } - if (!materInfo.getUser_id().equals(SecurityUtils.getCurrentUserId())) { - throw new BadRequestException("该物料:" + materInfo.getMaterial_name() + "不属于管理员:" + SecurityUtils.getCurrentNickName() + "管理范畴,请勿组盘!"); + if (!"KL001".equals(materInfo.getMaterial_code())) { + //物料归属货架校验 + if (ObjectUtil.isEmpty(materInfo)) { + throw new BadRequestException("物料信息错误:" + dataArray.getJSONObject(0).getString("material_id")); + } + if (StringUtils.isBlank(materInfo.getPlacement_type())) { + throw new BadRequestException("该物料:" + materInfo.getMaterial_name() + ",未绑定货架,请在物料维护界面进行绑定操作"); + } + //货架人员管理校验,admin不校验 + if (!"admin".equals(userName)) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(Structattr.class) + .select(Structattr::getStor_id, Structattr::getStor_code, Structattr::getStor_name, Structattr::getPlacement_type) + .eq(Structattr::getSect_code, "CTU01") + .eq(Structattr::getUser_id, userId) + .eq(Structattr::getIs_delete, BaseDataEnum.IS_YES_NOT.code("否")) + .eq(Structattr::getIs_used, BaseDataEnum.IS_YES_NOT.code("是") + ).groupBy(Structattr::getPlacement_type); + List list = iStructattrService.list(queryWrapper); + if (ObjectUtils.isEmpty(list)) { + throw new BadRequestException("账号:" + userName + ",未绑定货架,请在物料维护界面进行绑定操作"); + } + List rowList = list.stream().map(Structattr::getPlacement_type).map(String::valueOf).collect(Collectors.toList()); + //检查物料的用户ID是否在用户绑定的货架行号中 + if (!rowList.contains(materInfo.getPlacement_type())) { + throw new BadRequestException("该物料:" + materInfo.getMaterial_name() + ",归属的货架:" + materInfo.getPlacement_type() + ",不属于用户:" + userName + " 的管理范畴或货架库位已满,请检查或修改用户的货架或物料权限!"); + } + } } } if (StringUtils.isBlank(whereJson.getString("nonClear"))) { @@ -284,8 +330,8 @@ public class PdaIosInServiceImpl implements PdaIosInService { .set(GroupPlate::getQty, BigDecimal.ZERO) .set(GroupPlate::getFrozen_qty, BigDecimal.ZERO) .set(GroupPlate::getUpdate_time, DateUtil.now()) - .set(GroupPlate::getUpdate_optid, SecurityUtils.getCurrentUserId()) - .set(GroupPlate::getUpdate_optname, SecurityUtils.getCurrentNickName()) + .set(GroupPlate::getUpdate_optid, userId) + .set(GroupPlate::getUpdate_optname, userName) .set(GroupPlate::getRemark, "载具:" + vehicleDao.getStoragevehicle_code() + "存在物料,于" + DateUtil.now() + "重新组盘,该物料强制清空出库。") .in(GroupPlate::getGroup_id, groupPlateList.stream().map(GroupPlate::getGroup_id).collect(Collectors.toSet())) ); @@ -318,8 +364,8 @@ public class PdaIosInServiceImpl implements PdaIosInService { .status(StringUtils.defaultIfBlank(whereJson.getString("groupStatus"), IOSEnum.GROUP_PLATE_STATUS.code("组盘"))) .ext_code(extCode) - .create_id(SecurityUtils.getCurrentUserId()) - .create_name(SecurityUtils.getCurrentNickName()) + .create_id(userId) + .create_name(userName) .create_time(DateUtil.now()) .remark(StringUtils.defaultIfBlank(item.getString("remark"), "")) .build(); @@ -473,6 +519,10 @@ public class PdaIosInServiceImpl implements PdaIosInService { @Override @Transactional public PdaResponse confirmReturnMaterial(JSONObject whereJson) { + String userId = whereJson.getString("user_id"); + if (StringUtils.isBlank(userId)) { + userId = SecurityUtils.getCurrentUserId(); + } //校验仓库 Sectattr sectDao = updateIvtUtils.checkVehicleType(whereJson.getString("sect_id"), whereJson.getString("storagevehicle_code")); //校验回库起点 @@ -480,20 +530,25 @@ public class PdaIosInServiceImpl implements PdaIosInService { if (ObjectUtil.isEmpty(schBasePoint)) { throw new BadRequestException("未找到载具所在的点位信息,请检查"); } - List groupPlateList = iMdPbGroupplateService.list( - new LambdaQueryWrapper() - .eq(GroupPlate::getStoragevehicle_code, whereJson.getString("storagevehicle_code")) - .lt(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库")).eq(GroupPlate::getQty, 0) - ); - //处理组盘信息 - if (CollectionUtils.isNotEmpty(groupPlateList)) { - LambdaUpdateWrapper update = new LambdaUpdateWrapper<>(); - Set plateCodes = groupPlateList.stream().map(GroupPlate::getGroup_id).collect(Collectors.toSet()); - update.set(GroupPlate::getStatus, GROUP_PLATE_STATUS.code("出库")) - .set(GroupPlate::getUpdate_time, DateUtil.now()) - .set(GroupPlate::getCreate_time, DateUtil.now()) - .in(GroupPlate::getGroup_id, plateCodes); - mdPbGroupplateMapper.update(null, update); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.lt(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库")) + .eq(GroupPlate::getStoragevehicle_code, whereJson.getString("storagevehicle_code")); + //tofix 托盘混料回库 + if (whereJson.getString("storagevehicle_code").contains("T")) { + queryWrapper.eq(GroupPlate::getQty, 0); + } + List groupPlateList = iMdPbGroupplateService.list(queryWrapper); + if (whereJson.getString("storagevehicle_code").contains("T")) { + //处理组盘信息 + if (CollectionUtils.isNotEmpty(groupPlateList)) { + LambdaUpdateWrapper update = new LambdaUpdateWrapper<>(); + Set plateCodes = groupPlateList.stream().map(GroupPlate::getGroup_id).collect(Collectors.toSet()); + update.set(GroupPlate::getStatus, GROUP_PLATE_STATUS.code("出库")) + .set(GroupPlate::getUpdate_time, DateUtil.now()) + .set(GroupPlate::getCreate_time, DateUtil.now()) + .in(GroupPlate::getGroup_id, plateCodes); + mdPbGroupplateMapper.update(null, update); + } } // 生成回库任务 whereJson.put("site_code", schBasePoint.getPoint_code()); @@ -501,6 +556,11 @@ public class PdaIosInServiceImpl implements PdaIosInService { whereJson.put("vehicle_code", whereJson.getString("storagevehicle_code")); whereJson.put("stor_code", sectDao.getStor_code()); whereJson.put("sect_code", sectDao.getSect_code()); + if ("CTU".equals(sectDao.getStor_code())) { + MdMeMaterialbase materInfo = iMdMeMaterialbaseService.getByCode(groupPlateList.get(0).getMaterial_id()); + //whereJson.put("user_id", userId); + whereJson.put("placement_type", materInfo.getPlacement_type()); + } //入库分配 SpringContextHolder.getBean(PdaIosInServiceImpl.class).divStructNoBills(whereJson); return PdaResponse.requestOk(); @@ -542,7 +602,8 @@ public class PdaIosInServiceImpl implements PdaIosInService { params.put("qty", whereJson.getString("qty")); params.put("pcsn", whereJson.getString("pcsn")); params.put("ext_id", whereJson.getString("ext_id")); - params.put("user_id", whereJson.getString("ext_id")); + params.put("placement_type", whereJson.getString("placement_type")); + params.put("user_id", whereJson.getString("user_id")); Structattr attrDao = iRawAssistIStorService.getStructattr(params); //确定起点 SchBasePoint schBasePoint = iSchBasePointService.getOne(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, whereJson.getString("site_code"))); @@ -577,11 +638,27 @@ public class PdaIosInServiceImpl implements PdaIosInService { @Override @Transactional public PdaResponse confirmIn(JSONObject whereJson) { + String userId = whereJson.getString("user_id"); + String userName = null; + if (StringUtils.isNotBlank(userId)) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(SysUser.class) + .select(SysUser::getPerson_name, SysUser::getUser_id, SysUser::getUsername) + .eq(SysUser::getUser_id, userId) + .eq(SysUser::getIs_used, BaseDataEnum.IS_YES_NOT.code("是")); + List list = iSysUserService.list(queryWrapper); + userName = list.get(0).getPerson_name(); + } else { + userName = SecurityUtils.getCurrentNickName(); + userId = SecurityUtils.getCurrentUserId(); + } //库存校验 Structattr structattr = iStructattrService.getOne(new LambdaUpdateWrapper().eq(Structattr::getStoragevehicle_code, whereJson.getString("vehicle_code"))); if (structattr != null) { - log.error("此载具:"+whereJson.getString("vehicle_code")+"已存在:" + structattr.getStruct_code() + " 中,请检查!"); - throw new BadRequestException("此载具:"+whereJson.getString("vehicle_code")+"已存在:" + structattr.getStruct_code() + " 中,请检查!"); + iStructattrService.update(new UpdateWrapper().lambda() + .set(Structattr::getStoragevehicle_code, null) + .set(Structattr::getLock_type, '0') + .eq(Structattr::getStruct_id, structattr.getStruct_id())); + log.error("此载具:" + whereJson.getString("vehicle_code") + "已存在:" + structattr.getStruct_code() + " 中,请检查!"); } Sectattr sectDao = updateIvtUtils.checkVehicleType(whereJson.getString("sect_id"), whereJson.getString("vehicle_code")); whereJson.put("stor_code", sectDao.getStor_code()); @@ -617,12 +694,26 @@ public class PdaIosInServiceImpl implements PdaIosInService { .gt(GroupPlate::getQty, 0).eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("组盘")) ); if (CollectionUtils.isEmpty(groupPlateList)) { - throw new BadRequestException("此载具:" + whereJson.getString("vehicle_code") + "组盘信息不存在,请检查!"); + //自动默认在库位,从新修改组盘信息 + mdPbGroupplateMapper.update(new GroupPlate(), new LambdaUpdateWrapper() + .set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("组盘")) + .eq(GroupPlate::getStoragevehicle_code, whereJson.getString("vehicle_code")) + .eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库"))); + //throw new BadRequestException("此载具:" + whereJson.getString("vehicle_code") + "组盘信息不存在,请检查!"); } // 校验物料信息 MdMeMaterialbase materDao = iMdMeMaterialbaseService.getById(groupPlateList.get(0).getMaterial_id()); - jsonDtl.put("ext_id", materDao.getExt_id()); - jsonDtl.put("user_id",SecurityUtils.getCurrentUserId()); + //tofix 物料和货架绑定,空料箱不校验,如果提出多个物料可以公共存放? + if ("KL001".equals(materDao.getMaterial_code())) { + //空料箱分配到没有仓管员绑定货架的位置 + jsonDtl.put("user_id", "0"); + } else { + if (StringUtils.isBlank(materDao.getPlacement_type())) { + throw new BadRequestException("该物料:" + materDao.getMaterial_name() + ",未绑定货架,请在物料维护界面进行绑定操作"); + } + jsonDtl.put("placement_type", materDao.getPlacement_type()); + jsonDtl.put("ext_id", materDao.getExt_id()); + } } // 调用分配,默认自动分配库位 iRawAssistIStorService.divStruct(jsonDtl); @@ -645,7 +736,6 @@ public class PdaIosInServiceImpl implements PdaIosInService { }); taskJson.put("tableMater", tableMater); iRawAssistIStorService.divPoint(taskJson); - } else { //空载具入库 whereJson.put("qty", 1); @@ -681,14 +771,23 @@ public class PdaIosInServiceImpl implements PdaIosInService { */ private Map organizeInsertData(JSONObject whereJson) { // 查询组盘明细 + List plateDaoList1 = iMdPbGroupplateService.list( + new QueryWrapper().lambda() + .eq(GroupPlate::getStoragevehicle_code, whereJson.getString("vehicle_code")) + .eq(GroupPlate::getStatus, GROUP_PLATE_STATUS.code("组盘")) + ); + if (ObjectUtil.isEmpty(plateDaoList1)) { + mdPbGroupplateMapper.update(new GroupPlate(), new LambdaUpdateWrapper() + .set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("组盘")) + .eq(GroupPlate::getStoragevehicle_code, whereJson.getString("vehicle_code")) + .eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库"))); + //throw new BadRequestException("当前没有可入库的物料!"); + } List plateDaoList = iMdPbGroupplateService.list( new QueryWrapper().lambda() .eq(GroupPlate::getStoragevehicle_code, whereJson.getString("vehicle_code")) .eq(GroupPlate::getStatus, GROUP_PLATE_STATUS.code("组盘")) ); - if (ObjectUtil.isEmpty(plateDaoList)) { - throw new BadRequestException("当前没有可入库的物料!"); - } // 总数量 Double total_qty = plateDaoList.stream() .map(row -> row.getQty().doubleValue()) diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosOutServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosOutServiceImpl.java index 9c7e74c..6e8d0c1 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosOutServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosOutServiceImpl.java @@ -38,7 +38,6 @@ 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.impl.SchBaseTaskServiceImpl; import org.nl.wms.sch_manage.service.util.AbstractTask; import org.nl.wms.warehouse_management.enums.IOSConstant; import org.nl.wms.warehouse_management.enums.IOSEnum; @@ -465,6 +464,7 @@ public class PdaIosOutServiceImpl implements PdaIosOutService { ioStorInvDtl.put("assign_qty", whereJson.get("qty")); ioStorInvDtl.put("unassign_qty", "0"); ioStorInvDtl.put("plan_qty", whereJson.get("qty")); + ioStorInvDtl.put("create_time", now); ioStorInvDtlMapper.insert(ioStorInvDtl.toJavaObject(IOStorInvDtl.class)); //分配 JSONObject dis = new JSONObject(); @@ -846,6 +846,7 @@ public class PdaIosOutServiceImpl implements PdaIosOutService { //目标点位 String regionCode = whereJson.getString("region_code"); String vehicleCode = whereJson.getString("storagevehicle_code"); + String isCheckIvt = whereJson.getString("isCheckIvt"); //校验起点 SchBasePoint point = iSchBasePointService.getOne( new LambdaQueryWrapper() @@ -895,11 +896,23 @@ public class PdaIosOutServiceImpl implements PdaIosOutService { } endPointCode = pointCode2; } else { + if ("1".equals(isCheckIvt)) { + //终点为区域 + List taskList = iSchBaseTaskService.list(new LambdaQueryWrapper().eq(SchBaseTask::getVehicle_code, vehicleCode).eq(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode()).orderByDesc(SchBaseTask::getCreate_time).last("LIMIT 50")); + if (ObjectUtil.isNotEmpty(taskList)) { + List schBasePointList = iSchBasePointService.list(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, taskList.get(0).getPoint_code1()).eq(SchBasePoint::getIs_used, true)); + if (ObjectUtil.isNotEmpty(schBasePointList)) { + if (!point.getRegion_code().equals(schBasePointList.get(0).getRegion_code())) { + regionCode = schBasePointList.get(0).getRegion_code(); + } + } + } + } //获取终点 endPointCode = iSchBasePointService.getPointCode(regionCode); if (StringUtils.isBlank(endPointCode)) { - //入线边仓分配库位 - if (regionCode.equals(StatusEnum.REGION_INFO.code("预装线货架区"))) { + //无空位分配到入线边仓分配库位 + if (regionCode.equals(StatusEnum.REGION_INFO.code("预装线货架区")) || regionCode.equals(StatusEnum.REGION_INFO.code("TGCK01")) || regionCode.equals(StatusEnum.REGION_INFO.code("两器仓"))) { JSONArray dataArray = new JSONArray(); JSONObject item = new JSONObject(); item.put("material_id", StatusEnum.VEHICLE_TYPE.code("空货架")); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/enums/StatusEnum.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/enums/StatusEnum.java index 7b09eb2..8f1a81c 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/enums/StatusEnum.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/enums/StatusEnum.java @@ -96,7 +96,7 @@ public enum StatusEnum { REGION_INFO(ForkMap.of("商用线5号线", "SYCX01", null, "预装暂存区", "YZZC01", null, "预装线货架区", "YZHJ01", null, "铜管仓", "TGCK01", null, - "烧焊车间", "SHCJ01", null, "来料检验区", "LLJY01", null, "空托存放区", "KTCF01", null, "两器货架区", "LQHJ01", null, "满托存放区", "MTCF01", null, "焊接货架区", "LQSH01", null, "原料入库区", "RKQ01", null,"CTU入库点", "CTU01", null,"CTU出库点", "CTU02", null)), + "铜管-烧焊车间", "SHCJ01", null,"两器-烧焊车间", "SHCJ02", null, "来料检验区", "LLJY01", null, "空托存放区", "KTCF01", null, "两器仓", "LQHJ01", null, "满托存放区", "MTCF01", null, "焊接货架区", "LQSH01", null, "原料入库区", "RKQ01", null,"CTU入库点", "CTU01", null,"CTU出库点", "CTU02", null)), STOCK_INFO(ForkMap.of("托盘库", "FStockPallet", null, "料箱库", "FStockId", null, "虚拟库", "FicStockId", null, "二楼ctu缓存库", "CStockId", null, diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBasePoint.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBasePoint.java index 20e26a2..a0051a1 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBasePoint.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBasePoint.java @@ -146,6 +146,10 @@ public class SchBasePoint implements Serializable { @TableField(exist = false) private String material_qty; @TableField(exist = false) + private String material_status; + @TableField(exist = false) + private String pcsn; + @TableField(exist = false) private String material_code; @TableField(exist = false) private String material_name; diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.xml index f1a9b82..cb3ce47 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.xml +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.xml @@ -28,9 +28,26 @@