diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/CodeUtil.java b/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/CodeUtil.java index ce0b4bf..8486e88 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/CodeUtil.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/CodeUtil.java @@ -43,5 +43,11 @@ public class CodeUtil { } } + public static String codeView(String ruleCode) { + final String[] code = {""}; + ISysCodeRuleService service = SpringContextHolder.getBean(ISysCodeRuleService.class); + RedissonUtils.lock(() -> code[0] = service.codeDemo(MapOf.of("flag","0","code",ruleCode)), ruleCode, 1); + return code[0]; + } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/GenUtil.java b/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/GenUtil.java new file mode 100644 index 0000000..58b6e76 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/GenUtil.java @@ -0,0 +1,433 @@ +package org.nl.common.utils; + +import cn.hutool.core.util.StrUtil; +import cn.hutool.extra.template.*; +import lombok.extern.slf4j.Slf4j; +import org.nl.wms.system_manage.service.generator.dao.CodeColumnConfig; +import org.nl.wms.system_manage.service.generator.dao.CodeGenConfig; +import org.springframework.util.ObjectUtils; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.Writer; +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static org.nl.common.utils.FileUtil.SYS_TEM_DIR; + +/** + * @author: lyd + * @description: 代码生成 + * @Date: 2022/12/2 + */ +@Slf4j +@SuppressWarnings({"unchecked", "all"}) +public class GenUtil { + private static final String TIMESTAMP = "Timestamp"; + + private static final String Date = "Date"; + + private static final String BIGDECIMAL = "BigDecimal"; + + public static final String PK = "PRI"; + + public static final String EXTRA = "auto_increment"; + + /** + * 获取后端代码模板名称 + * + * @return List + */ + private static List getAdminTemplateNames() { + List templateNames = new ArrayList<>(); + templateNames.add("Entity"); + templateNames.add("MySQLMapper"); + templateNames.add("Dto"); + templateNames.add("Mapper"); + templateNames.add("Controller"); + templateNames.add("QueryCriteria"); + templateNames.add("Service"); + templateNames.add("ServiceImpl"); + // templateNames.add("Repository"); + return templateNames; + } + + /** + * 获取前端代码模板名称 + * + * @return List + */ + private static List getFrontTemplateNames() { + List templateNames = new ArrayList<>(); + templateNames.add("index"); + templateNames.add("api"); + return templateNames; + } + + public static List> preview(List columns, CodeGenConfig genConfig) { + Map genMap = getGenMap(columns, genConfig); // 获取参数 + List> genList = new ArrayList<>(); + // 获取后端模版 + List templates = getAdminTemplateNames(); + TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig("template", TemplateConfig.ResourceMode.CLASSPATH)); + for (String templateName : templates) { // 创建模板 + Map map = new HashMap<>(1); + Template template = engine.getTemplate("generator/admin/" + templateName + ".ftl"); + map.put("content", template.render(genMap)); + map.put("name", templateName); + genList.add(map); + } + // 获取前端模版 + templates = getFrontTemplateNames(); + for (String templateName : templates) { + Map map = new HashMap<>(1); + Template template = engine.getTemplate("generator/front/" + templateName + ".ftl"); + map.put(templateName, template.render(genMap)); + map.put("content", template.render(genMap)); + map.put("name", templateName); + genList.add(map); + } + return genList; + } + + /** + * 定义后端文件路径以及名称 + */ + private static String getAdminFilePath(String templateName, CodeGenConfig genConfig, String className, String rootPath) { + String projectPath = rootPath + File.separator + genConfig.getModule_name() + File.separator; + String packagePath = projectPath + "src" + File.separator + "main" + File.separator + "java" + File.separator; + if (!ObjectUtils.isEmpty(genConfig.getPack())) { + packagePath += genConfig.getPack().replace(".", File.separator) + File.separator; + } + + if ("Entity".equals(templateName)) { + return packagePath + "service" + File.separator + "dao" + File.separator + className + ".java"; + } + + if ("Controller".equals(templateName)) { + return packagePath + "controller" + File.separator + className + "Controller.java"; + } + + if ("Service".equals(templateName)) { + return packagePath + "service" + File.separator + "I" + className + "Service.java"; + } + + if ("ServiceImpl".equals(templateName)) { + return packagePath + "service" + File.separator + "impl" + File.separator + className + "ServiceImpl.java"; + } + + if ("Dto".equals(templateName)) { + return packagePath + "service" + File.separator + "dto" + File.separator + className + "Dto.java"; + } + + if ("QueryCriteria".equals(templateName)) { + return packagePath + "service" + File.separator + "dto" + File.separator + className + "Query.java"; + } + + if ("Mapper".equals(templateName)) { + return packagePath + "service" + File.separator + "dao" + File.separator + "mapper" + File.separator + className + "Mapper.java"; + } + + if ("MySQLMapper".equals(templateName)) { + return packagePath + "service" + File.separator + "dao" + File.separator + "mapper" + File.separator + className + "Mapper.xml"; + } + + return null; + } + + /** + * 定义前端文件路径以及名称 + */ + private static String getFrontFilePath(String templateName, String apiPath, String path, String apiName) { + + if ("api".equals(templateName)) { + return path + File.separator + apiName + ".js"; + } + + if ("index".equals(templateName)) { + return path + File.separator + "index.vue"; + } + + return null; + } + + // 获取模版数据 + private static Map getGenMap(List columnInfos, CodeGenConfig genConfig) { + // 存储模版字段数据 + Map genMap = new HashMap<>(16); + // 接口别名 + genMap.put("apiAlias", genConfig.getApi_alias()); + // 包名称 + genMap.put("package", genConfig.getPack()); + // 模块名称 + genMap.put("moduleName", genConfig.getModule_name()); + // 作者 + genMap.put("author", genConfig.getAuthor()); + // 创建日期 + genMap.put("date", LocalDate.now().toString()); + // 表名 + genMap.put("tableName", genConfig.getTable_name()); + // 大写开头的类名 + String className = StringUtils.toCapitalizeCamelCase(genConfig.getTable_name()); + // 小写开头的类名 + String changeClassName = StringUtils.toCamelCase(genConfig.getTable_name()); + // 判断是否去除表前缀 + if (StrUtil.isNotEmpty(genConfig.getPrefix())) { + className = StringUtils.toCapitalizeCamelCase(StrUtil.removePrefix(genConfig.getTable_name(), genConfig.getPrefix())); + changeClassName = StringUtils.toCamelCase(StrUtil.removePrefix(genConfig.getTable_name(), genConfig.getPrefix())); + } + // 保存类名 + genMap.put("className", className); // 驼峰命名 + // 保存小写开头的类名 + genMap.put("changeClassName", changeClassName); + // 存在 Timestamp 字段 + genMap.put("hasTimestamp", false); + // 查询类中存在 Timestamp 字段 + genMap.put("queryHasTimestamp", false); + // 存在 BigDecimal 字段 + genMap.put("hasBigDecimal", false); + // 查询类中存在 BigDecimal 字段 + genMap.put("queryHasBigDecimal", false); + // 是否需要创建查询 + genMap.put("hasQuery", false); + // 是否有主键 + genMap.put("hasPk", false); + // 自增主键 + genMap.put("auto", false); + genMap.put("hasDate", false); + // 存在字典 + genMap.put("hasDict", false); + // 存在日期注解 + genMap.put("hasDateAnnotation", false); + // 保存字段信息 + List> columns = new ArrayList<>(); + // 保存查询字段的信息 + List> queryColumns = new ArrayList<>(); + // 存储字典信息 + List dicts = new ArrayList<>(); + // 存储 between 信息 + List> betweens = new ArrayList<>(); + // 存储不为空的字段信息 + List> isNotNullColumns = new ArrayList<>(); + + for (CodeColumnConfig column : columnInfos) { // 遍历所有字段 + Map listMap = new HashMap<>(16); + // 字段描述 + listMap.put("remark", column.getRemark()); + // 字段类型 + listMap.put("columnKey", column.getKey_type()); + // 主键类型 + String colType = ColUtil.cloToJava(column.getColumn_type()); + // 小写开头的字段名 - 转驼峰 +// String changeColumnName = StringUtils.toCamelCase(column.getColumnName()); + String changeColumnName = column.getColumn_name(); + // 大写开头的字段名 + String capitalColumnName = StringUtils.toCapitalizeCamelCase(column.getColumn_name()); + if (PK.equals(column.getKey_type())) { // 如果是主键 + genMap.put("hasPk", true); + // 存储主键类型 + genMap.put("pkColumnType", colType); + // 存储小写开头的字段名 + genMap.put("pkChangeColName", changeColumnName); + // 存储大写开头的字段名 + genMap.put("pkCapitalColName", capitalColumnName); + } + // 是否存在 Timestamp 类型的字段 + if (TIMESTAMP.equals(colType)) { + genMap.put("hasTimestamp", true); + } + // 是否存在 BigDecimal 类型的字段 + if (BIGDECIMAL.equals(colType)) { + genMap.put("hasBigDecimal", true); + } + // 主键是否自增 + if (EXTRA.equals(column.getExtra())) { + genMap.put("auto", true); + } + // 主键存在字典 + if (StrUtil.isNotEmpty(column.getDict_name())) { + genMap.put("hasDict", true); + dicts.add(column.getDict_name()); + } + + // 存储字段类型 + listMap.put("columnType", colType); + // 存储字原始段名称 + listMap.put("columnName", column.getColumn_name()); + // 不为空 + listMap.put("istNotNull", column.getNot_null()); + // 字段列表显示 + listMap.put("columnShow", column.getList_show()); + // 表单显示 + listMap.put("formShow", column.getForm_show()); + // 表单组件类型 + listMap.put("formType", StrUtil.isNotEmpty(column.getForm_type()) ? column.getForm_type() : "Input"); + // 小写开头的字段名称 + listMap.put("changeColumnName", changeColumnName); + //大写开头的字段名称 + listMap.put("capitalColumnName", capitalColumnName); + // 字典名称 + listMap.put("dictName", column.getDict_name()); + // 日期注解 + listMap.put("dateAnnotation", column.getDate_annotation()); + if (StrUtil.isNotEmpty(column.getDate_annotation())) { + genMap.put("hasDateAnnotation", true); + } + // 添加非空字段信息 + if (column.getNot_null()) { + isNotNullColumns.add(listMap); + } + // 判断是否有查询,如有则把查询的字段set进columnQuery + if (!StrUtil.isEmpty(column.getQuery_type())) { + // 查询类型 + listMap.put("queryType", column.getQuery_type()); + // 是否存在查询 + genMap.put("hasQuery", true); + if (TIMESTAMP.equals(colType)) { + // 查询中存储 Timestamp 类型 + genMap.put("queryHasTimestamp", true); + } + if (BIGDECIMAL.equals(colType)) { + // 查询中存储 BigDecimal 类型 + genMap.put("queryHasBigDecimal", true); + } + if ("between".equalsIgnoreCase(column.getQuery_type())) { + betweens.add(listMap); + } else { + // 添加到查询列表中 + queryColumns.add(listMap); + } + } + // 添加到字段列表中 + columns.add(listMap); + } + // 保存字段列表 + genMap.put("columns", columns); + // 保存查询列表 + genMap.put("queryColumns", queryColumns); + // 保存字段列表 + genMap.put("dicts", dicts); + // 保存查询列表 + genMap.put("betweens", betweens); + // 保存非空字段信息 + genMap.put("isNotNullColumns", isNotNullColumns); + return genMap; + } + + /** + * 打包下载 + * @param columns + * @param genConfig + * @return + * @throws IOException + */ + public static String download(List columns, CodeGenConfig genConfig) throws IOException { + // 拼接的路径:/tmpnladmin-gen-temp/,这个路径在Linux下需要root用户才有权限创建,非root用户会权限错误而失败,更改为: /tmp/nladmin-gen-temp/ + // String tempPath =SYS_TEM_DIR + "nladmin-gen-temp" + File.separator + genConfig.getTableName() + File.separator; + String tempPath = SYS_TEM_DIR + "nladmin-gen-temp" + File.separator + genConfig.getTable_name() + File.separator; + Map genMap = getGenMap(columns, genConfig); + TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig("template", TemplateConfig.ResourceMode.CLASSPATH)); + // 生成后端代码 + List templates = getAdminTemplateNames(); + for (String templateName : templates) { + Template template = engine.getTemplate("generator/admin/" + templateName + ".ftl"); + String filePath = getAdminFilePath(templateName, genConfig, genMap.get("className").toString(), tempPath + "eladmin" + File.separator); + assert filePath != null; + File file = new File(filePath); + // 如果非覆盖生成 + if (!genConfig.getCover() && FileUtil.exist(file)) { + continue; + } + // 生成代码 + genFile(file, template, genMap); + } + // 生成前端代码 + templates = getFrontTemplateNames(); + for (String templateName : templates) { + Template template = engine.getTemplate("generator/front/" + templateName + ".ftl"); + String path = tempPath + "nladmin-web" + File.separator; + String apiPath = path + "src" + File.separator + "api" + File.separator; + String srcPath = path + "src" + File.separator + "views" + File.separator + genMap.get("changeClassName").toString() + File.separator; + String filePath = getFrontFilePath(templateName, apiPath, srcPath, genMap.get("changeClassName").toString()); + assert filePath != null; + File file = new File(filePath); + // 如果非覆盖生成 + if (!genConfig.getCover() && FileUtil.exist(file)) { + continue; + } + // 生成代码 + genFile(file, template, genMap); + } + return tempPath; + } + + /** + * 生成文件 + * @param file + * @param template + * @param map + * @throws IOException + */ + private static void genFile(File file, Template template, Map map) throws IOException { + // 生成目标文件 + Writer writer = null; + try { + FileUtil.touch(file); + writer = new FileWriter(file); + template.render(map, writer); + } catch (TemplateException | IOException e) { + throw new RuntimeException(e); + } finally { + assert writer != null; + writer.close(); + } + } + + /** + * 生成代码 + * @param columnInfos + * @param genConfig + * @throws IOException + */ + public static void generatorCode(List columnInfos, CodeGenConfig genConfig) throws IOException { + Map genMap = getGenMap(columnInfos, genConfig); + TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig("template", TemplateConfig.ResourceMode.CLASSPATH)); + // 生成后端代码 + List templates = getAdminTemplateNames(); + for (String templateName : templates) { + Template template = engine.getTemplate("generator/admin/" + templateName + ".ftl"); + String filePath = getAdminFilePath(templateName, genConfig, genMap.get("className").toString(), System.getProperty("user.dir")); + + assert filePath != null; + File file = new File(filePath); + + // 如果非覆盖生成 + if (!genConfig.getCover() && FileUtil.exist(file)) { + continue; + } + // 生成代码 + genFile(file, template, genMap); + } + + // 生成前端代码 + templates = getFrontTemplateNames(); + for (String templateName : templates) { + Template template = engine.getTemplate("generator/front/" + templateName + ".ftl"); + String filePath = getFrontFilePath(templateName, genConfig.getApi_path(), genConfig.getPath(), genMap.get("changeClassName").toString()); + + assert filePath != null; + File file = new File(filePath); + + // 如果非覆盖生成 + if (!genConfig.getCover() && FileUtil.exist(file)) { + continue; + } + // 生成代码 + genFile(file, template, genMap); + } + } +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/DeviceInfoController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/DeviceInfoController.java new file mode 100644 index 0000000..30b8a9e --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/DeviceInfoController.java @@ -0,0 +1,64 @@ +package org.nl.wms.basedata_manage.controller; + + +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.wms.basedata_manage.service.IEmBiDeviceinfoService; +import org.nl.wms.basedata_manage.service.dao.EmBiDeviceinfo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; +import java.util.Set; + +/** + *

+ * 设备基础信息表 控制层 + *

+ * + * @author Liuxy + * @since 2025-05-14 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/deviceinfo") +@Slf4j +public class DeviceInfoController { + + @Autowired + private IEmBiDeviceinfoService iEmBiDeviceinfoService; + + @GetMapping + @Log("查询设备") + public ResponseEntity query(@RequestParam Map whereJson, PageQuery page) { + return new ResponseEntity<>(TableDataInfo.build(iEmBiDeviceinfoService.queryAll(whereJson, page)), HttpStatus.OK); + } + + @PostMapping + @Log("新增设备") + public ResponseEntity create(@Validated @RequestBody EmBiDeviceinfo dto) { + iEmBiDeviceinfoService.create(dto); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改设备") + public ResponseEntity update(@Validated @RequestBody EmBiDeviceinfo dto) { + iEmBiDeviceinfoService.update(dto); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @DeleteMapping + @Log("删除设备") + public ResponseEntity delete(@RequestBody Set ids) { + iEmBiDeviceinfoService.delete(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/GroupController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/GroupController.java index 7218c55..d98c8a3 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/GroupController.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/GroupController.java @@ -1,14 +1,26 @@ package org.nl.wms.basedata_manage.controller; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; 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.exception.BadRequestException; import org.nl.common.logging.annotation.Log; +import org.nl.common.utils.IdUtil; +import org.nl.common.utils.SecurityUtils; +import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleinfoService; +import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo; +import org.nl.wms.warehouse_manage.enums.IOSEnum; import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService; +import org.nl.wms.warehouse_manage.service.dao.GroupPlate; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import org.springframework.util.Assert; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -30,8 +42,10 @@ import java.util.Set; @Slf4j public class GroupController { - @Resource + @Autowired private final IMdPbGroupplateService iMdPbGroupplateService; + @Autowired + private final IMdPbStoragevehicleinfoService iMdPbStoragevehicleinfoService; @GetMapping @Log("分页查询") @@ -39,6 +53,31 @@ public class GroupController { return new ResponseEntity<>(TableDataInfo.build(iMdPbGroupplateService.queryAll(whereJson, page)), HttpStatus.OK); } + + @PostMapping + @Log("新增组盘组盘") + public ResponseEntity create(@RequestBody JSONObject group) { + Assert.noNullElements(new Object[]{group,group.get("material_id"),group.get("storagevehicle_code"),group.get("qty")},"请求参数不能为空"); + GroupPlate groupPlate = group.toJavaObject(GroupPlate.class); + String storagevehicleCode = groupPlate.getStoragevehicle_code(); + { + iMdPbStoragevehicleinfoService.getByCode(storagevehicleCode); + int has = iMdPbGroupplateService.count(new LambdaUpdateWrapper() + .eq(GroupPlate::getStoragevehicle_code, groupPlate.getStoragevehicle_code()) + .lt(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库"))); + if (has>0){ + throw new BadRequestException("当前载具组盘信息已存在"); + } + } + groupPlate.setGroup_id(IdUtil.getStringId()); + groupPlate.setCreate_id(SecurityUtils.getCurrentUserId()); + groupPlate.setCreate_name(SecurityUtils.getCurrentUsername()); + groupPlate.setCreate_time(DateUtil.now()); + groupPlate.setStatus(IOSEnum.GROUP_PLATE_STATUS.code("组盘")); + iMdPbGroupplateService.save(groupPlate); + return new ResponseEntity<>(HttpStatus.OK); + } + @DeleteMapping @Log("删除组盘") public ResponseEntity delete(@RequestBody Set ids) { diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/StorageVehicleInfoController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/StorageVehicleInfoController.java index 83452be..90b8fe4 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/StorageVehicleInfoController.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/StorageVehicleInfoController.java @@ -1,11 +1,15 @@ package org.nl.wms.basedata_manage.controller; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; 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.CodeUtil; +import org.nl.common.utils.MapOf; import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleinfoService; import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase; import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo; @@ -43,8 +47,8 @@ public class StorageVehicleInfoController { @PostMapping @Log("新增载具") - public ResponseEntity create(@Validated @RequestBody MdPbStoragevehicleinfo dto) { - iMdPbStoragevehicleinfoService.create(dto); + public ResponseEntity create(@Validated @RequestBody JSONObject dto) { + JSONArray array = iMdPbStoragevehicleinfoService.create(dto); return new ResponseEntity<>(HttpStatus.CREATED); } @@ -62,4 +66,10 @@ public class StorageVehicleInfoController { return new ResponseEntity<>(HttpStatus.OK); } + @GetMapping("/getVehicle/{code}") + @Log("获取起始载具号") + public ResponseEntity getVehicle(@PathVariable String code) { + return new ResponseEntity<>(MapOf.of("value", CodeUtil.codeView(code)), HttpStatus.OK); + } + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/StructrelamaterialController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/StructrelamaterialController.java new file mode 100644 index 0000000..1a4a6a8 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/StructrelamaterialController.java @@ -0,0 +1,73 @@ + +package org.nl.wms.basedata_manage.controller; + + +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.wms.basedata_manage.service.StructrelamaterialService; +import org.nl.wms.basedata_manage.service.dao.Structrelamaterial; +import org.nl.wms.basedata_manage.service.dto.StructrelamaterialDto; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +/** +* @author zhouz +* @date 2021-12-09 +**/ +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/structrelamaterial") +@Slf4j +public class StructrelamaterialController { + + private final StructrelamaterialService structrelamaterialService; + + @GetMapping + @Log("查询物料存放设置") + public ResponseEntity pageQuery(@RequestParam Map whereJson, PageQuery page){ + return new ResponseEntity<>(TableDataInfo.build(structrelamaterialService.pageQuery(whereJson, page)),HttpStatus.OK); + } + + @PostMapping + @Log("新增物料存放设置") + public ResponseEntity create(@Validated @RequestBody Structrelamaterial dto){ + structrelamaterialService.create(dto); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改物料存放设置") + public ResponseEntity update(@Validated @RequestBody Structrelamaterial dto){ + structrelamaterialService.update(dto); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除物料存放设置") + @DeleteMapping + public ResponseEntity delete(@RequestBody String[] ids) { + structrelamaterialService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PostMapping("/insertSet") + @Log("插入物料存放设置") + public ResponseEntity insertSet(@RequestBody Map whereJson){ + structrelamaterialService.insertSet(whereJson); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PostMapping("/delSet") + @Log("删除物料存放设置") + public ResponseEntity delSet(@RequestBody Map whereJson){ + structrelamaterialService.delSet(whereJson); + return new ResponseEntity<>(HttpStatus.OK); + } +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IEmBiDeviceinfoService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IEmBiDeviceinfoService.java new file mode 100644 index 0000000..3082efe --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IEmBiDeviceinfoService.java @@ -0,0 +1,47 @@ +package org.nl.wms.basedata_manage.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.common.domain.query.PageQuery; +import org.nl.wms.basedata_manage.service.dao.EmBiDeviceinfo; + +import java.util.Map; +import java.util.Set; + +/** + *

+ * 生产设备基础信息表 服务类 + *

+ * + * @author Liuxy + * @since 2025-05-14 + */ +public interface IEmBiDeviceinfoService extends IService { + + /** + * 分页查询 + * @param whereJson : {查询参数} + * @param pageable : 分页对象 + * @return 返回结果 + */ + IPage queryAll(Map whereJson, PageQuery pageable); + + /** + * 新增设备 + * @param dto 实体类 + */ + void create(EmBiDeviceinfo dto); + + /** + * 修改设备 + * @param dto 实体类 + */ + void update(EmBiDeviceinfo dto); + + /** + * 删除设备 + * @param ids 设备标识集合 + */ + void delete(Set ids); + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdPbStoragevehicleinfoService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdPbStoragevehicleinfoService.java index e4c45c5..b0607fc 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdPbStoragevehicleinfoService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdPbStoragevehicleinfoService.java @@ -1,5 +1,7 @@ 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; import org.nl.common.domain.query.PageQuery; @@ -30,7 +32,7 @@ public interface IMdPbStoragevehicleinfoService extends IService { * 入库规则 */ List inBoundSectDiv(StrategyStructParam param); + + void changeStruct(StructattrChangeDto changeDto); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/StructrelamaterialService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/StructrelamaterialService.java new file mode 100644 index 0000000..b788309 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/StructrelamaterialService.java @@ -0,0 +1,74 @@ + +package org.nl.wms.basedata_manage.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.common.domain.query.PageQuery; +import org.nl.wms.basedata_manage.service.dao.Structattr; +import org.nl.wms.basedata_manage.service.dao.Structrelamaterial; +import org.nl.wms.basedata_manage.service.dto.StructrelamaterialDto; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Map; + +/** +* @description 服务接口 +* @author zhouz +* @date 2021-12-09 +**/ +public interface StructrelamaterialService extends IService { + + /** + * 查询数据分页 + * @param whereJson 条件 + * @param page 分页参数 + * @return Map + */ + IPage pageQuery(Map whereJson, PageQuery page); + + /** + * 查询所有数据不分页 + * @param whereJson 条件参数 + * @return List + */ + List queryAll(Map whereJson); + + /** + * 根据ID查询 + * @param material_type_id ID + * @return Structrelamaterial + */ + Structrelamaterial findById(String material_type_id); + + /** + * 根据编码查询 + * @param code code + * @return Structrelamaterial + */ + Structrelamaterial findByCode(String code); + + + /** + * 创建 + * @param dto / + */ + void create(Structrelamaterial dto); + + /** + * 编辑 + * @param dto / + */ + void update(Structrelamaterial dto); + + /** + * 多选删除 + * @param ids / + */ + void deleteAll(String[] ids); + + void insertSet(Map whereJson); + + void delSet(Map whereJson); + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/EmBiDeviceinfo.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/EmBiDeviceinfo.java new file mode 100644 index 0000000..ada3c17 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/EmBiDeviceinfo.java @@ -0,0 +1,126 @@ +package org.nl.wms.basedata_manage.service.dao; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** + *

+ * 生产设备基础信息表 + *

+ * + * @author Liuxy + * @since 2025-05-14 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("em_bi_deviceinfo") +public class EmBiDeviceinfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 设备标识 + */ + @TableId(value = "device_id") + private String device_id; + + /** + * 设备编码 + */ + private String device_code; + + /** + * 设备名称 + */ + private String device_name; + + /** + * 设备型号 + */ + private String device_model; + + /** + * 设备规格 + */ + private String device_specification; + + /** + * 供应商 + */ + private String manufacturer; + + /** + * 备注 + */ + private String remark; + + /** + * 是否启用 + */ + private String is_used; + + /** + * 外部编码 + */ + private String extend_code; + + /** + * 创建人 + */ + private String create_id; + + /** + * 创建人姓名 + */ + private String create_name; + + /** + * 创建时间 + */ + private String create_time; + + /** + * 修改人 + */ + private String update_optid; + + /** + * 修改人名称 + */ + private String update_optname; + + /** + * 修改时间 + */ + private String update_time; + + /** + * 是否删除 + */ + private String is_delete; + + /** + * 工厂 + */ + private String factory; + + /** + * 生产规划 + */ + private String manufactureplanning; + + /** + * 生产区域 + */ + private String manufacturearea; + + /** + * 外部设备编码 + */ + private String extend_code_mes; + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/StructattrVechielDto.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/StructattrVechielDto.java index e6a8533..0ad847c 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/StructattrVechielDto.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/StructattrVechielDto.java @@ -16,41 +16,21 @@ public class StructattrVechielDto extends GroupPlate { /** * 仓位标识 */ - private String id; - /** - * 载具物料id - */ - private String vm_id; - /** - * 入库类型 - */ - private String source_form_type; + private String struct_id; /** * 仓位编码 */ private String struct_code; - - /** - * 仓位名称 - */ - private String struct_name; - /** * 库区标识 */ private String sect_code; - /** * 仓库标识 */ private String stor_code; - /** - * 容量 - */ - private Integer capacity; - /** * 宽度 */ @@ -71,21 +51,6 @@ public class StructattrVechielDto extends GroupPlate { */ private Integer weight; - /** - * 起始X坐标 - */ - private BigDecimal xqty; - - /** - * 起始Y坐标 - */ - private BigDecimal yqty; - - /** - * 起始Z坐标 - */ - private BigDecimal zqty; - /** * 排 */ @@ -111,21 +76,6 @@ public class StructattrVechielDto extends GroupPlate { */ private String control_code; - /** - * 创建人 - */ - private String create_id; - - /** - * 创建人姓名 - */ - private String create_name; - - /** - * 创建时间 - */ - private String create_time; - /** * 是否临时仓位 */ @@ -149,33 +99,7 @@ public class StructattrVechielDto extends GroupPlate { /** * 存储载具号 */ - private String vehicle_code; - - /** - * 备注 - */ - private String remark; - - /** - * 背景图片 - */ - private String back_ground_pic; - - /** - * 前景色 - */ - private String front_ground_color; - - /** - * 背景色 - */ - private String back_ground_color; - - /** - * 字体显示方向 - */ - private String font_direction_scode; - + private String storagevehicle_code; /** * 物料编码 diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/Structrelamaterial.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/Structrelamaterial.java new file mode 100644 index 0000000..5ed125d --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/Structrelamaterial.java @@ -0,0 +1,29 @@ +package org.nl.wms.basedata_manage.service.dao; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("st_ivt_structrelamaterial") +public class Structrelamaterial implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("materset_id") + private String materset_id; + + private String sect_id; + + private String material_type_id; + + private String set_id; + + private String set_name; + + private String set_time; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/BsrealStorattrMapper.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/BsrealStorattrMapper.java index bb8e90d..519c09a 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/BsrealStorattrMapper.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/BsrealStorattrMapper.java @@ -7,6 +7,9 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.nl.wms.basedata_manage.service.dao.BsrealStorattr; import org.nl.wms.basedata_manage.service.dao.BsrealStorattrDto; +import org.nl.wms.bigscreen_manage.service.dto.IvtAnalyse; + +import java.util.List; /** * @author dsh @@ -16,4 +19,6 @@ import org.nl.wms.basedata_manage.service.dao.BsrealStorattrDto; public interface BsrealStorattrMapper extends BaseMapper { IPage queryAllByPage(Page page, @Param("search") String search); + + List sumMaterQty(String storCode); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/BsrealStorattrMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/BsrealStorattrMapper.xml index e7e5217..9d312b9 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/BsrealStorattrMapper.xml +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/BsrealStorattrMapper.xml @@ -14,4 +14,23 @@ ORDER BY stor.update_time Desc + + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/EmBiDeviceinfoMapper.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/EmBiDeviceinfoMapper.java new file mode 100644 index 0000000..3e95b8b --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/EmBiDeviceinfoMapper.java @@ -0,0 +1,16 @@ +package org.nl.wms.basedata_manage.service.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.wms.basedata_manage.service.dao.EmBiDeviceinfo; + +/** + *

+ * 生产设备基础信息表 Mapper 接口 + *

+ * + * @author author + * @since 2025-05-14 + */ +public interface EmBiDeviceinfoMapper extends BaseMapper { + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/EmBiDeviceinfoMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/EmBiDeviceinfoMapper.xml new file mode 100644 index 0000000..000720f --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/EmBiDeviceinfoMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StructattrMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StructattrMapper.xml index ad8ae03..3028084 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StructattrMapper.xml +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StructattrMapper.xml @@ -7,9 +7,13 @@ gro.frozen_qty, gro.create_time, gro.qty_unit_name, + gro.qty_unit_id, gro.material_id, gro.pcsn, gro.group_id, + gro.ext_code, + gro.ext_type, + gro.group_id, mater.material_code, mater.material_name, ivt.* diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StructrelamaterialMapper.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StructrelamaterialMapper.java new file mode 100644 index 0000000..6907c9b --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StructrelamaterialMapper.java @@ -0,0 +1,25 @@ +package org.nl.wms.basedata_manage.service.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.nl.wms.basedata_manage.service.dao.Structattr; +import org.nl.wms.basedata_manage.service.dao.StructattrVechielDto; +import org.nl.wms.basedata_manage.service.dao.Structrelamaterial; +import org.nl.wms.basedata_manage.service.dto.QueryPageParam; + +import java.util.List; +import java.util.Map; + +/** + * @author dsh + * 2025/5/15 + */ +@Mapper +public interface StructrelamaterialMapper extends BaseMapper{ + + IPage pagequery(IPage pages, @Param("paramMap") QueryPageParam paramMap); + + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StructrelamaterialMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StructrelamaterialMapper.xml new file mode 100644 index 0000000..0016e1e --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StructrelamaterialMapper.xml @@ -0,0 +1,31 @@ + + + + + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/QueryPageParam.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/QueryPageParam.java new file mode 100644 index 0000000..af196db --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/QueryPageParam.java @@ -0,0 +1,19 @@ +package org.nl.wms.basedata_manage.service.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author: lyd + * @Date: 2025/6/18 + */ +@Data +public class QueryPageParam implements Serializable { + private String stor_id; + private String sect_id; + private String classIds; + + private String search; + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StrategyStructMaterialVO.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StrategyStructMaterialVO.java index df23140..d8916af 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StrategyStructMaterialVO.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StrategyStructMaterialVO.java @@ -6,26 +6,37 @@ import java.math.BigDecimal; @Data public class StrategyStructMaterialVO { - + /** + * 分配的货位的仓库库区编码 + */ + private String stor_id; + private String stor_code; + private String stor_name; + private String sect_id; private String sect_code; + private String sect_name; /** * 仓位编码 */ private String struct_code; + private String struct_id; + private String struct_name; /** * 锁定类型 */ private String lock_type; /** - * 载具编码 + * 分配的载具编码 */ + private String group_id; private String storagevehicle_code; /** * 物料标识 */ private String material_code; + private String material_id; /** * 批次 @@ -33,13 +44,15 @@ public class StrategyStructMaterialVO { private String pcsn; /** - * 组盘数量 + * 托盘物料数量 */ private BigDecimal qty; /** - * 当前仓库冻结数 + * 当前托盘分配数量 */ private BigDecimal frozen_qty; + private String qty_unit_id; + private String qty_unit_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 72ba054..e0f4241 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 @@ -25,6 +25,7 @@ public class StrategyStructParam { * 物料标识 */ private String material_code; + private String material_id; /** * 批次 diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StructattrChangeDto.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StructattrChangeDto.java new file mode 100644 index 0000000..8cbc408 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StructattrChangeDto.java @@ -0,0 +1,18 @@ +package org.nl.wms.basedata_manage.service.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class StructattrChangeDto { + String inv; + String structCode; + String storagevehicleCode; + Boolean inBound; + String taskType; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StructrelamaterialDto.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StructrelamaterialDto.java new file mode 100644 index 0000000..613c2b7 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StructrelamaterialDto.java @@ -0,0 +1,30 @@ +package org.nl.wms.basedata_manage.service.dto; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; + +import java.io.Serializable; + +/** +* @description / +* @author zhouz +* @date 2021-12-09 +**/ +@Data +public class StructrelamaterialDto implements Serializable { + + /** 防止精度丢失 */ + @JsonSerialize(using= ToStringSerializer.class) + private Long sect_id; + + /** 防止精度丢失 */ + @JsonSerialize(using= ToStringSerializer.class) + private Long material_type_id; + + private Long set_id; + + private String set_name; + + private String set_time; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/EmBiDeviceinfoServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/EmBiDeviceinfoServiceImpl.java new file mode 100644 index 0000000..b5450e8 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/EmBiDeviceinfoServiceImpl.java @@ -0,0 +1,96 @@ +package org.nl.wms.basedata_manage.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +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.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.wms.basedata_manage.enums.BaseDataEnum; +import org.nl.wms.basedata_manage.service.IEmBiDeviceinfoService; +import org.nl.wms.basedata_manage.service.dao.EmBiDeviceinfo; +import org.nl.wms.basedata_manage.service.dao.mapper.EmBiDeviceinfoMapper; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Map; +import java.util.Set; + +/** + *

+ * 生产设备基础信息表 服务实现类 + *

+ * + * @author Liuxy + * @since 2025-05-14 + */ +@Service +public class EmBiDeviceinfoServiceImpl extends ServiceImpl implements IEmBiDeviceinfoService { + + @Override + public IPage queryAll(Map whereJson, PageQuery page) { + // 查询条件 + LambdaQueryWrapper queryWrapper = new QueryWrapper().lambda(); + String search = MapUtil.getStr(whereJson, "search"); + + if (ObjectUtil.isNotEmpty(search)) { + queryWrapper.likeRight(EmBiDeviceinfo::getDevice_code, search) + .or(item -> item.likeRight(EmBiDeviceinfo::getDevice_name, search)); + } + queryWrapper.eq(EmBiDeviceinfo::getIs_delete, BaseDataEnum.IS_YES_NOT.code("否")); + queryWrapper.orderByDesc(EmBiDeviceinfo::getUpdate_time); + + return this.baseMapper.selectPage(new Page<>(page.getPage() + 1, page.getSize()), + queryWrapper + ); + } + + @Override + @Transactional + public void create(EmBiDeviceinfo dto) { + EmBiDeviceinfo emBiDeviceinfo = this.baseMapper.selectOne( + new QueryWrapper().lambda() + .eq(EmBiDeviceinfo::getDevice_code, dto.getDevice_code()) + ); + if (ObjectUtil.isNotEmpty(emBiDeviceinfo)) { + throw new BadRequestException("当前设备编码已存在【"+dto.getDevice_code()+"】"); + } + + // 新增 + dto.setDevice_id(IdUtil.getStringId()); + dto.setCreate_id(SecurityUtils.getCurrentUserId()); + dto.setCreate_name(SecurityUtils.getCurrentNickName()); + dto.setCreate_time(DateUtil.now()); + dto.setUpdate_optid(SecurityUtils.getCurrentUserId()); + dto.setUpdate_optname(SecurityUtils.getCurrentNickName()); + dto.setUpdate_time(DateUtil.now()); + this.save(dto); + } + + @Override + @Transactional + public void update(EmBiDeviceinfo dto) { + EmBiDeviceinfo emBiDeviceinfo = this.baseMapper.selectById(dto.getDevice_id()); + if (ObjectUtil.isEmpty(emBiDeviceinfo)) { + throw new BadRequestException("被删除或无权限,操作失败!"); + } + + // 修改 + dto.setUpdate_optid(SecurityUtils.getCurrentUserId()); + dto.setUpdate_optname(SecurityUtils.getCurrentNickName()); + dto.setUpdate_time(DateUtil.now()); + this.updateById(dto); + } + + @Override + @Transactional + public void delete(Set ids) { + this.baseMapper.deleteBatchIds(ids); + } +} 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 9367e45..b566cfa 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 @@ -3,6 +3,8 @@ package org.nl.wms.basedata_manage.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -10,12 +12,16 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.nl.common.domain.query.PageQuery; import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.CodeUtil; import org.nl.common.utils.IdUtil; import org.nl.common.utils.SecurityUtils; import org.nl.wms.basedata_manage.enums.BaseDataEnum; import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleinfoService; import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo; import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleinfoMapper; +import org.nl.wms.system_manage.service.dict.ISysDictService; +import org.nl.wms.system_manage.service.dict.dao.Dict; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -32,6 +38,8 @@ import java.util.Set; */ @Service public class MdPbStoragevehicleinfoServiceImpl extends ServiceImpl implements IMdPbStoragevehicleinfoService { + @Autowired + private ISysDictService dictService; @Override public IPage queryAll(Map whereJson, PageQuery page) { @@ -55,27 +63,44 @@ public class MdPbStoragevehicleinfoServiceImpl extends ServiceImpl().lambda() - .eq(MdPbStoragevehicleinfo::getStoragevehicle_code, dto.getStoragevehicle_code()) + .eq(MdPbStoragevehicleinfo::getStoragevehicle_code, dto.getString("storagevehicle_code")) ); if (ObjectUtil.isNotEmpty(mdPbStoragevehicleinfo)) { - throw new BadRequestException("当前载具编码已存在【"+dto.getStoragevehicle_code()+"】"); + throw new BadRequestException("当前载具编码已存在【"+dto.getString("storagevehicle_code")+"】"); } - - // 新增 - dto.setStoragevehicle_id(IdUtil.getStringId()); - dto.setCreate_id(SecurityUtils.getCurrentUserId()); - dto.setCreate_name(SecurityUtils.getCurrentNickName()); - dto.setCreate_time(DateUtil.now()); - dto.setUpdate_optid(SecurityUtils.getCurrentUserId()); - dto.setUpdate_optname(SecurityUtils.getCurrentNickName()); - dto.setUpdate_time(DateUtil.now()); - this.save(dto); + //转编码类型: + Dict dict = dictService.getOne(new QueryWrapper().eq("para1", dto.getString("vehicle_type"))); + if (dict==null){ + throw new BadRequestException("此载具类型"+dto.getString("vehicle_type")+"没有配置字典值"); + } + JSONArray resultCodeArr = new JSONArray(); + MdPbStoragevehicleinfo vehicleInfo = dto.toJavaObject(MdPbStoragevehicleinfo.class); + int num = MapUtil.getInt(dto, "num"); + for (int i = 0; i < num; i++) { + MdPbStoragevehicleinfo entity = new MdPbStoragevehicleinfo(); + entity.setStoragevehicle_id(IdUtil.getStringId()); + entity.setStoragevehicle_code(CodeUtil.getNewCode(dto.getString("vehicle_type"))); + entity.setStoragevehicle_name(dict.getLabel()); + entity.setCreate_name(SecurityUtils.getCurrentNickName()); + entity.setCreate_time(DateUtil.now()); + entity.setCreate_id(SecurityUtils.getCurrentUserId()); + entity.setIs_used(vehicleInfo.getIs_used()); + entity.setStoragevehicle_type(dict.getValue()); + entity.setVehicle_height(vehicleInfo.getVehicle_height()); + entity.setVehicle_width(vehicleInfo.getVehicle_width()); + entity.setVehicle_long(vehicleInfo.getVehicle_long()); + entity.setOverstruct_type(vehicleInfo.getOverstruct_type()); + entity.setOccupystruct_qty(vehicleInfo.getOccupystruct_qty()); + this.save(entity); + resultCodeArr.add(entity.getStoragevehicle_code()); + } + return resultCodeArr; } @Override 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 431a644..c2a2cb1 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 @@ -8,6 +8,7 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -28,11 +29,17 @@ import org.nl.wms.basedata_manage.service.dao.StructattrVechielDto; import org.nl.wms.basedata_manage.service.dao.mapper.StructattrMapper; import org.nl.wms.basedata_manage.service.dto.StrategyStructMaterialVO; import org.nl.wms.basedata_manage.service.dto.StrategyStructParam; +import org.nl.wms.basedata_manage.service.dto.StructattrChangeDto; import org.nl.wms.decision_manage.service.sectStrategy.IStSectStrategyService; import org.nl.wms.decision_manage.service.sectStrategy.dao.StSectStrategy; import org.nl.wms.decision_manage.service.strategyConfig.decisioner.Decisioner; import org.nl.wms.sch_manage.enums.StatusEnum; import org.nl.wms.warehouse_manage.enums.IOSEnum; +import org.nl.wms.warehouse_manage.record.service.IStIvtStructivtflowService; +import org.nl.wms.warehouse_manage.record.service.dao.StIvtStructivtflow; +import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService; +import org.nl.wms.warehouse_manage.service.dao.GroupPlate; +import org.nl.wms.warehouse_manage.service.dao.IOStorInv; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -40,6 +47,8 @@ import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -63,6 +72,12 @@ public class StructattrServiceImpl extends ServiceImpl inBoundSectDiv(StrategyStructParam param) { //批号,单据暂时不校验,具体业务具体校验 - Assert.noNullElements(new Object[]{param.getQty(),param.getMaterial_code(),param.getStor_code(),param.getSect_code()},"请求参数不能为空"); + Assert.noNullElements(new Object[]{param.getQty(),param.getMaterial_code(),param.getSect_code()},"请求参数不能为空"); StSectStrategy one = iStSectStrategyService.getOne(new LambdaQueryWrapper() .eq(StSectStrategy::getSect_code, param.getSect_code()) .eq(StSectStrategy::getStrategy_type, StatusEnum.STRATEGY_TYPE.code("入库"))); @@ -352,7 +367,6 @@ public class StructattrServiceImpl extends ServiceImpl query = new QueryWrapper() .eq("is_used", true) .eq("lock_type",IOSEnum.LOCK_TYPE.code("未锁定")) - .eq("stor_code", param.getStor_code()) .eq("sect_code", param.getSect_code()) .isNull("storagevehicle_code"); List list = this.list(query); @@ -367,4 +381,57 @@ public class StructattrServiceImpl extends ServiceImpl wrapper = new UpdateWrapper() + .set("update_time", now) + .set("lock_type", IOSEnum.LOCK_TYPE.code("未锁定")) + .set("storagevehicle_code", changeDto.getStoragevehicleCode()) + .eq("struct_code", changeDto.getStructCode()); + //如果是整出 + if (!changeDto.getInBound()) { + wrapper.set("storagevehicle_code", null); + } + this.update(wrapper); + List groupPlates = iMdPbGroupplateService.list(new QueryWrapper() + .eq("storagevehicle_code", changeDto.getStoragevehicleCode()) + .lt("status", IOSEnum.GROUP_PLATE_STATUS.code("出库"))); + List records = new ArrayList<>(); + //更新冻结数量 + Structattr structattr = this.getByCode(changeDto.getStructCode()); + for (GroupPlate vehicleMater : groupPlates) { + String vehicleCode = vehicleMater.getStoragevehicle_code(); + BigDecimal subtract = vehicleMater.getQty().subtract(vehicleMater.getFrozen_qty()); + //100-出50 = 50 + UpdateWrapper update = new UpdateWrapper() + .set("frozen_qty", 0) + .set("qty", subtract) + .set("update_time", now) + .eq("group_id", vehicleMater.getGroup_id()); + iMdPbGroupplateService.update(update); + StIvtStructivtflow record = new StIvtStructivtflow(); + record.setId(IdUtil.getStringId()); + record.setUpdate_time(now); + record.setVehicle_code(vehicleCode); + record.setMaterial_id(vehicleMater.getMaterial_id()); + record.setPcsn(vehicleMater.getPcsn()); + record.setQty(vehicleMater.getQty()); + record.setChange_qty(subtract); + record.setTask_type(changeDto.getTaskType()); + record.setFrozen_qty(vehicleMater.getFrozen_qty()); + record.setSource_form_id(changeDto.getInv()); + record.setUnit_id(vehicleMater.getQty_unit_id()); + record.setStruct_code(changeDto.getStructCode()); + record.setStor_code(structattr.getStor_code()); + record.setSect_code(structattr.getSect_code()); + record.setGrowth(changeDto.getInBound()); + records.add(record); + } + if (!CollectionUtils.isEmpty(records)){ + stIvtStructivtflowService.saveBatch(records); + } + } + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructrelamaterialServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructrelamaterialServiceImpl.java new file mode 100644 index 0000000..20f79b9 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructrelamaterialServiceImpl.java @@ -0,0 +1,154 @@ + +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.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +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.utils.IdUtil; +import org.nl.common.utils.SecurityUtils; +import org.nl.wms.basedata_manage.service.IStructattrService; +import org.nl.wms.basedata_manage.service.StructrelamaterialService; +import org.nl.wms.basedata_manage.service.dao.Structattr; +import org.nl.wms.basedata_manage.service.dao.Structrelamaterial; +import org.nl.wms.basedata_manage.service.dao.mapper.StructattrMapper; +import org.nl.wms.basedata_manage.service.dao.mapper.StructrelamaterialMapper; +import org.nl.wms.basedata_manage.service.dto.QueryPageParam; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.*; + +/** + * @author zhouz + * @description 服务实现 + * @date 2021-12-09 + **/ +@Service +@RequiredArgsConstructor +@Slf4j +public class StructrelamaterialServiceImpl extends ServiceImpl implements StructrelamaterialService { + + @Resource + private StructrelamaterialMapper structrelamaterialMapper; + @Override + public IPage pageQuery(Map whereJson, PageQuery page) { + String search = (String) whereJson.get("search"); + String material_type_id = (String) whereJson.get("material_type_id"); + String class_idStr = (String) whereJson.get("class_idStr"); + //处理物料当前节点的所有子节点 + if (!StrUtil.isEmpty(material_type_id)) { + //map.put("material_type_id", material_type_id); + //String classIds = classstandardService.getChildIdStr(material_type_id); + //map.put("classIds", classIds); + } else if (ObjectUtil.isNotEmpty(class_idStr)) { + // String classIds = classstandardService.getAllChildIdStr(class_idStr); + //map.put("classIds", classIds); + } + QueryPageParam param = new QueryPageParam(); + param.setSearch(search); + param.setSect_id((String) whereJson.get("sect_id")); + param.setStor_id((String) whereJson.get("stor_id")); + IPage pages = new Page<>(page.getPage() + 1, page.getSize()); + return structrelamaterialMapper.pagequery(pages, param); + } + + @Override + public List queryAll(Map whereJson) { + List list = structrelamaterialMapper.selectList(null); + return list; + } + + @Override + public Structrelamaterial findById(String id) { + return structrelamaterialMapper.selectById(id); + } + + @Override + public Structrelamaterial findByCode(String code) { + return structrelamaterialMapper.selectById(code); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void create(Structrelamaterial dto) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + + dto.setMaterset_id(IdUtil.getStringId()); + dto.setSet_id(currentUserId); + dto.setSet_name(nickName); + dto.setSet_time(now); + + structrelamaterialMapper.insert(dto); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(Structrelamaterial dto) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + + dto.setSet_id(currentUserId); + dto.setSet_name(nickName); + dto.setSet_time(now); + + structrelamaterialMapper.updateById(dto); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteAll(String[] ids) { + structrelamaterialMapper.deleteBatchIds(Arrays.asList(ids)); + } + + @Override + public void insertSet(Map whereJson) { + /* Long currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getNickName(); + String now = DateUtil.now(); + WQLObject mater = WQLObject.getWQLObject("ST_IVT_StructRelaMaterial"); + String sect_id = (String) whereJson.get("sect_id"); + ArrayList class_rows = (ArrayList) whereJson.get("class_rows"); + for (int i = 0; i < class_rows.size(); i++) { + HashMap class_row = class_rows.get(i); + JSONObject material_set = mater.query("sect_id = '" + sect_id + "' AND material_type_id = '" + class_row.get("class_id") + "'") + .uniqueResult(0); + if (material_set != null) { + HashMap update_map = new HashMap<>(); + update_map.put("set_id", currentUserId + ""); + update_map.put("set_name", nickName); + update_map.put("set_time", now); + mater.update(update_map, "sect_id = '" + sect_id + "' AND material_type_id = '" + class_row.get("class_id") + "'"); + } else { + JSONObject jo = new JSONObject(); + jo.put("sect_id", sect_id); + jo.put("material_type_id", class_row.get("class_id")); + jo.put("set_id", currentUserId + ""); + jo.put("set_name", nickName); + jo.put("set_time", now); + mater.insert(jo); + } + }*/ + } + + @Override + public void delSet(Map whereJson) { + String materset_id = (String) whereJson.get("materset_id"); + structrelamaterialMapper.deleteById(materset_id); + } + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/bigscreen_manage/controller/BigScreenController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/bigscreen_manage/controller/BigScreenController.java index a67ae74..922f436 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/bigscreen_manage/controller/BigScreenController.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/bigscreen_manage/controller/BigScreenController.java @@ -2,17 +2,24 @@ package org.nl.wms.bigscreen_manage.controller; import cn.dev33.satoken.annotation.SaIgnore; +import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.nl.common.base.TableDataInfo; import org.nl.common.logging.annotation.Log; import org.nl.wms.bigscreen_manage.service.BigScreenService; +import org.nl.wms.pda_manage.util.PdaResponse; import org.springframework.beans.factory.annotation.Autowired; 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 java.util.ArrayList; +import java.util.List; + /** *

* 大屏显示 控制层 @@ -33,8 +40,11 @@ public class BigScreenController { @PostMapping("/getData") @Log("大屏数据") @SaIgnore - public ResponseEntity getData() { - return new ResponseEntity<>(bigScreenService.getData(null), HttpStatus.OK); + public ResponseEntity getData(@RequestBody JSONObject stors) { + List list = new ArrayList<>(); + list.add("GW"); + List data = bigScreenService.getData(list); + return new ResponseEntity<>(PdaResponse.requestParamOk(data.get(0)), HttpStatus.OK); } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/bigscreen_manage/service/BigScreenService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/bigscreen_manage/service/BigScreenService.java index d402267..2d92d32 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/bigscreen_manage/service/BigScreenService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/bigscreen_manage/service/BigScreenService.java @@ -3,6 +3,8 @@ package org.nl.wms.bigscreen_manage.service; import com.alibaba.fastjson.JSONObject; +import java.util.List; + /** *

* 大屏显示 服务类 @@ -18,5 +20,5 @@ public interface BigScreenService { *根据配置的仓库 * @return PdaResponse */ - JSONObject getData(String[] stors); + List getData(List stors); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/bigscreen_manage/service/dto/IvtAnalyse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/bigscreen_manage/service/dto/IvtAnalyse.java new file mode 100644 index 0000000..737f752 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/bigscreen_manage/service/dto/IvtAnalyse.java @@ -0,0 +1,11 @@ +package org.nl.wms.bigscreen_manage.service.dto; + +import lombok.Data; + +@Data +public class IvtAnalyse { + private String stor_code; + private String material_id; + private String material_name; + private Integer sum_qty; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/bigscreen_manage/service/impl/BigScreenServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/bigscreen_manage/service/impl/BigScreenServiceImpl.java index 7db6d6c..e2be301 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/bigscreen_manage/service/impl/BigScreenServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/bigscreen_manage/service/impl/BigScreenServiceImpl.java @@ -7,20 +7,26 @@ import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import org.nl.common.utils.MapOf; + import org.nl.wms.basedata_manage.service.IStructattrService; import org.nl.wms.basedata_manage.service.dao.Structattr; -import org.nl.wms.basedata_manage.service.dao.StructattrVechielDto; -import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleextMapper; +import org.nl.wms.basedata_manage.service.dao.mapper.BsrealStorattrMapper; import org.nl.wms.bigscreen_manage.service.BigScreenService; -import org.nl.wms.pda_manage.util.PdaResponse; +import org.nl.wms.bigscreen_manage.service.dto.IvtAnalyse; import org.nl.wms.sch_manage.enums.TaskStatus; import org.nl.wms.sch_manage.service.ISchBaseTaskService; import org.nl.wms.sch_manage.service.dao.SchBaseTask; -import org.nl.wms.system_manage.service.dict.dao.mapper.SysDictMapper; +import org.nl.wms.warehouse_manage.enums.IOSConstant; +import org.nl.wms.warehouse_manage.enums.IOSEnum; +import org.nl.wms.warehouse_manage.service.IOutBillService; +import org.nl.wms.warehouse_manage.service.dao.IOStorInv; +import org.nl.wms.warehouse_manage.service.dao.IOStorInvDis; +import org.nl.wms.warehouse_manage.service.dao.mapper.IOStorInvDisMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -36,40 +42,44 @@ import java.util.stream.Collectors; @Service public class BigScreenServiceImpl implements BigScreenService { - /** - * 仓位服务 - */ @Autowired private IStructattrService iStructattrService; - /** - * 载具扩展属性mapper服务 - */ - @Autowired - private MdPbStoragevehicleextMapper mdPbStoragevehicleextMapper; + @Resource + private IOutBillService iOutBillService; + + @Resource + private BsrealStorattrMapper screenMapper; + + @Resource + private IOStorInvDisMapper ioStorInvDisMapper; - /** - * 任务服务 - */ @Autowired private ISchBaseTaskService iSchBaseTaskService; @Override - public JSONObject getData(String[] stors) { + public List getData(List stors) { // String storCode = "GW"; - JSONObject result = new JSONObject(); -// //1.【货位使用】数据 -// result.put("pointUse", pointUse(storCode)); + List result = new ArrayList<>(); + if (CollectionUtils.isEmpty(stors)){ + return result; + } + for (String storCode : stors) { + JSONObject item = new JSONObject(); + //1.【货位使用】数据 + item.put("pointUse", pointUse(storCode)); // //2.【实时库存分析】数据 -// result.put("ivtAnalyse", ivtAnalyse(storCode)); -// //3.【出入库趋势】数据 -// result.put("inAndOutTrend", inAndOutTrend(storCode)); + item.put("ivtAnalyse", ivtAnalyse(storCode)); + //3.【出入库趋势】数据 + item.put("inAndOutTrend", inAndOutTrend(storCode)); // //4.【今日出入库】数据 -// result.put("toDayInAndOut", toDayInAndOut(storCode)); + item.put("toDayInAndOut", toDayInAndOut(storCode)); // //5.【今日出入库】数据 -// result.put("realTask", realTask(storCode)); -// //6.【未完成单据】数据 -// result.put("unIos", unIos(storCode)); + item.put("realTask", realTask(storCode)); + //6.【未完成单据】数据 + item.put("unIos", unIos(storCode)); + result.add(item); + } return result; } /** @@ -83,294 +93,273 @@ public class BigScreenServiceImpl implements BigScreenService { // * use_percentage: 百分比(使用货位百分比) // * } // */ -// private JSONObject pointUse(String storCode) { -// // 返回数据 -// JSONObject result = new JSONObject(); -// // 查询所有未删除且启用仓位 -// int emp_qty = iStructattrService.count( -// new QueryWrapper().lambda() -// .eq(Structattr::getIs_used, Boolean.TRUE) -// .eq(Structattr::getStor_code, storCode) -// .isNull(Structattr::getStoragevehicle_code)); -// int use_qty = iStructattrService.count( -// new QueryWrapper().lambda() -// .eq(Structattr::getIs_used, Boolean.TRUE) -// .eq(Structattr::getStor_code, storCode) -// .isNotNull(Structattr::getStoragevehicle_code)); -// int total_qty = iStructattrService.count( -// new QueryWrapper().lambda() -// .eq(Structattr::getIs_used, Boolean.TRUE) -// .eq(Structattr::getStor_code, storCode)); -// // 总货位数 -// result.put("total_qty", total_qty); -// // 已用货位数 -// result.put("use_qty", use_qty); -// // 空余货位 -// result.put("emp_qty", emp_qty); -// // 使用货位百分比 -// double use_percentage = NumberUtil.mul(NumberUtil.div(use_qty, total_qty), 100); -// result.put("use_percentage", NumberUtil.round(use_percentage, 2)); -// return result; -// } -// -// /** -// * 实时库存分析 -// * -// * @return JSONObject { -// * total_qty: 总数 -// * data: [ -// * material_name: 物料名称 -// * ivt_qty: 库存数量 -// * percentage: 百分比 -// * ] -// * } -// */ -// private JSONObject ivtAnalyse(String storCode) { -// // 返回数据 -// JSONObject result = new JSONObject(); -// // 查询所有库存 -// List vechielDtos = iStructattrService.collectVechicle(MapOf.of("stor_code", storCode)); -// // 总数 -// double total_qty = ivtList.stream() -// .map(row -> row.getDoubleValue("canuse_qty")) -// .reduce(Double::sum).orElse(0.0); -// result.put("total_qty", NumberUtil.round(total_qty, 2)); -// -// // 查询排名前五的物料库存 -// List topFiveList; -// List otherList = null; -// if (ivtList.size() < 5) { -// topFiveList = ivtList; -// } else { -// topFiveList = ivtList.subList(0, 5); -// otherList = ivtList.subList(5, ivtList.size()); -// } -// // 组织数据(物料前五) -// for (JSONObject json : topFiveList) { -// // 库存数量 -// json.put("ivt_qty", NumberUtil.round(json.getDoubleValue("canuse_qty"), 2)); -// // 百分比 -// double percentage = NumberUtil.mul(NumberUtil.div(json.getDoubleValue("canuse_qty"), total_qty), 100); -// json.put("percentage", NumberUtil.round(percentage, 2)); -// } -// -// // 计算其他物料 -// if (ObjectUtil.isNotEmpty(otherList)) { -// JSONObject jsonOther = new JSONObject(); -// jsonOther.put("material_name", "其他"); -// double ivt_qty = otherList.stream() -// .map(row -> row.getDoubleValue("canuse_qty")) -// .reduce(Double::sum).orElse(0.0); -// jsonOther.put("ivt_qty", NumberUtil.round(ivt_qty, 2)); -// // 百分比 -// double percentage = NumberUtil.mul(NumberUtil.div(ivt_qty, total_qty), 100); -// jsonOther.put("percentage", NumberUtil.round(percentage, 2)); -// topFiveList.add(jsonOther); -// } -// -// result.put("data", topFiveList); -// return result; -// } -// -// /** -// * 出入库趋势 -// * -// * @return JSONObject { -// * in: [{date:日期,qty:数量}] -// * out: [{date:日期,qty:数量}] -// * } -// */ -// private JSONObject inAndOutTrend() { -// // 获取七天天数集合 -// DateTime dateTime = DateUtil.offsetDay(DateUtil.parseDate(DateUtil.today()), -6); -// List dateList = DateUtil.rangeToList(dateTime, DateUtil.parse(DateUtil.today()), DateField.DAY_OF_YEAR).stream() -// .map(DateTime::toString) -// .map(row -> row.substring(0, 10)) -// .collect(Collectors.toList()); -// // 查询七天内的出入库数据 -// List allIosList = iOutBillService.list( -// new QueryWrapper().lambda() -// .in(IOStorInv::getBiz_date, dateList) -// .eq(IOStorInv::getIs_delete, IOSConstant.IS_DELETE_NO) -// .eq(IOStorInv::getBill_status, IOSEnum.BILL_STATUS.code("完成")) -// ); -// -// // 查询入库单据 -// List inIosList = allIosList.stream() -// .filter(row -> row.getIo_type().equals(IOSEnum.IO_TYPE.code("入库"))) -// .collect(Collectors.toList()); -// // 查询出库单据 -// List outIosList = allIosList.stream() -// .filter(row -> row.getIo_type().equals(IOSEnum.IO_TYPE.code("出库"))) -// .collect(Collectors.toList()); -// // 组织数据 -// List inList = new ArrayList<>(); -// List outList = new ArrayList<>(); -// for (String date : dateList) { -// // 处理入库数量 -// JSONObject jsonIn = new JSONObject(); -// jsonIn.put("date", date); -// double in_qty = inIosList.stream() -// .filter(row -> row.getBiz_date().equals(date)) -// .map(row -> row.getTotal_qty().doubleValue()) -// .reduce(Double::sum).orElse(0.00); -// jsonIn.put("qty", NumberUtil.round(in_qty, 2)); -// inList.add(jsonIn); -// -// // 处理出库数据 -// JSONObject jsonOut = new JSONObject(); -// jsonOut.put("date", date); -// double out_qty = outIosList.stream() -// .filter(row -> row.getBiz_date().equals(date)) -// .map(row -> row.getTotal_qty().doubleValue()) -// .reduce(Double::sum).orElse(0.00); -// jsonOut.put("qty", NumberUtil.round(out_qty, 2)); -// outList.add(jsonOut); -// } -// -// JSONObject result = new JSONObject(); -// result.put("in", inList); -// result.put("out", outList); -// return result; -// } -// -// /** -// * 今日出入库 -// * -// * @return JSONObject { -// * in: {total_qty:总数量,vehicle_qty:托盘数量} -// * out: {total_qty:总数量,vehicle_qty:托盘数量} -// * } -// */ -// private JSONObject toDayInAndOut() { -// // 查询今天出入库单据 -// List inList = iOutBillService.list( -// new QueryWrapper().lambda() -// .eq(IOStorInv::getBiz_date, DateUtil.today()) -// .eq(IOStorInv::getIs_delete, IOSConstant.IS_DELETE_NO) -// .eq(IOStorInv::getIo_type, IOSEnum.IO_TYPE.code("入库")) -// .eq(IOStorInv::getBill_status, IOSEnum.BILL_STATUS.code("完成")) -// ); -// // 查询今天出库单据 -// List outList = iOutBillService.list( -// new QueryWrapper().lambda() -// .eq(IOStorInv::getBiz_date, DateUtil.today()) -// .eq(IOStorInv::getIs_delete, IOSConstant.IS_DELETE_NO) -// .eq(IOStorInv::getIo_type, IOSEnum.IO_TYPE.code("出库")) -// .eq(IOStorInv::getBill_status, IOSEnum.BILL_STATUS.code("完成")) -// ); -// -// // 入库 -// JSONObject jsonIn = new JSONObject(); -// // 总数量 -// double total_qty_in = inList.stream() -// .map(row -> row.getTotal_qty().doubleValue()) -// .reduce(Double::sum).orElse(0.0); -// jsonIn.put("total_qty", NumberUtil.round(total_qty_in, 2)); -// -// // 托盘数 -// List inDisList = new ArrayList<>(); -// if (ObjectUtil.isNotEmpty(inList)) { -// inDisList = ioStorInvDisMapper.selectList( -// new QueryWrapper().lambda() -// .in(IOStorInvDis::getIostorinv_id, inList.stream() -// .map(IOStorInv::getIostorinv_id) -// .collect(Collectors.toList()) -// ) -// ); -// } -// jsonIn.put("vehicle_qty", inDisList.size()); -// -// // 出库 -// JSONObject jsonOut = new JSONObject(); -// // 总数量 -// double total_qty_out = outList.stream() -// .map(row -> row.getTotal_qty().doubleValue()) -// .reduce(Double::sum).orElse(0.0); -// jsonOut.put("total_qty", NumberUtil.round(total_qty_out, 2)); -// // 托盘数 -// List outDisList = new ArrayList<>(); -// if (ObjectUtil.isNotEmpty(outList)) { -// outDisList = ioStorInvDisMapper.selectList( -// new QueryWrapper().lambda() -// .in(IOStorInvDis::getIostorinv_id, outList.stream() -// .map(IOStorInv::getIostorinv_id) -// .collect(Collectors.toList()) -// ) -// ); -// } -// jsonOut.put("vehicle_qty", outDisList.size()); -// -// JSONObject result = new JSONObject(); -// result.put("in", jsonIn); -// result.put("out", jsonOut); -// return result; -// } -// -// /** -// * 实时任务 -// * -// * @return List { -// * 任务实体列 -// * } -// */ -// private List realTask() { -// List list = iSchBaseTaskService.list( -// new QueryWrapper().lambda() -// .in(SchBaseTask::getTask_status, TaskStatus.CREATE.getCode() -// , TaskStatus.ISSUED.getCode(), TaskStatus.EXECUTING.getCode() -// ) -// .eq(SchBaseTask::getIs_delete, IOSConstant.IS_DELETE_NO) -// ); -// list.stream().forEach(item -> { -// if (item.getTask_status().equals(TaskStatus.CREATE.getCode())) { -// item.setTask_status(TaskStatus.CREATE.getName()); -// } -// if (item.getTask_status().equals(TaskStatus.ISSUED.getCode())) { -// item.setTask_status(TaskStatus.ISSUED.getName()); -// } -// if (item.getTask_status().equals(TaskStatus.EXECUTING.getCode())) { -// item.setTask_status(TaskStatus.EXECUTING.getName()); -// } -// }); -// -// return list; -// } -// -// /** -// * 未完成单据 -// * -// * @return List{ -// * 出入库实体类 -// * } -// */ -// private List unIos() { -// List dicts = sysDictMapper.selectList( -// new QueryWrapper().lambda() -// .in(Dict::getCode, "ST_INV_IN_TYPE", "ST_INV_OUT_TYPE") -// ); -// -// List list = iOutBillService.list( -// new QueryWrapper().lambda() -// .eq(IOStorInv::getIs_delete, IOSConstant.IS_DELETE_NO) -// .ne(IOStorInv::getBill_status, IOSEnum.BILL_STATUS.code("完成")) -// ); -// list.stream().forEach(item -> { -// item.setIo_type(item.getIo_type().equals(IOSEnum.IO_TYPE.code("入库")) ? IOSConstant.IOS_IO_TYPE_IN : IOSConstant.IOS_IO_TYPE_OUT); -// if (item.getBill_status().equals(IOSEnum.BILL_STATUS.code("生成"))) { -// item.setBill_status("生成"); -// } -// if (item.getBill_status().equals(IOSEnum.BILL_STATUS.code("分配中"))) { -// item.setBill_status("分配中"); -// } -// if (item.getBill_status().equals(IOSEnum.BILL_STATUS.code("分配完"))) { -// item.setBill_status("分配完"); -// } -// Dict dict = dicts.stream() -// .filter(row -> row.getValue().equals(item.getBill_type())) -// .findFirst().orElse(null); -// item.setBill_type(dict.getLabel()); -// }); -// return list; -// } + private JSONObject pointUse(String storCode) { + // 返回数据 + JSONObject result = new JSONObject(); + // 查询所有未删除且启用仓位 + int emp_qty = iStructattrService.count( + new QueryWrapper().lambda() + .eq(Structattr::getIs_used, Boolean.TRUE) + .eq(Structattr::getStor_code, storCode) + .isNull(Structattr::getStoragevehicle_code)); + int use_qty = iStructattrService.count( + new QueryWrapper().lambda() + .eq(Structattr::getIs_used, Boolean.TRUE) + .eq(Structattr::getStor_code, storCode) + .isNotNull(Structattr::getStoragevehicle_code)); + int total_qty = iStructattrService.count( + new QueryWrapper().lambda() + .eq(Structattr::getIs_used, Boolean.TRUE) + .eq(Structattr::getStor_code, storCode)); + // 总货位数 + result.put("total_qty", total_qty); + // 已用货位数 + result.put("use_qty", use_qty); + // 空余货位 + result.put("emp_qty", emp_qty); + // 使用货位百分比 + double use_percentage = NumberUtil.mul(NumberUtil.div(use_qty, total_qty), 100); + result.put("use_percentage", NumberUtil.round(use_percentage, 2)); + return result; + } + + /** + * 实时库存分析 + * + * @return JSONObject { + * total_qty: 总数 + * data: [ + * material_name: 物料名称 + * ivt_qty: 库存数量 + * percentage: 百分比 + * ] + * } + */ + private JSONObject ivtAnalyse(String storCode) { + JSONObject result = new JSONObject(); + List list = screenMapper.sumMaterQty(storCode); + int sum = list.stream().mapToInt(IvtAnalyse::getSum_qty).sum(); + result.put("total_qty", sum); + List topFiveList = new ArrayList<>(); + int i = 0; + int top5 = 0; + for (IvtAnalyse json : list) { + if (i==5){break;} + JSONObject item = new JSONObject(); + item.put("ivt_qty", json.getSum_qty()); + item.put("material_name", json.getMaterial_name()); + double percentage = NumberUtil.mul(json.getSum_qty()/sum, 100); + item.put("percentage", NumberUtil.round(percentage, 2)); + topFiveList.add(item); + i++; + top5 = top5+json.getSum_qty(); + } + if (sum>top5){ + JSONObject other = new JSONObject(); + other.put("ivt_qty", sum-top5); + other.put("material_name", "其他物料"); + other.put("percentage", NumberUtil.round(1-top5/sum, 2)); + topFiveList.add(other); + } + result.put("data", topFiveList); + return result; + } + + /** + * 出入库趋势 + * + * @return JSONObject { + * in: [{date:日期,qty:数量}] + * out: [{date:日期,qty:数量}] + * } + */ + private JSONObject inAndOutTrend(String storCode) { + // 获取七天天数集合 + DateTime dateTime = DateUtil.offsetDay(DateUtil.parseDate(DateUtil.today()), -6); + List dateList = DateUtil.rangeToList(dateTime, DateUtil.parse(DateUtil.today()), DateField.DAY_OF_YEAR).stream() + .map(DateTime::toString) + .map(row -> row.substring(0, 10)) + .collect(Collectors.toList()); + // 查询七天内的出入库数据 + List allIosList = iOutBillService.list( + new QueryWrapper().lambda() + .in(IOStorInv::getBiz_date, dateList) + .eq(IOStorInv::getIs_delete, IOSConstant.IS_DELETE_NO) + .eq(IOStorInv::getStor_code, storCode) + .eq(IOStorInv::getBill_status, IOSEnum.BILL_STATUS.code("完成")) + ); + // 查询入库单据 + List inIosList = allIosList.stream() + .filter(row -> row.getIo_type().equals(IOSEnum.IO_TYPE.code("入库"))) + .collect(Collectors.toList()); + // 查询出库单据 + List outIosList = allIosList.stream() + .filter(row -> row.getIo_type().equals(IOSEnum.IO_TYPE.code("出库"))) + .collect(Collectors.toList()); + // 组织数据 + List inList = new ArrayList<>(); + List outList = new ArrayList<>(); + for (String date : dateList) { + // 处理入库数量 + JSONObject jsonIn = new JSONObject(); + jsonIn.put("date", date); + double in_qty = inIosList.stream() + .filter(row -> row.getBiz_date().equals(date)) + .map(row -> row.getTotal_qty().doubleValue()) + .reduce(Double::sum).orElse(0.00); + jsonIn.put("qty", NumberUtil.round(in_qty, 2)); + inList.add(jsonIn); + + // 处理出库数据 + JSONObject jsonOut = new JSONObject(); + jsonOut.put("date", date); + double out_qty = outIosList.stream() + .filter(row -> row.getBiz_date().equals(date)) + .map(row -> row.getTotal_qty().doubleValue()) + .reduce(Double::sum).orElse(0.00); + jsonOut.put("qty", NumberUtil.round(out_qty, 2)); + outList.add(jsonOut); + } + + JSONObject result = new JSONObject(); + result.put("in", inList); + result.put("out", outList); + return result; + } + + /** + * 今日出入库 + * + * @return JSONObject { + * in: {total_qty:总数量,vehicle_qty:托盘数量} + * out: {total_qty:总数量,vehicle_qty:托盘数量} + * } + */ + private JSONObject toDayInAndOut(String storCode) { + // 查询今天出入库单据 + List inList = iOutBillService.list( + new QueryWrapper().lambda() + .eq(IOStorInv::getBiz_date, DateUtil.today()) + .eq(IOStorInv::getIs_delete, IOSConstant.IS_DELETE_NO) + .eq(IOStorInv::getStor_code, storCode) + .eq(IOStorInv::getIo_type, IOSEnum.IO_TYPE.code("入库")) + .eq(IOStorInv::getBill_status, IOSEnum.BILL_STATUS.code("完成")) + ); + // 查询今天出库单据 + List outList = iOutBillService.list( + new QueryWrapper().lambda() + .eq(IOStorInv::getBiz_date, DateUtil.today()) + .eq(IOStorInv::getIs_delete, IOSConstant.IS_DELETE_NO) + .eq(IOStorInv::getStor_code, storCode) + .eq(IOStorInv::getIo_type, IOSEnum.IO_TYPE.code("出库")) + .eq(IOStorInv::getBill_status, IOSEnum.BILL_STATUS.code("完成")) + ); + + // 入库 + JSONObject jsonIn = new JSONObject(); + // 总数量 + double total_qty_in = inList.stream() + .map(row -> row.getTotal_qty().doubleValue()) + .reduce(Double::sum).orElse(0.0); + jsonIn.put("total_qty", NumberUtil.round(total_qty_in, 2)); + + // 托盘数 + List inDisList = new ArrayList<>(); + if (ObjectUtil.isNotEmpty(inList)) { + inDisList = ioStorInvDisMapper.selectList( + new QueryWrapper().lambda() + .in(IOStorInvDis::getIostorinv_id, inList.stream() + .map(IOStorInv::getIostorinv_id) + .collect(Collectors.toList()) + ) + ); + } + jsonIn.put("vehicle_qty", inDisList.size()); + + // 出库 + JSONObject jsonOut = new JSONObject(); + // 总数量 + double total_qty_out = outList.stream() + .map(row -> row.getTotal_qty().doubleValue()) + .reduce(Double::sum).orElse(0.0); + jsonOut.put("total_qty", NumberUtil.round(total_qty_out, 2)); + // 托盘数 + List outDisList = new ArrayList<>(); + if (ObjectUtil.isNotEmpty(outList)) { + outDisList = ioStorInvDisMapper.selectList( + new QueryWrapper().lambda() + .in(IOStorInvDis::getIostorinv_id, outList.stream() + .map(IOStorInv::getIostorinv_id) + .collect(Collectors.toList()) + ) + ); + } + jsonOut.put("vehicle_qty", outDisList.size()); + + JSONObject result = new JSONObject(); + result.put("in", jsonIn); + result.put("out", jsonOut); + return result; + } + + /** + * 实时任务 + * + * @return List { + * 任务实体列 + * } + */ + private List realTask(String storCode) { + List list = iSchBaseTaskService.list( + new QueryWrapper().lambda() + .in(SchBaseTask::getTask_status, TaskStatus.CREATE.getCode() + , TaskStatus.ISSUED.getCode(), TaskStatus.EXECUTING.getCode() + ) + .eq(SchBaseTask::getIs_delete, IOSConstant.IS_DELETE_NO) + ); + list.stream().forEach(item -> { + if (item.getTask_status().equals(TaskStatus.CREATE.getCode())) { + item.setTask_status(TaskStatus.CREATE.getName()); + } + if (item.getTask_status().equals(TaskStatus.ISSUED.getCode())) { + item.setTask_status(TaskStatus.ISSUED.getName()); + } + if (item.getTask_status().equals(TaskStatus.EXECUTING.getCode())) { + item.setTask_status(TaskStatus.EXECUTING.getName()); + } + }); + + return list; + } + + /** + * 未完成单据 + * + * @return List{ + * 出入库实体类 + * } + */ + private List unIos(String storCode) { + + List list = iOutBillService.list( + new QueryWrapper().lambda() + .eq(IOStorInv::getIs_delete, IOSConstant.IS_DELETE_NO) + .eq(IOStorInv::getStor_code, storCode) + .ne(IOStorInv::getBill_status, IOSEnum.BILL_STATUS.code("完成")) + ); + list.stream().forEach(item -> { + item.setIo_type(item.getIo_type().equals(IOSEnum.IO_TYPE.code("入库"))?"入库":"出库"); + if (item.getBill_status().equals(IOSEnum.BILL_STATUS.code("生成"))) { + item.setBill_status("生成"); + } + if (item.getBill_status().equals(IOSEnum.BILL_STATUS.code("分配中"))) { + item.setBill_status("分配中"); + } + if (item.getBill_status().equals(IOSEnum.BILL_STATUS.code("分配完"))) { + item.setBill_status("分配完"); + } + item.setBill_type("dict.getLabel()"); + }); + return list; + } } 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 2ad50cf..3ddad27 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 @@ -7,7 +7,10 @@ import org.nl.common.exception.BadRequestException; import org.nl.common.utils.MapOf; import org.nl.wms.basedata_manage.service.IStructattrService; import org.nl.wms.basedata_manage.service.dao.StructattrVechielDto; +import org.nl.wms.basedata_manage.service.dto.StrategyStructMaterialVO; +import org.nl.wms.basedata_manage.service.dto.StrategyStructParam; import org.nl.wms.decision_manage.service.strategyConfig.decisioner.Decisioner; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -22,7 +25,7 @@ import java.util.stream.Collectors; */ @Service("fifo") @Slf4j -public class FIFORuleHandler extends Decisioner { +public class FIFORuleHandler extends Decisioner { /** * 出入库明细服务 @@ -31,118 +34,41 @@ public class FIFORuleHandler extends Decisioner handler(List list, JSONObject param) { + public List handler(List list, StrategyStructParam param) { //分配数量 - int plan_qty = param.getInteger("qty"); - int finalPlan_qty = plan_qty; //当前条件只有id,批次 log.info("---------执行fifo出库分配规则---------"); - List vechielDtos = iStructattrService.collectVechicle(MapOf.of("material_id", param.getString("material_id") - , "pcsn", param.getString("pcsn") - , "stor_code", param.getString("stor_code") - , "plan_qty", plan_qty + BigDecimal planQty = param.getQty(); + List vechielDtos = + iStructattrService.collectVechicle(MapOf.of("material_id", param.getMaterial_id() + , "pcsn", param.getPcsn() + , "stor_code", param.getStor_code() + , "sect_code", param.getSect_code() + , "plan_qty", planQty , "is_lock", "false" - , "order_by", "md_pb_vehicleMater.pcsn asc") + , "order_by", "gro.update_time asc") ); if (ObjectUtils.isEmpty(vechielDtos)) { throw new BadRequestException("当前出库策略:先进先出,库存分配失败,失败原因:库存不足!"); } - List disList = new ArrayList<>(); - Map> groupedMap = vechielDtos.stream() - .collect(Collectors.groupingBy( - StructattrVechielDto::getPcsn, - Collectors.collectingAndThen( - Collectors.toList(), - r -> r.stream() - .sorted(Comparator.comparing(StructattrVechielDto::getPcsn)) - .collect(Collectors.toList()) - ) - )); - LinkedHashMap> sortedGroupMap = groupedMap.entrySet().stream() - .sorted(Comparator.comparing(entry -> entry.getValue().get(0).getPcsn())) - .collect(Collectors.toMap( - Map.Entry::getKey, - Map.Entry::getValue, - (r, s) -> r, - LinkedHashMap::new - )); - for (Map.Entry> entry : sortedGroupMap.entrySet()) { - List sortedList = new ArrayList<>(entry.getValue()); - for (StructattrVechielDto structattr : sortedList) { - BigDecimal qty = structattr.getXqty() != null ? structattr.getQty() : BigDecimal.ZERO; - BigDecimal frozen = structattr.getFrozen_qty() != null ? structattr.getFrozen_qty() : BigDecimal.ZERO; - int available = qty.subtract(frozen).intValue(); - if (available <= 0) { - continue; - } - if (finalPlan_qty <= available) { - structattr.setFrozen_qty(frozen.add(new BigDecimal(finalPlan_qty))); - disList.add(structattr); - finalPlan_qty = 0; - break; - } else { - structattr.setFrozen_qty(frozen.add(new BigDecimal(available))); - disList.add(structattr); - finalPlan_qty -= available; - } - } - if (finalPlan_qty <= 0) { + List divStruct = new ArrayList<>(); + for (StructattrVechielDto vechielDto : vechielDtos) { + if (planQty.intValue()<=0){ break; } + BigDecimal qty = vechielDto.getQty(); + BigDecimal subQty = planQty.subtract(qty); + if (subQty.doubleValue()>=0){ + vechielDto.setFrozen_qty(vechielDto.getQty()); + }else { + vechielDto.setFrozen_qty(planQty); + } + planQty=subQty; + StrategyStructMaterialVO materialVO = new StrategyStructMaterialVO(); + BeanUtils.copyProperties(vechielDto,materialVO); + divStruct.add(materialVO); } - return disList; + return divStruct; } - /** - * 巷道均衡策略 - * - * @param list :仓位集合 - * @param param:物料相关信息、出入类型:{ ioType: 出入类型 - * materialId: 物料标识 - * ... - * } - * @return List :仓位集合 - */ - // @Override - // public List handler1(List list, JSONObject param) { - // // 判断仓位是否为空 - //// if (ObjectUtil.isEmpty(list)) { - //// throw new BadRequestException("库存分配失败:库存不足!"); - //// } - //// List need = list.stream().map(StructattrVechielDto::getStoragevehicle_code).collect(Collectors.toList()); - // //分配数量 - // int plan_qty = param.getInteger("qty"); - // //当前条件只有id,批次 - // log.info("---------执行fifo出库分配规则---------"); - // List vechielDtos = iStructattrService.collectVechicle(MapOf.of("material_id", param.getString("material_id") - // , "pcsn", param.getString("pcsn") - // , "stor_code", param.getString("stor_code") - // , "plan_qty", plan_qty - // , "is_lock", "false" - //// , "order_by","block_num asc,ABS(qty-#{plan_qty}) asc,update_time asc") - // , "order_by","block_num asc,ABS(qty-#{plan_qty}) asc,update_time asc") - // ); - // int finalPlan_qty = 0; - //// vechielDtos.sort(Comparator.comparingInt(o -> (o.getQty().intValue() - finalPlan_qty))); - // List disList = new ArrayList<>(); - // for (StructattrVechielDto structattr : vechielDtos) { - //// if (need.contains(structattr.getStoragevehicle_code()) && structattr.getFrozen_qty().intValue()==0){ - // if (structattr.getFrozen_qty().intValue()==0){ - // int cause_qty = structattr.getQty().subtract(structattr.getFrozen_qty()).intValue(); - // int sub = plan_qty - cause_qty; - // finalPlan_qty = sub; - // disList.add(structattr); - // if (sub<=0){ - // structattr.setFrozen_qty(new BigDecimal(plan_qty)); - // break; - // } - // structattr.setFrozen_qty(new BigDecimal(cause_qty)); - // plan_qty = sub; - // } - // } - // if (finalPlan_qty>0){ - // throw new BadRequestException("库存不足:物料"+param.getString("material_id")+"当前库存可用数"+(param.getInteger("qty").intValue()-finalPlan_qty)); - // } - // return disList; - // } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/ios_manage/service/impl/PdaIosOutServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/ios_manage/service/impl/PdaIosOutServiceImpl.java index 98d955a..5d2ca36 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/ios_manage/service/impl/PdaIosOutServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/ios_manage/service/impl/PdaIosOutServiceImpl.java @@ -450,8 +450,8 @@ public class PdaIosOutServiceImpl implements PdaIosOutService { //强制确认 updateWrapper.set(GroupPlate::getQty, 0).set(GroupPlate::getFrozen_qty, 0); } - updateWrapper.set(GroupPlate::getUpdate_optid, currentUserId + "") - .set(GroupPlate::getUpdate_optname, nickName) + updateWrapper.set(GroupPlate::getUpdate_id, currentUserId + "") + .set(GroupPlate::getUpdate_name, nickName) .set(GroupPlate::getUpdate_time, now) .set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库")) .eq(GroupPlate::getGroup_id, whereJson.getString("group_id")); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/service/impl/PmFormDataServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/service/impl/PmFormDataServiceImpl.java index f0111ee..561aa7a 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/service/impl/PmFormDataServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pm_manage/service/impl/PmFormDataServiceImpl.java @@ -86,7 +86,7 @@ public class PmFormDataServiceImpl extends ServiceImpl().eq(MdPbMeasureunit::getMeasure_unit_id, params.getUnit_id())); if (ObjectUtil.isEmpty(mdPbMeasureunit)) { throw new BadRequestException("没有该计量单位信息"); @@ -108,7 +108,6 @@ public class PmFormDataServiceImpl extends ServiceImpl().eq(MdPbMeasureunit::getMeasure_unit_id, params.getUnit_id())); if (ObjectUtil.isEmpty(mdPbMeasureunit)) { throw new BadRequestException("没有该计量单位信息"); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java index 8371e35..1fe4c1c 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java @@ -172,8 +172,7 @@ public class SchBasePointServiceImpl extends ServiceImpl() - .eq(SchBasePoint::getRegion_code, region.getRegion_code()) - .eq(SchBasePoint::getIs_has_workder, true)); + .eq(SchBasePoint::getRegion_code, region.getRegion_code())); } @Override diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/coderule/impl/SysCodeRuleServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/coderule/impl/SysCodeRuleServiceImpl.java index beb7410..31e19e8 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/coderule/impl/SysCodeRuleServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/coderule/impl/SysCodeRuleServiceImpl.java @@ -60,7 +60,11 @@ public class SysCodeRuleServiceImpl extends ServiceImpl().eq(SysCodeRule::getCode, code)).getId(); + SysCodeRule sysCodeRule = codeRuleMapper.selectOne(new LambdaQueryWrapper().eq(SysCodeRule::getCode, code)); + if (sysCodeRule==null){ + throw new BadRequestException("缺少"+code+"相关配置"); + } + String id = sysCodeRule.getId(); // 如果flag = 1就执行更新数据库的操作 String flag = (String) form.get("flag"); List ruleDetails = codeRuleDetailMapper.selectList(new LambdaQueryWrapper() diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/record/controller/StIvtStructivtflowController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/record/controller/StIvtStructivtflowController.java new file mode 100644 index 0000000..df52a2d --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/record/controller/StIvtStructivtflowController.java @@ -0,0 +1,35 @@ +package org.nl.wms.warehouse_manage.record.controller; + + +import org.nl.common.domain.query.PageQuery; +import org.nl.wms.warehouse_manage.record.service.IStIvtStructivtflowService; +import org.nl.wms.warehouse_manage.record.service.dto.StructIvtFlowQuery; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 仓位库存变动记录表 前端控制器 + *

+ * + * @author generator + * @since 2024-05-23 + */ +@RestController +@RequestMapping("/api/stIvtStructivtflow") +public class StIvtStructivtflowController { + + @Autowired + private IStIvtStructivtflowService stIvtStructivtflowService; + + @GetMapping + public ResponseEntity query(StructIvtFlowQuery query, PageQuery page) { + return new ResponseEntity<>(stIvtStructivtflowService.pageQuery(query, page), HttpStatus.OK); + } +} + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/record/service/IStIvtStructivtflowService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/record/service/IStIvtStructivtflowService.java new file mode 100644 index 0000000..e5ed945 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/record/service/IStIvtStructivtflowService.java @@ -0,0 +1,19 @@ +package org.nl.wms.warehouse_manage.record.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.common.domain.query.PageQuery; +import org.nl.wms.warehouse_manage.record.service.dao.StIvtStructivtflow; +import org.nl.wms.warehouse_manage.record.service.dto.StructIvtFlowQuery; + +/** + *

+ * 仓位库存变动记录表 服务类 + *

+ * + * @author generator + * @since 2024-05-23 + */ +public interface IStIvtStructivtflowService extends IService { + + Object pageQuery(StructIvtFlowQuery query, PageQuery page); +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/record/service/dao/StIvtStructivtflow.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/record/service/dao/StIvtStructivtflow.java new file mode 100644 index 0000000..89a4972 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/record/service/dao/StIvtStructivtflow.java @@ -0,0 +1,113 @@ +package org.nl.wms.warehouse_manage.record.service.dao; + +import java.math.BigDecimal; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nl.common.domain.handler.FastjsonSortTypeHandler; + +/** + *

+ * 仓位库存变动记录表 + *

+ * + * @author generator + * @since 2024-05-23 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName(value = "st_ivt_structivtflow", autoResultMap = true) +public class StIvtStructivtflow implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 记录标识 + */ + @TableId + private String id; + + /** + * 仓库编码 + */ + private String stor_code; + /** + * 库区编码 + */ + private String sect_code; + /** + * 仓位编码 + */ + private String struct_code; + + /** + * 载具编码 + */ + private String vehicle_code; + /** + * 物料标识 + */ + private String material_id; + + /** + * 批次 + */ + private String pcsn; + + /** + * 总库存 + */ + private BigDecimal qty; + /** + * 变动库存 + */ + private BigDecimal change_qty; + + /** + * 冻结库存 + */ + private BigDecimal frozen_qty; + + /** + * 载具物料参数 + */ + @TableField(typeHandler = FastjsonSortTypeHandler.class) + private JSONObject vehicle_form_data; + + /** + * 单据编号 + */ + private String source_form_type; + + /** + * 单据表名 + */ + private String source_form_id; + + /** + * 变动类型1入库0出库 + */ + private String task_type; + + /** + * 数量计量单位标识 + */ + private String unit_id; + + /** + * 变动时间 + */ + private String update_time; + + /** + * 库存增加 + */ + private Boolean growth; + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/record/service/dao/mapper/StIvtStructivtflowMapper.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/record/service/dao/mapper/StIvtStructivtflowMapper.java new file mode 100644 index 0000000..908fa7b --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/record/service/dao/mapper/StIvtStructivtflowMapper.java @@ -0,0 +1,23 @@ +package org.nl.wms.warehouse_manage.record.service.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.nl.common.domain.query.PageQuery; +import org.nl.wms.warehouse_manage.record.service.dao.StIvtStructivtflow; +import org.nl.wms.warehouse_manage.record.service.dto.StructIvtFlowQuery; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 仓位库存变动记录表 Mapper 接口 + *

+ * + * @author generator + * @since 2024-05-23 + */ +public interface StIvtStructivtflowMapper extends BaseMapper { + + List getPageQuery(@Param("query") StructIvtFlowQuery query, PageQuery pageQuery); +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/record/service/dao/mapper/xml/StIvtStructivtflowMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/record/service/dao/mapper/xml/StIvtStructivtflowMapper.xml new file mode 100644 index 0000000..d43dfae --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/record/service/dao/mapper/xml/StIvtStructivtflowMapper.xml @@ -0,0 +1,38 @@ + + + + + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/record/service/dto/StructIvtFlowQuery.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/record/service/dto/StructIvtFlowQuery.java new file mode 100644 index 0000000..d532d7f --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/record/service/dto/StructIvtFlowQuery.java @@ -0,0 +1,18 @@ +package org.nl.wms.warehouse_manage.record.service.dto; + +import lombok.Data; +import org.nl.common.domain.query.BaseQuery; +import org.nl.wms.warehouse_manage.record.service.dao.StIvtStructivtflow; + +/* + * @author ZZQ + * @Date 2023/5/4 19:49 + */ +@Data +public class StructIvtFlowQuery extends BaseQuery { + + private String search; + private String material_code; + private String vehicle_code; + private String pcsn; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/record/service/impl/StIvtStructivtflowServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/record/service/impl/StIvtStructivtflowServiceImpl.java new file mode 100644 index 0000000..1342832 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/record/service/impl/StIvtStructivtflowServiceImpl.java @@ -0,0 +1,38 @@ +package org.nl.wms.warehouse_manage.record.service.impl; + + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import org.nl.common.base.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.wms.warehouse_manage.record.service.IStIvtStructivtflowService; +import org.nl.wms.warehouse_manage.record.service.dao.StIvtStructivtflow; +import org.nl.wms.warehouse_manage.record.service.dao.mapper.StIvtStructivtflowMapper; +import org.nl.wms.warehouse_manage.record.service.dto.StructIvtFlowQuery; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 仓位库存变动记录表 服务实现类 + *

+ * + * @author generator + * @since 2024-05-23 + */ +@Service +public class StIvtStructivtflowServiceImpl extends ServiceImpl implements IStIvtStructivtflowService { + + @Override + public Object pageQuery(StructIvtFlowQuery query, PageQuery pageQuery) { + Page page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize()); + page.setOrderBy("update_time DESC"); + List mst_detail = this.baseMapper.getPageQuery(query, pageQuery); + TableDataInfo build = TableDataInfo.build(mst_detail); + build.setTotalElements(page.getTotal()); + return build; + } +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/service/dao/GroupPlate.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/service/dao/GroupPlate.java index c34af0d..0480c31 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/service/dao/GroupPlate.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/service/dao/GroupPlate.java @@ -92,12 +92,12 @@ public class GroupPlate implements Serializable { /** * 修改人 */ - private String update_optid; + private String update_id; /** * 修改人姓名 */ - private String update_optname; + private String update_name; /** * 修改时间 diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/service/impl/OutBillServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/service/impl/OutBillServiceImpl.java index eab1f2a..1db638c 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/service/impl/OutBillServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/service/impl/OutBillServiceImpl.java @@ -25,6 +25,9 @@ import org.nl.wms.basedata_manage.service.IStructattrService; import org.nl.wms.basedata_manage.service.dao.BsrealStorattr; import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleextMapper; import org.nl.wms.basedata_manage.service.dto.MdPbStoragevehicleextDto; +import org.nl.wms.basedata_manage.service.dto.StrategyStructMaterialVO; +import org.nl.wms.basedata_manage.service.dto.StrategyStructParam; +import org.nl.wms.basedata_manage.service.dto.StructattrChangeDto; import org.nl.wms.sch_manage.enums.TaskStatus; import org.nl.wms.sch_manage.service.ISchBaseTaskService; import org.nl.wms.sch_manage.service.dao.SchBasePoint; @@ -70,13 +73,6 @@ public class OutBillServiceImpl extends ServiceImpl i @Resource private IStructattrService iStructattrService; - @Resource - private IMdPbStoragevehicleextService iMdPbStoragevehicleextService; - /** - * 组盘记录mapper - */ - @Autowired - private MdPbGroupplateMapper mdPbGroupplateMapper; /** * 载具扩展属性mapper */ @@ -346,7 +342,7 @@ public class OutBillServiceImpl extends ServiceImpl i String currentUserId = SecurityUtils.getCurrentUserId(); String nickName = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); - + String sectCode = whereJson.getString("sect_code"); String iostorinv_id = whereJson.getString("iostorinv_id"); //查询主表信息 @@ -361,39 +357,33 @@ public class OutBillServiceImpl extends ServiceImpl i queryDtl.put("unassign_flag", BaseDataEnum.IS_YES_NOT.code("是")); queryDtl.put("iostorinv_id", iostorinv_id); List dtls = ioStorInvMapper.getIODtl(queryDtl); -// List dtls = ioStorInvDtlMapper.selectList(new LambdaQueryWrapper<>(IOStorInvDtl.class) -// .le(IOStorInvDtl::getBill_status,IOSEnum.BILL_STATUS.code("分配完")) -// .gt(IOStorInvDtl::getUnassign_qty,0) -// .eq(IOStorInvDtl::getIostorinv_id, iostorinv_id)); if (ObjectUtil.isEmpty(dtls)) { throw new BadRequestException("当前订单无可分配出库明细"); } for (int i = 0; i < dtls.size(); i++) { IOStorInvDtlDto dtl = dtls.get(i); - double unassign_qty = dtl.getUnassign_qty().doubleValue(); + BigDecimal unassign_qty = dtl.getUnassign_qty(); String pcsn = dtl.getPcsn(); String material_id = dtl.getMaterial_id(); - + String material_code = dtl.getMaterial_code(); // 根据物料和批次号查询库存可用 - BigDecimal canuseSum = mdPbStoragevehicleextMapper.queryCanuseSum(pcsn,material_id); + List structMaterials = iStructattrService.outBoundSectDiv( + StrategyStructParam.builder() + .qty(unassign_qty) + .pcsn(pcsn) + .material_code(material_code) + .stor_code(ioStorInv.getStor_code()) + .sect_code(sectCode) + .build() + ); - if (ObjectUtil.isEmpty(canuseSum) || canuseSum.doubleValue() outAllocationList = mdPbStoragevehicleextMapper.queryOutAllocation(pcsn,material_id); int seq_no = 1; - double allocation_canuse_qty = 0; - for (MdPbStoragevehicleextDto outAllocation : outAllocationList) { + BigDecimal allocation_canuse_qty=BigDecimal.ZERO; + for (StrategyStructMaterialVO outAllocation : structMaterials) { //分配明细 IOStorInvDis ioStorInvDis = new IOStorInvDis(); ioStorInvDis.setIostorinvdis_id(IdUtil.getStringId()); @@ -402,7 +392,8 @@ public class OutBillServiceImpl extends ServiceImpl i ioStorInvDis.setSeq_no((seq_no++)+""); ioStorInvDis.setSect_id(outAllocation.getSect_id()); ioStorInvDis.setPcsn(outAllocation.getPcsn()); - ioStorInvDis.setMaterial_id(material_id); + ioStorInvDis.setMaterial_id(outAllocation.getMaterial_id()); + ioStorInvDis.setMaterial_code(outAllocation.getMaterial_code()); ioStorInvDis.setSect_name(outAllocation.getSect_name()); ioStorInvDis.setSect_code(outAllocation.getSect_code()); ioStorInvDis.setStruct_id(outAllocation.getStruct_id()); @@ -413,22 +404,7 @@ public class OutBillServiceImpl extends ServiceImpl i ioStorInvDis.setQty_unit_id(outAllocation.getQty_unit_id()); ioStorInvDis.setQty_unit_name(outAllocation.getQty_unit_name()); ioStorInvDis.setWork_status(IOSEnum.INBILL_DIS_STATUS.code("未生成")); - - // 未分配数量 - 该库位上的可用数量 < 0 目前做整出 -// double canuse_qty = outAllocation.getCanuse_qty().doubleValue(); -// if (unassign_qty-canuse_qty>=0){ -// ioStorInvDis.setPlan_qty(BigDecimal.valueOf(canuse_qty)); -// }else { -// ioStorInvDis.setPlan_qty(BigDecimal.valueOf(unassign_qty)); -// } -// unassign_qty = unassign_qty-canuse_qty; - unassign_qty = unassign_qty-outAllocation.getCanuse_qty().doubleValue(); - if (unassign_qty<0){ - unassign_qty=0; - } - allocation_canuse_qty = allocation_canuse_qty + outAllocation.getCanuse_qty().doubleValue(); - ioStorInvDis.setPlan_qty(outAllocation.getCanuse_qty()); - + ioStorInvDis.setPlan_qty(outAllocation.getFrozen_qty()); //锁定货位 JSONObject lock_map = new JSONObject(); lock_map.put("struct_code", outAllocation.getStruct_code()); @@ -437,34 +413,27 @@ public class OutBillServiceImpl extends ServiceImpl i lock_map.put("inv_type", ioStorInv.getBill_type()); lock_map.put("lock_type", IOSEnum.LOCK_TYPE.code("出库锁")); iStructattrService.updateStatusByCode("0",lock_map); - + //更新组盘表冻结数量状态 + iMdPbGroupPlateService.update(new LambdaUpdateWrapper() + .set(GroupPlate::getFrozen_qty, outAllocation.getFrozen_qty()) + .set(GroupPlate::getUpdate_time, now) + .eq(GroupPlate::getStoragevehicle_code, outAllocation.getStoragevehicle_code()) + .eq(GroupPlate::getPcsn, outAllocation.getPcsn()) + .eq(GroupPlate::getMaterial_id, outAllocation.getMaterial_id()) + .eq(GroupPlate::getStatus,IOSEnum.GROUP_PLATE_STATUS.code("入库"))); //生成分配明细 ioStorInvDisMapper.insert(ioStorInvDis); - - //更新库存 加冻结减可用 - List updateIvtList = new ArrayList<>(); - JSONObject jsonIvt = new JSONObject(); - jsonIvt.put("type", IOSConstant.UPDATE_IVT_TYPE_ADD_FROZEN); - jsonIvt.put("storagevehicle_code", outAllocation.getStoragevehicle_code()); - jsonIvt.put("material_id", outAllocation.getMaterial_id()); - jsonIvt.put("pcsn", outAllocation.getPcsn()); - jsonIvt.put("qty_unit_id", outAllocation.getQty_unit_id()); - jsonIvt.put("qty_unit_name", outAllocation.getQty_unit_name()); - jsonIvt.put("change_qty", ioStorInvDis.getPlan_qty()); - updateIvtList.add(jsonIvt); - iMdPbGroupPlateService.updateIvt(updateIvtList); - + allocation_canuse_qty = allocation_canuse_qty.add(outAllocation.getFrozen_qty()); //分配完成 结束分配 - if (unassign_qty==0){ + if (unassign_qty.doubleValue() <= 0){ break; } } //更新详情 dtl.setBill_status(IOSEnum.BILL_STATUS.code("分配完")); - double assign_qty = allocation_canuse_qty + dtl.getAssign_qty().doubleValue(); - dtl.setUnassign_qty(BigDecimal.valueOf(unassign_qty)); - dtl.setAssign_qty(BigDecimal.valueOf(assign_qty)); + dtl.setUnassign_qty(unassign_qty); + dtl.setAssign_qty(dtl.getAssign_qty().add(allocation_canuse_qty)); ioStorInvDtlMapper.updateById(dtl); } @@ -560,13 +529,11 @@ public class OutBillServiceImpl extends ServiceImpl i @Override @Transactional(rollbackFor = Exception.class) public void autoDiv(JSONObject whereJson) { - String currentUserId = SecurityUtils.getCurrentUserId(); String nickName = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); - + String sectCode = whereJson.getString("sect_code"); String iostorinv_id = whereJson.getString("iostorinv_id"); - //查询主表信息 IOStorInv ioStorInv = ioStorInvMapper.selectById(iostorinv_id); if (ObjectUtil.isEmpty(ioStorInv)) { @@ -583,32 +550,24 @@ public class OutBillServiceImpl extends ServiceImpl i if (ObjectUtil.isEmpty(dtls)) { throw new BadRequestException("当前订单无可分配出库明细"); } - for (int i = 0; i < dtls.size(); i++) { IOStorInvDtlDto dtl = dtls.get(i); - double unassign_qty = dtl.getUnassign_qty().doubleValue(); + BigDecimal unassign_qty = dtl.getUnassign_qty(); String pcsn = dtl.getPcsn(); - String material_id = dtl.getMaterial_id(); - - // 根据物料和批次号查询库存可用 - BigDecimal canuseSum = mdPbStoragevehicleextMapper.queryCanuseSum(pcsn,material_id); - - if (canuseSum.doubleValue() outAllocationList = mdPbStoragevehicleextMapper.queryOutAllocation(pcsn,material_id); - + String material_code = dtl.getMaterial_code(); + //调用分配规则获取分配的库位:如果库存不足则直接报错 + List structMaterials = iStructattrService.outBoundSectDiv( + StrategyStructParam.builder() + .qty(unassign_qty) + .pcsn(pcsn) + .material_code(material_code) + .stor_code(ioStorInv.getStor_code()) + .sect_code(sectCode) + .build() + ); int seq_no = 1; - double allocation_canuse_qty = 0; - for (MdPbStoragevehicleextDto outAllocation : outAllocationList) { + BigDecimal allocation_canuse_qty=BigDecimal.ZERO; + for (StrategyStructMaterialVO outAllocation : structMaterials) { //分配明细 IOStorInvDis ioStorInvDis = new IOStorInvDis(); ioStorInvDis.setIostorinvdis_id(IdUtil.getStringId()); @@ -617,7 +576,8 @@ public class OutBillServiceImpl extends ServiceImpl i ioStorInvDis.setSeq_no((seq_no++)+""); ioStorInvDis.setSect_id(outAllocation.getSect_id()); ioStorInvDis.setPcsn(outAllocation.getPcsn()); - ioStorInvDis.setMaterial_id(material_id); + ioStorInvDis.setMaterial_id(outAllocation.getMaterial_id()); + ioStorInvDis.setMaterial_code(outAllocation.getMaterial_code()); ioStorInvDis.setSect_name(outAllocation.getSect_name()); ioStorInvDis.setSect_code(outAllocation.getSect_code()); ioStorInvDis.setStruct_id(outAllocation.getStruct_id()); @@ -628,22 +588,7 @@ public class OutBillServiceImpl extends ServiceImpl i ioStorInvDis.setQty_unit_id(outAllocation.getQty_unit_id()); ioStorInvDis.setQty_unit_name(outAllocation.getQty_unit_name()); ioStorInvDis.setWork_status(IOSEnum.INBILL_DIS_STATUS.code("未生成")); - - // 未分配数量 - 该库位上的可用数量 < 0 目前做整出 -// double canuse_qty = outAllocation.getCanuse_qty().doubleValue(); -// if (unassign_qty-canuse_qty>=0){ -// ioStorInvDis.setPlan_qty(BigDecimal.valueOf(canuse_qty)); -// }else { -// ioStorInvDis.setPlan_qty(BigDecimal.valueOf(unassign_qty)); -// } -// unassign_qty = unassign_qty-canuse_qty; - unassign_qty = unassign_qty-outAllocation.getCanuse_qty().doubleValue(); - if (unassign_qty<0){ - unassign_qty=0; - } - allocation_canuse_qty = allocation_canuse_qty + outAllocation.getCanuse_qty().doubleValue(); - ioStorInvDis.setPlan_qty(outAllocation.getCanuse_qty()); - + ioStorInvDis.setPlan_qty(outAllocation.getFrozen_qty()); //锁定货位 JSONObject lock_map = new JSONObject(); lock_map.put("struct_code", outAllocation.getStruct_code()); @@ -652,44 +597,34 @@ public class OutBillServiceImpl extends ServiceImpl i lock_map.put("inv_type", ioStorInv.getBill_type()); lock_map.put("lock_type", IOSEnum.LOCK_TYPE.code("出库锁")); iStructattrService.updateStatusByCode("0",lock_map); - + //更新组盘表冻结数量状态 + iMdPbGroupPlateService.update(new LambdaUpdateWrapper() + .set(GroupPlate::getFrozen_qty, outAllocation.getFrozen_qty()) + .set(GroupPlate::getUpdate_time, now) + .eq(GroupPlate::getStoragevehicle_code, outAllocation.getStoragevehicle_code()) + .eq(GroupPlate::getPcsn, outAllocation.getPcsn()) + .eq(GroupPlate::getMaterial_id, outAllocation.getMaterial_id()) + .eq(GroupPlate::getStatus,IOSEnum.GROUP_PLATE_STATUS.code("入库"))); //生成分配明细 ioStorInvDisMapper.insert(ioStorInvDis); - - //更新库存 加冻结减可用 - List updateIvtList = new ArrayList<>(); - JSONObject jsonIvt = new JSONObject(); - jsonIvt.put("type", IOSConstant.UPDATE_IVT_TYPE_ADD_FROZEN); - jsonIvt.put("storagevehicle_code", outAllocation.getStoragevehicle_code()); - jsonIvt.put("material_id", outAllocation.getMaterial_id()); - jsonIvt.put("pcsn", outAllocation.getPcsn()); - jsonIvt.put("qty_unit_id", outAllocation.getQty_unit_id()); - jsonIvt.put("qty_unit_name", outAllocation.getQty_unit_name()); - jsonIvt.put("change_qty", ioStorInvDis.getPlan_qty()); - updateIvtList.add(jsonIvt); - iMdPbGroupPlateService.updateIvt(updateIvtList); - + allocation_canuse_qty = allocation_canuse_qty.add(outAllocation.getFrozen_qty()); //分配完成 结束分配 - if (unassign_qty==0){ + if (unassign_qty.doubleValue() <= 0){ break; } } - //更新详情 dtl.setBill_status(IOSEnum.BILL_STATUS.code("分配完")); - double assign_qty = allocation_canuse_qty + dtl.getAssign_qty().doubleValue(); - dtl.setUnassign_qty(BigDecimal.valueOf(unassign_qty)); - dtl.setAssign_qty(BigDecimal.valueOf(assign_qty)); + dtl.setUnassign_qty(unassign_qty); + dtl.setAssign_qty(dtl.getAssign_qty().add(allocation_canuse_qty)); ioStorInvDtlMapper.updateById(dtl); } - //更新主表 //根据单据标识判断明细是否都已经分配完成 int disCount = ioStorInvDtlMapper.selectCount(new LambdaQueryWrapper<>(IOStorInvDtl.class) .eq(IOStorInvDtl::getIostorinv_id,iostorinv_id) .lt(IOStorInvDtl::getBill_status,IOSEnum.BILL_STATUS.code("分配完")) ); - // 根据分配货位情况 更新主表单据状态 IOStorInv ios = new IOStorInv(); ios.setIostorinv_id(iostorinv_id); @@ -1121,7 +1056,6 @@ public class OutBillServiceImpl extends ServiceImpl i updateIvtList.add(jsonIvt); iMdPbGroupPlateService.updateIvt(updateIvtList); } - //更新分配明细数据 ioStorInvDisMapper.update(ioStorInvDis,new LambdaUpdateWrapper<>(IOStorInvDis.class) .set(IOStorInvDis::getWork_status,IOSEnum.INBILL_DIS_STATUS.code("完成")) @@ -1129,12 +1063,10 @@ public class OutBillServiceImpl extends ServiceImpl i .eq(IOStorInvDis::getIostorinvdis_id,ioStorInvDis.getIostorinvdis_id()) .ne(IOStorInvDis::getWork_status,IOSEnum.INBILL_DIS_STATUS.code("完成")) ); - //添加需要更新的明细标识 dtlSet.add(ioStorInvDis.getIostorinvdtl_id()); - //更新组盘记录表 - mdPbGroupplateMapper.update(new GroupPlate(),new LambdaUpdateWrapper<>(GroupPlate.class) + iMdPbGroupPlateService.update(new GroupPlate(),new LambdaUpdateWrapper<>(GroupPlate.class) .set(GroupPlate::getStatus,IOSEnum.GROUP_PLATE_STATUS.code("出库")) .eq(GroupPlate::getPcsn,ioStorInvDis.getPcsn()) .eq(GroupPlate::getMaterial_id,ioStorInvDis.getMaterial_id()) @@ -1200,18 +1132,12 @@ public class OutBillServiceImpl extends ServiceImpl i finish_map.put("inv_id", null); finish_map.put("inv_code", null); iStructattrService.updateStatusByCode("1",finish_map); - //修改库存 恢复库存 手持进行减扣 - List updateIvtList = new ArrayList<>(); - JSONObject jsonIvt = new JSONObject(); - jsonIvt.put("type", IOSConstant.UPDATE_IVT_TYPE_SUB_FROZEN_ADD_CANUSE); - jsonIvt.put("storagevehicle_code", ioStorInvDis.getStoragevehicle_code()); - jsonIvt.put("material_id", ioStorInvDis.getMaterial_id()); - jsonIvt.put("pcsn", ioStorInvDis.getPcsn()); - jsonIvt.put("qty_unit_id", ioStorInvDis.getQty_unit_id()); - jsonIvt.put("qty_unit_name", ioStorInvDis.getQty_unit_name()); - jsonIvt.put("change_qty", ioStorInvDis.getPlan_qty()); - updateIvtList.add(jsonIvt); - iMdPbGroupPlateService.updateIvt(updateIvtList); + //库存变动 + StructattrChangeDto changeDto = StructattrChangeDto.builder() + .inv(ioStorInvDis.getIostorinv_id()) + .storagevehicleCode(ioStorInvDis.getStoragevehicle_code()) + .structCode(ioStorInvDis.getStruct_code()).taskType(task.getConfig_code()).inBound(false).build(); + iStructattrService.changeStruct(changeDto); // 查询该明细下是否还有未完成的分配明细 int countDis = ioStorInvDisMapper.selectCount(new LambdaQueryWrapper<>(IOStorInvDis.class) .eq(IOStorInvDis::getIostorinvdtl_id,ioStorInvDis.getIostorinvdtl_id()) diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/service/impl/RawAssistIStorServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/service/impl/RawAssistIStorServiceImpl.java index c48cc2a..d6835de 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/service/impl/RawAssistIStorServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/service/impl/RawAssistIStorServiceImpl.java @@ -26,6 +26,7 @@ import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo; import org.nl.wms.basedata_manage.service.dao.Structattr; import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleinfoMapper; import org.nl.wms.basedata_manage.service.dto.StrategyStructParam; +import org.nl.wms.basedata_manage.service.dto.StructattrChangeDto; import org.nl.wms.sch_manage.enums.StatusEnum; import org.nl.wms.sch_manage.service.dao.SchBaseTask; import org.nl.wms.sch_manage.service.util.tasks.StInTask; @@ -639,7 +640,16 @@ public class RawAssistIStorServiceImpl extends ServiceImpl(IOStorInvDis.class) .set(IOStorInvDis::getWork_status,IOSEnum.INBILL_DIS_STATUS.code("完成")) @@ -655,43 +665,29 @@ public class RawAssistIStorServiceImpl extends ServiceImpl updateIvtList = new ArrayList<>(); - JSONObject jsonIvt = new JSONObject(); - jsonIvt.put("type", IOSConstant.UPDATE_IVT_TYPE_ADD_CANUSE); - jsonIvt.put("storagevehicle_code", ioStorInvDis.getStoragevehicle_code()); - jsonIvt.put("material_id", ioStorInvDis.getMaterial_id()); - jsonIvt.put("pcsn", ioStorInvDis.getPcsn()); - jsonIvt.put("qty_unit_id", ioStorInvDis.getQty_unit_id()); - jsonIvt.put("qty_unit_name", ioStorInvDis.getQty_unit_name()); - jsonIvt.put("change_qty", ioStorInvDis.getPlan_qty()); - updateIvtList.add(jsonIvt); - iMdPbGroupPlateService.updateIvt(updateIvtList); // 查询该明细下是否还有未完成的分配明细 int countDis = ioStorInvDisMapper.selectCount(new LambdaQueryWrapper<>(IOStorInvDis.class) .eq(IOStorInvDis::getIostorinvdtl_id,ioStorInvDis.getIostorinvdtl_id()) .ne(IOStorInvDis::getWork_status,IOSEnum.INBILL_DIS_STATUS.code("完成")) ); - - // 明细 - IOStorInvDtl ioStorInvDtl = ioStorInvDtlMapper.selectById(ioStorInvDis.getIostorinvdtl_id()); - if (ObjectUtil.isEmpty(ioStorInvDtl)){ - throw new BadRequestException("未找到明细"); - } // 如果分配明细全部完成则更新明细表状态 if (countDis == 0){ // 更新明细表状态 ioStorInvDtl.setReal_qty(ioStorInvDis.getPlan_qty()); ioStorInvDtl.setBill_status(IOSEnum.BILL_STATUS.code("完成")); ioStorInvDtlMapper.updateById(ioStorInvDtl); - // 查看明细是否全部完成 int countDtl = ioStorInvDtlMapper.selectCount(new LambdaQueryWrapper<>(IOStorInvDtl.class) .eq(IOStorInvDtl::getIostorinv_id,ioStorInvDtl.getIostorinv_id()) .ne(IOStorInvDtl::getBill_status,IOSEnum.BILL_STATUS.code("完成")) ); - // 如果明细全部完成则更新主表状态 if (countDtl == 0){ //更新主表状态 diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/service/util/UpdateIvtUtils.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/service/util/UpdateIvtUtils.java index c0a9acd..9eed9a8 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/service/util/UpdateIvtUtils.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/service/util/UpdateIvtUtils.java @@ -166,8 +166,8 @@ public class UpdateIvtUtils { double frozen_qty = NumberUtil.add(extDao.getFrozen_qty(), where.getDoubleValue("change_qty")).doubleValue(); extDao.setQty(BigDecimal.valueOf(canuse_qty)); extDao.setFrozen_qty(BigDecimal.valueOf(frozen_qty)); - extDao.setUpdate_optid(SecurityUtils.getCurrentUserId()); - extDao.setUpdate_optname(SecurityUtils.getCurrentNickName()); + extDao.setUpdate_id(SecurityUtils.getCurrentUserId()); + extDao.setUpdate_name(SecurityUtils.getCurrentNickName()); extDao.setUpdate_time(DateUtil.now()); extDao.setRemark(where.getString("remark")); iMdPbGroupPlateService.updateById(extDao); @@ -200,8 +200,8 @@ public class UpdateIvtUtils { iMdPbStoragevehicleextService.removeById(extDao); } else { extDao.setFrozen_qty(BigDecimal.valueOf(frozen_qty)); - extDao.setUpdate_optid(SecurityUtils.getCurrentUserId()); - extDao.setUpdate_optname(SecurityUtils.getCurrentNickName()); + extDao.setUpdate_id(SecurityUtils.getCurrentUserId()); + extDao.setUpdate_name(SecurityUtils.getCurrentNickName()); extDao.setUpdate_time(DateUtil.now()); extDao.setRemark(where.getString("remark")); iMdPbGroupPlateService.updateById(extDao); @@ -233,8 +233,8 @@ public class UpdateIvtUtils { // double canuse_qty = NumberUtil.add(extDao.getQty(), where.getDoubleValue("change_qty")).doubleValue(); extDao.setFrozen_qty(BigDecimal.ZERO); extDao.setQty(BigDecimal.valueOf(qty)); - extDao.setUpdate_optid(SecurityUtils.getCurrentUserId()); - extDao.setUpdate_optname(SecurityUtils.getCurrentNickName()); + extDao.setUpdate_id(SecurityUtils.getCurrentUserId()); + extDao.setUpdate_name(SecurityUtils.getCurrentNickName()); extDao.setUpdate_time(DateUtil.now()); extDao.setRemark(where.getString("remark")); iMdPbGroupPlateService.updateById(extDao); @@ -256,8 +256,8 @@ public class UpdateIvtUtils { } double canuse_qty = NumberUtil.add(extDao.getQty(), where.getDoubleValue("change_qty")).doubleValue(); extDao.setQty(BigDecimal.valueOf(canuse_qty)); - extDao.setUpdate_optid(SecurityUtils.getCurrentUserId()); - extDao.setUpdate_optname(SecurityUtils.getCurrentNickName()); + extDao.setUpdate_id(SecurityUtils.getCurrentUserId()); + extDao.setUpdate_name(SecurityUtils.getCurrentNickName()); extDao.setUpdate_time(DateUtil.now()); extDao.setRemark(where.getString("remark")); iMdPbGroupPlateService.updateById(extDao); @@ -283,8 +283,8 @@ public class UpdateIvtUtils { throw new BadRequestException("可用数不能为负数,请检查变动数量!当前可用数为【" + extDao.getQty() + "】当前变动数为【" + where.getDoubleValue("change_qty") + "】"); } extDao.setQty(BigDecimal.valueOf(canuse_qty)); - extDao.setUpdate_optid(SecurityUtils.getCurrentUserId()); - extDao.setUpdate_optname(SecurityUtils.getCurrentNickName()); + extDao.setUpdate_id(SecurityUtils.getCurrentUserId()); + extDao.setUpdate_name(SecurityUtils.getCurrentNickName()); extDao.setUpdate_time(DateUtil.now()); extDao.setRemark(where.getString("remark")); iMdPbGroupPlateService.updateById(extDao); diff --git a/nladmin-ui/src/views/wms/basedata/group/index.vue b/nladmin-ui/src/views/wms/basedata/group/index.vue index e9d228c..a16cda9 100644 --- a/nladmin-ui/src/views/wms/basedata/group/index.vue +++ b/nladmin-ui/src/views/wms/basedata/group/index.vue @@ -72,45 +72,65 @@ - + - - + + - - + - + - - - + + + - - + + + + + + + - - + + + + - - - + + + + + + + @@ -157,6 +177,8 @@ + + @@ -167,11 +189,14 @@ import crudOperation from '@crud/CRUD.operation' import udOperation from '@crud/UD.operation' import pagination from '@crud/Pagination' import rrOperation from '@crud/RR.operation' +import MaterialDialog from '@/views/wms/basedata/material/MaterialDialog' const defaultForm = { group_id: null, storagevehicle_code: null, material_id: null, + material_name: null, + material_spec: null, pcsn: null, qty_unit_id: null, qty_unit_name: null, @@ -186,8 +211,9 @@ const defaultForm = { } export default { name: 'Group', - components: { pagination, crudOperation, rrOperation, udOperation }, + components: { pagination, MaterialDialog, crudOperation, rrOperation, udOperation }, mixins: [presenter(), header(), form(defaultForm), crud()], + tableEnums: ['md_pb_measureunit#unit_name#measure_unit_id'], // 数据字典 dicts: ['is_used', 'GROUP_STATUS'], cruds() { @@ -206,6 +232,7 @@ export default { data() { return { permission: {}, + materialDialog: false, classes: [], rules: { } @@ -218,6 +245,20 @@ export default { }, formattStatus(row) { return this.dict.label.GROUP_STATUS[row.status] + }, + getMaterial() { + this.materialDialog = true + }, + unitChange(row) { + const split = row.split('@') + this.form.qty_unit_id = split[0] + this.form.qty_unit_name = split[1] + }, + materialChoose(row) { + this.form.material_name = row.material_name + this.form.material_id = row.material_id + this.form.material_code = row.material_code + this.form.material_spec = row.material_spec } } } diff --git a/nladmin-ui/src/views/wms/basedata/material/MaterialDialog.vue b/nladmin-ui/src/views/wms/basedata/material/MaterialDialog.vue new file mode 100644 index 0000000..e01adf7 --- /dev/null +++ b/nladmin-ui/src/views/wms/basedata/material/MaterialDialog.vue @@ -0,0 +1,153 @@ + + + + + diff --git a/nladmin-ui/src/views/wms/basedata/materialSet/AddDialog.vue b/nladmin-ui/src/views/wms/basedata/materialSet/AddDialog.vue new file mode 100644 index 0000000..ba6aeb2 --- /dev/null +++ b/nladmin-ui/src/views/wms/basedata/materialSet/AddDialog.vue @@ -0,0 +1,206 @@ + + + + + diff --git a/nladmin-ui/src/views/wms/basedata/materialSet/index.vue b/nladmin-ui/src/views/wms/basedata/materialSet/index.vue new file mode 100644 index 0000000..c1710f1 --- /dev/null +++ b/nladmin-ui/src/views/wms/basedata/materialSet/index.vue @@ -0,0 +1,216 @@ + + + + + diff --git a/nladmin-ui/src/views/wms/basedata/materialSet/structrelamaterial.js b/nladmin-ui/src/views/wms/basedata/materialSet/structrelamaterial.js new file mode 100644 index 0000000..87eb30e --- /dev/null +++ b/nladmin-ui/src/views/wms/basedata/materialSet/structrelamaterial.js @@ -0,0 +1,43 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/structrelamaterial', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/structrelamaterial/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/structrelamaterial', + method: 'put', + data + }) +} + +export function insertSet(data) { + return request({ + url: 'api/structrelamaterial/insertSet', + method: 'post', + data + }) +} + +export function delSet(data) { + return request({ + url: 'api/structrelamaterial/delSet', + method: 'post', + data + }) +} + +export default { add, edit, del, insertSet, delSet } diff --git a/nladmin-ui/src/views/wms/basedata/storagevehicleinfo/index.vue b/nladmin-ui/src/views/wms/basedata/storagevehicleinfo/index.vue index 8aa54ff..82a81a0 100644 --- a/nladmin-ui/src/views/wms/basedata/storagevehicleinfo/index.vue +++ b/nladmin-ui/src/views/wms/basedata/storagevehicleinfo/index.vue @@ -13,11 +13,13 @@ > - + + @@ -42,8 +45,114 @@ - + + + 打印 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
- + - - +
+ + - - + + - - + + + + + + + + + + + @@ -83,7 +204,8 @@
@@ -131,50 +253,53 @@ - - + + + + + diff --git a/nladmin-ui/src/views/wms/st/inbill/DivDialog.vue b/nladmin-ui/src/views/wms/st/inbill/DivDialog.vue index 1dfaa85..fa4d219 100644 --- a/nladmin-ui/src/views/wms/st/inbill/DivDialog.vue +++ b/nladmin-ui/src/views/wms/st/inbill/DivDialog.vue @@ -259,7 +259,7 @@ export default { this.sects = res.content }) - const area_type = 'NBJ01' + const area_type = 'RKQ' crudPoint.getPointList({ 'region_code': area_type }).then(res => { this.pointlist = res diff --git a/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue b/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue index d3dacbb..2c7bf93 100644 --- a/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue +++ b/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue @@ -324,7 +324,7 @@ export default { this.sects = res.content }) - const area_type = 'NBJ01' + const area_type = 'CKQ' crudPoint.getPointList({ 'region_code': area_type }).then(res => { this.pointList = res }) @@ -356,16 +356,16 @@ export default { }, sectQueryChange(val) { if (val.length === 1) { - this.mstrow.stor_id = val[0] - this.mstrow.sect_id = '' + this.mstrow.stor_code = val[0] + this.mstrow.sect_code = '' } if (val.length === 0) { - this.mstrow.sect_id = '' - this.mstrow.stor_id = '' + this.mstrow.sect_code = '' + this.mstrow.stor_code = '' } if (val.length === 2) { - this.mstrow.stor_id = val[0] - this.mstrow.sect_id = val[1] + this.mstrow.stor_code = val[0] + this.mstrow.sect_code = val[1] } }, tabledisabled(row) { diff --git a/nladmin-ui/src/views/wms/statement/record/curdStructIvtFlow.js b/nladmin-ui/src/views/wms/statement/record/curdStructIvtFlow.js new file mode 100644 index 0000000..c38c0a1 --- /dev/null +++ b/nladmin-ui/src/views/wms/statement/record/curdStructIvtFlow.js @@ -0,0 +1,28 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/stIvtStructivtflow', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/stIvtStructivtflow', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/stIvtStructivtflow', + method: 'put', + data + }) +} + + +export default {add, edit, del} diff --git a/nladmin-ui/src/views/wms/statement/record/index.vue b/nladmin-ui/src/views/wms/statement/record/index.vue new file mode 100644 index 0000000..850841e --- /dev/null +++ b/nladmin-ui/src/views/wms/statement/record/index.vue @@ -0,0 +1,178 @@ + + + + +