From 05d89b5382db34615451abf38a6c5ca8a80b15e7 Mon Sep 17 00:00:00 2001 From: tuqiang <437016993@qq.com> Date: Tue, 26 Aug 2025 07:32:32 +0800 Subject: [PATCH] =?UTF-8?q?add=EF=BC=9A=E6=96=B0=E5=A2=9E=E6=89=8B?= =?UTF-8?q?=E6=8C=81=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dao/mapper/MdMeMaterialbaseMapper.java | 2 +- .../dao/mapper/MdMeMaterialbaseMapper.xml | 17 +- .../task/controller/PdaTaskController.java | 9 +- .../wms/pda/task/service/PdaTaskService.java | 6 +- .../task/service/impl/PdaTaskServiceImpl.java | 175 +++++++++++--- .../sch/group/controller/GroupController.java | 90 ++++++- .../group/controller/GroupdtlController.java | 13 + .../group/service/IMdPbGroupplateService.java | 2 + .../service/IMdPbGroupplatedtlService.java | 10 + .../wms/sch/group/service/dao/GroupPlate.java | 5 + .../sch/group/service/dao/GroupPlatedtl.java | 115 +++++++++ .../dao/mapper/MdPbGroupplatedtlMapper.java | 12 + .../group/service/dto/GroupPlatedtlDto.java | 8 + .../sch/group/service/enums/GroupStatus.java | 3 +- .../impl/MdPbGroupplateServiceImpl.java | 19 ++ .../impl/MdPbGroupplatedtlServiceImpl.java | 23 ++ .../point/service/ISchBasePointService.java | 6 + .../dao/mapper/SchBasePointMapper.java | 4 + .../service/dao/mapper/SchBasePointMapper.xml | 87 +++++-- .../service/impl/SchBasePointServiceImpl.java | 32 +++ .../sch/task/service/ISchBaseTaskService.java | 8 + .../wms/sch/task/service/dao/SchBaseTask.java | 1 + .../service/impl/SchBaseTaskServiceImpl.java | 20 +- .../nl/wms/sch/task_manage/AbstractTask.java | 2 + .../wms/sch/task_manage/AutoCreateTask.java | 2 +- .../org/nl/wms/sch/tasks/PdaPointTask.java | 5 +- .../sch/tasks/netsl/mapper/NETSLMapper.xml | 9 +- .../org/nl/wms/sch/tasks/netxl/NETXLTask.java | 125 ++++++++-- .../sch/tasks/netxl/mapper/NETXLMapper.java | 2 +- .../sch/tasks/netxl/mapper/NETXLMapper.xml | 19 +- .../org/nl/wms/sch/tasks/thsl/THSLTask.java | 25 +- .../wms/sch/tasks/thsl/mapper/THSLMapper.xml | 9 +- .../org/nl/wms/sch/tasks/thxl/THXLTask.java | 112 +++++++-- .../wms/sch/tasks/thxl/mapper/THXLMapper.java | 9 + .../wms/sch/tasks/thxl/mapper/THXLMapper.xml | 29 +++ .../main/java/org/nl/wms/util/PointUtils.java | 1 + .../main/resources/config/application-dev.yml | 8 +- .../src/main/resources/config/application.yml | 2 +- nladmin-ui/.env.development | 4 +- .../wms/basedata/material/MaterialDialog.vue | 1 + .../src/views/wms/pdm/group/AddDialog.vue | 228 ++++++++++++++++++ .../src/views/wms/pdm/group/ViewDialog.vue | 185 ++++++++++++++ nladmin-ui/src/views/wms/pdm/group/group.js | 10 +- nladmin-ui/src/views/wms/pdm/group/index.vue | 105 ++------ .../src/views/wms/sch/group/ViewDialog.vue | 185 ++++++++++++++ nladmin-ui/src/views/wms/sch/group/index.vue | 76 +++++- .../sch/group/schBaseVehiclematerialgroup.js | 2 + 47 files changed, 1601 insertions(+), 221 deletions(-) create mode 100644 nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/controller/GroupdtlController.java create mode 100644 nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/IMdPbGroupplatedtlService.java create mode 100644 nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/GroupPlatedtl.java create mode 100644 nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/mapper/MdPbGroupplatedtlMapper.java create mode 100644 nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dto/GroupPlatedtlDto.java create mode 100644 nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/MdPbGroupplatedtlServiceImpl.java create mode 100644 nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thxl/mapper/THXLMapper.java create mode 100644 nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thxl/mapper/THXLMapper.xml create mode 100644 nladmin-ui/src/views/wms/pdm/group/AddDialog.vue create mode 100644 nladmin-ui/src/views/wms/pdm/group/ViewDialog.vue create mode 100644 nladmin-ui/src/views/wms/sch/group/ViewDialog.vue diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/service/dao/mapper/MdMeMaterialbaseMapper.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/service/dao/mapper/MdMeMaterialbaseMapper.java index 98fb339..3390b6e 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/service/dao/mapper/MdMeMaterialbaseMapper.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/service/dao/mapper/MdMeMaterialbaseMapper.java @@ -17,5 +17,5 @@ import java.util.List; */ public interface MdMeMaterialbaseMapper extends BaseMapper { - List queryMaterials(@Param("param") JSONObject whereJson); + List selectAllMaters(@Param("param") JSONObject whereJson); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/service/dao/mapper/MdMeMaterialbaseMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/service/dao/mapper/MdMeMaterialbaseMapper.xml index a56f16b..3988e31 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/service/dao/mapper/MdMeMaterialbaseMapper.xml +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/service/dao/mapper/MdMeMaterialbaseMapper.xml @@ -1,8 +1,19 @@ - - + SELECT + mater.material_code, + mater.material_name, + u.unit_name as measure_unit_id + FROM + `md_me_materialbase` mater + LEFT JOIN md_pb_measureunit u ON u.measure_unit_id = mater.measure_unit_id + WHERE + 1=1 + + AND (mater.material_code = #{param.blurry} OR plan.material_name = #{param.blurry}) + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/controller/PdaTaskController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/controller/PdaTaskController.java index cc81e60..7af467b 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/controller/PdaTaskController.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/controller/PdaTaskController.java @@ -85,7 +85,7 @@ public class PdaTaskController { @PostMapping("/comfirmGetting") @Log("确认取货") - public ResponseEntity comfirmGetting(@RequestBody JSONObject whereJson) { + public ResponseEntity comfirmGetting(@RequestBody JSONObject whereJson) { return new ResponseEntity<>(pdaTaskService.comfirmGetting(whereJson), HttpStatus.OK); } @@ -130,6 +130,13 @@ public class PdaTaskController { return new ResponseEntity<>(pdaTaskService.forceConfirm(whereJson), HttpStatus.OK); } + @PostMapping("/selectRegionInfo") + @Log("进入区域信息查询") + @SaIgnore + public ResponseEntity selectRegionInfo(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaTaskService.selectRegionInfo(whereJson), HttpStatus.OK); + } + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/PdaTaskService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/PdaTaskService.java index f0c90f1..f2e8ef0 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/PdaTaskService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/PdaTaskService.java @@ -41,11 +41,13 @@ public interface PdaTaskService { PdaResponseVo lock(JSONObject whereJson); - PdaResponseVo comfirmGetting(JSONObject whereJson); + JSONObject comfirmGetting(JSONObject whereJson); JSONObject vehicleBinding(JSONObject whereJson); JSONObject materialBinding(JSONObject whereJson); - List getPointInfo(JSONObject whereJson); + JSONObject getPointInfo(JSONObject whereJson); + + JSONObject selectRegionInfo(JSONObject whereJson); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/impl/PdaTaskServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/impl/PdaTaskServiceImpl.java index ecb67f4..7cfbea7 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/impl/PdaTaskServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/impl/PdaTaskServiceImpl.java @@ -10,6 +10,7 @@ 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.extension.plugins.pagination.Page; +import com.github.pagehelper.PageHelper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -18,6 +19,8 @@ import org.nl.common.domain.query.PageQuery; import org.nl.common.exception.BadRequestException; import org.nl.common.utils.CodeUtil; import org.nl.common.utils.SecurityUtils; +import org.nl.wms.basedata.master.unit.service.dao.Measureunit; +import org.nl.wms.basedata.master.unit.service.dao.mapper.MeasureunitMapper; import org.nl.wms.basedata.material.service.IMdMeMaterialbaseService; import org.nl.wms.basedata.material.service.dao.MdMeMaterialbase; import org.nl.wms.basedata.material.service.dao.mapper.MdMeMaterialbaseMapper; @@ -27,8 +30,12 @@ import org.nl.wms.pda.task.service.dao.dto.MoveDto; import org.nl.wms.pda.task.service.dao.mapper.PdaMapper; import org.nl.wms.pda.task.service.dao.vo.PdaResponseVo; import org.nl.wms.pda.util.PdaResponse; +import org.nl.wms.sch.group.service.IMdPbGroupplatedtlService; import org.nl.wms.sch.group.service.dao.GroupPlate; +import org.nl.wms.sch.group.service.dao.GroupPlatedtl; import org.nl.wms.sch.group.service.dao.mapper.MdPbGroupplateMapper; +import org.nl.wms.sch.group.service.dao.mapper.MdPbGroupplatedtlMapper; +import org.nl.wms.sch.group.service.enums.GroupStatus; import org.nl.wms.sch.point.service.ISchBasePointService; import org.nl.wms.sch.point.service.dao.SchBasePoint; import org.nl.wms.sch.point.service.dao.mapper.SchBasePointMapper; @@ -38,6 +45,7 @@ import org.nl.wms.sch.task.service.ISchBaseTaskService; import org.nl.wms.sch.task.service.dao.SchBaseTask; import org.nl.wms.sch.task.service.dao.mapper.SchBaseTaskMapper; import org.nl.wms.sch.task_manage.GeneralDefinition; +import org.nl.wms.sch.task_manage.enums.PointStatusEnum; import org.nl.wms.sch.tasks.PdaPointTask; import org.nl.wms.sch.tasks.netsl.NETSLTask; import org.nl.wms.util.TaskUtils; @@ -47,6 +55,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; @Service @RequiredArgsConstructor @@ -67,6 +76,10 @@ public class PdaTaskServiceImpl implements PdaTaskService { private PdaPointTask pdaPointTask; @Autowired private MdPbGroupplateMapper groupplateMapper; + @Autowired + private IMdPbGroupplatedtlService groupplatedtlService; + @Autowired + private MeasureunitMapper measureunitMapper; @Override @Transactional(rollbackFor = Exception.class) @@ -101,7 +114,6 @@ public class PdaTaskServiceImpl implements PdaTaskService { param.put("device_code", point.getPoint_code()); param.put("material_code", material_code); param.put("requestNo", IdUtil.simpleUUID()); - param.put("material_code", material_code); param.put("config_code", "NETSLTask"); param.put("vehicle_qty", "1"); param.put("user_id", "1"); @@ -129,7 +141,7 @@ public class PdaTaskServiceImpl implements PdaTaskService { private SchBasePoint checkNextPoint(SchBasePoint schBasePoint, String region_code) { //如果是MB物料的上料点 需要下发二次分配点位 - if ("MB".equals(schBasePoint.getPoint_code())) { + if ("MB".contains(schBasePoint.getPoint_code())) { if ("L1".equals(region_code)) { return getWaitPoint(region_code); } else { @@ -205,10 +217,10 @@ public class PdaTaskServiceImpl implements PdaTaskService { throw new BadRequestException("点位" + point_code + "不存在!"); } JSONObject jo = data.getJSONObject(0); - String material_name = jo.getString("material_name"); - MdMeMaterialbase mdMeMaterialbase = mdMeMaterialbaseMapper.selectOne(new LambdaQueryWrapper().eq(MdMeMaterialbase::getMaterial_name, material_name)); + String material_code = jo.getString("material_code"); + MdMeMaterialbase mdMeMaterialbase = mdMeMaterialbaseMapper.selectOne(new LambdaQueryWrapper().eq(MdMeMaterialbase::getMaterial_code, material_code)); if (mdMeMaterialbase == null) { - throw new BadRequestException("当前物料不存在【"+material_name+"】"); + throw new BadRequestException("当前物料不存在【"+material_code+"】"); } String vehicleCode = "TP" + TaskUtils.getDateTime("yyMMddHHmmss") + CodeUtil.getNewCode("VEHICLE_CODE"); JSONObject param = new JSONObject(); @@ -223,44 +235,71 @@ public class PdaTaskServiceImpl implements PdaTaskService { param.put("vehicle_code", vehicleCode); param.put("vehicle_qty", "1"); param.put("user_id", "1"); + param.put("region_code", region_code); taskService.apply(param); //维护物料信息 - packageData(data,point_code); + packageData(data,point_code,vehicleCode); return PdaResponseVo.pdaResultOk("任务创建成功"); } - private void packageData(JSONArray data,String point_code) { + private void packageData(JSONArray data,String point_code,String vehicleCode) { JSONObject jo = data.getJSONObject(0); String material_name = jo.getString("material_name"); MdMeMaterialbase mdMeMaterialbase = mdMeMaterialbaseMapper.selectOne(new LambdaQueryWrapper().eq(MdMeMaterialbase::getMaterial_name, material_name)); if (mdMeMaterialbase == null) { throw new BadRequestException("当前物料不存在【"+material_name+"】"); } - String pscn = jo.getString("pscn"); String measure_unit_id = jo.getString("measure_unit_id"); + Measureunit measureunit = measureunitMapper.selectOne(new LambdaQueryWrapper().eq(Measureunit::getMeasure_unit_id, measure_unit_id)); + if(StrUtil.isEmpty(vehicleCode)) { + vehicleCode = "TP" + TaskUtils.getDateTime("yyMMddHHmmss") + CodeUtil.getNewCode("VEHICLE_CODE"); + } + String group_id = org.nl.common.utils.IdUtil.getStringId(); List list = new ArrayList<>(); + List groupPlatedtls = new ArrayList<>(); + int qty = 0; for (int i = 0; i < data.size(); i++) { JSONObject jsonObject = data.getJSONObject(i); String container_code = jsonObject.getString("container_code"); + qty += jsonObject.getIntValue("qty"); + GroupPlatedtl groupPlatedtlBuilder = GroupPlatedtl.builder() + .groupdtl_id(org.nl.common.utils.IdUtil.getStringId()) + .group_id(group_id) + .pcsn(jsonObject.getString("pcsn")) + .container_code(container_code) + .storagevehicle_code(vehicleCode) + .qty(jsonObject.getIntValue("qty")) + .material_code(mdMeMaterialbase.getMaterial_code()) + .material_name(mdMeMaterialbase.getMaterial_name()) + .measure_unit_id(measure_unit_id) + .unit_name(measureunit.getUnit_name()) + .build(); + groupPlatedtls.add(groupPlatedtlBuilder); list.add(container_code); } - String ext_code = String.join(",", list); - String vehicleCode = "TP" + TaskUtils.getDateTime("yyMMddHHmmss") + CodeUtil.getNewCode("VEHICLE_CODE"); - - GroupPlate.GroupPlateBuilder groupPlateBuilder = GroupPlate.builder() - .group_id(org.nl.common.utils.IdUtil.getStringId()) + groupplatedtlService.saveBatch(groupPlatedtls); + //找到最小卷号 + String pscn = list.stream().min(String::compareTo).orElse(""); + GroupPlate groupPlateBuilder = GroupPlate.builder() + .group_id(group_id) .material_code(mdMeMaterialbase.getMaterial_code()) + .material_name(mdMeMaterialbase.getMaterial_name()) .pcsn(pscn) + .qty(qty) .measure_unit_id(measure_unit_id) + .unit_name(measureunit.getUnit_name()) .storagevehicle_code(vehicleCode) - .ext_code(ext_code) .create_id(SecurityUtils.getCurrentUserId()) .create_name(SecurityUtils.getCurrentNickName()) - .create_time(DateUtil.now()); - groupplateMapper.insert(groupPlateBuilder.build()); + .create_time(DateUtil.now()) + .ext_code(list.toString()) + .build(); + groupplateMapper.insert(groupPlateBuilder); SchBasePoint point = pointMapper.selectOne(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, point_code)); point.setStoragevehicle_code(vehicleCode); point.setMaterial_code(mdMeMaterialbase.getMaterial_code()); + point.setUpdate_time(DateUtil.now()); + point.setUpdate_id(SecurityUtils.getCurrentUserId()); point.setPoint_status("2"); pointMapper.updateById(point); } @@ -305,11 +344,7 @@ public class PdaTaskServiceImpl implements PdaTaskService { @Override public JSONObject selectMaterials(JSONObject whereJson) { - List list = mdMeMaterialbaseMapper.selectList( - new LambdaQueryWrapper().eq(ObjectUtil.isNotEmpty(whereJson.getString("blurry")), MdMeMaterialbase::getMaterial_id, whereJson.getString("blurry")) - .or() - .eq(ObjectUtil.isNotEmpty(whereJson.getString("blurry")), MdMeMaterialbase::getMaterial_code, whereJson.getString("blurry")) - ); + List list = mdMeMaterialbaseMapper.selectAllMaters(whereJson); JSONObject ret = new JSONObject(); if (ObjectUtil.isNotEmpty(list)) { ret.put("code", String.valueOf(HttpStatus.HTTP_OK)); @@ -322,7 +357,43 @@ public class PdaTaskServiceImpl implements PdaTaskService { @Override public JSONObject getMaterialInfoByPoint(JSONObject whereJson) { - return null; + String point_code = whereJson.getString("point_code"); + if (ObjectUtil.isEmpty(point_code)){ + throw new BadRequestException("点位不能为空!"); + } + SchBasePoint point = pointMapper.selectOne(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, point_code)); + if (ObjectUtil.isEmpty(point)) { + throw new BadRequestException("点位不存在!"); + } + String storagevehicle_code = point.getStoragevehicle_code(); + List list = new ArrayList<>(); + JSONArray arr = new JSONArray(); + if (ObjectUtil.isNotEmpty(storagevehicle_code)) { + GroupPlate groupPlate = groupplateMapper.selectOne(new LambdaQueryWrapper() + .eq(GroupPlate::getStoragevehicle_code, storagevehicle_code) + .eq(GroupPlate::getStatus, GroupStatus.START.getCode())); + if (ObjectUtil.isNotEmpty(groupPlate)) { + String group_id = groupPlate.getGroup_id(); + list = groupplatedtlService.getGroupPlatedtlList(group_id); + if (ObjectUtil.isNotEmpty(list)) { + Measureunit measureunit = measureunitMapper.selectOne(new LambdaQueryWrapper().eq(Measureunit::getMeasure_unit_id, list.get(0).getMeasure_unit_id())); + list.forEach(groupPlatedtl -> { + JSONObject jo = new JSONObject(); + jo.put("container_code", groupPlatedtl.getContainer_code()); + jo.put("material_code", groupPlatedtl.getMaterial_code()); + jo.put("material_name", groupPlatedtl.getMaterial_name()); + jo.put("qty", groupPlatedtl.getQty()); + jo.put("measure_unit_id", measureunit.getUnit_name()); + arr.add(jo); + }); + } + } + } + JSONObject ret = new JSONObject(); + ret.put("code", String.valueOf(HttpStatus.HTTP_OK)); + ret.put("message", "查询成功"); + ret.put("data", arr); + return ret; } @Override @@ -366,10 +437,26 @@ public class PdaTaskServiceImpl implements PdaTaskService { } @Override - public PdaResponseVo comfirmGetting(JSONObject whereJson) { + public JSONObject comfirmGetting(JSONObject whereJson) { String point_code = whereJson.getString("point_code"); - - return PdaResponseVo.pdaResultOk("取货完成"); + if (ObjectUtil.isEmpty(point_code)){ + throw new BadRequestException("点位不能为空!"); + } + SchBasePoint point = pointMapper.selectOne(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, point_code)); + if (ObjectUtil.isEmpty(point)) { + throw new BadRequestException("点位不存在!"); + } + if (ObjectUtil.isNotEmpty(point.getStoragevehicle_code())){ + GroupPlate groupPlate = groupplateMapper.selectOne(new LambdaQueryWrapper().eq(GroupPlate::getStoragevehicle_code, point.getStoragevehicle_code())); + groupPlate.setStatus(GroupStatus.OUT.getCode()); + } + point.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode()); + point.setStoragevehicle_code(""); + pointMapper.updateById(point); + JSONObject ret = new JSONObject(); + ret.put("status", String.valueOf(HttpStatus.HTTP_OK)); + ret.put("message","操作成功"); + return ret; } @Override @@ -395,7 +482,7 @@ public class PdaTaskServiceImpl implements PdaTaskService { if (ObjectUtil.isEmpty(data)){ throw new BadRequestException("物料数据不能为空"); } - packageData(data,point_code); + packageData(data,point_code,null); JSONObject ret = new JSONObject(); ret.put("status", String.valueOf(HttpStatus.HTTP_OK)); ret.put("message","物料绑定成功"); @@ -403,9 +490,41 @@ public class PdaTaskServiceImpl implements PdaTaskService { } @Override - public List getPointInfo(JSONObject whereJson) { + public JSONObject getPointInfo(JSONObject whereJson) { List list = pointMapper.queryPointInfo(whereJson); - return list; + JSONArray arr = new JSONArray(); + list.forEach(item -> { + GroupPlate groupPlate = groupplateMapper.selectOne(new LambdaQueryWrapper() + .eq(GroupPlate::getStoragevehicle_code, item.getString("storagevehicle_code")) + .eq(GroupPlate::getStatus, GroupStatus.START.getCode())); + if (ObjectUtil.isEmpty(groupPlate)){ + return; + } + List groupPlatedtlList = groupplatedtlService.getGroupPlatedtlList(item.getString("group_id")); + List containerCodeList = groupPlatedtlList.stream() + .map(GroupPlatedtl::getContainer_code) + .collect(Collectors.toList()); + JSONObject jo = new JSONObject(); + jo.put("point_code", item.getString("point_code")); + jo.put("is_used", item.getString("is_used")); + jo.put("material_code", item.getString("material_code")); + jo.put("material_name", item.getString("material_name")); + jo.put("qty", item.getString("qty")); + jo.put("measure_unit_id", item.getString("unit_name")); + jo.put("containers", containerCodeList); + arr.add(jo); + }); + JSONObject ret = new JSONObject(); + ret.put("code", String.valueOf(HttpStatus.HTTP_OK)); + ret.put("message", "查询成功"); + ret.put("data", arr); + return ret; + } + + @Override + public JSONObject selectRegionInfo(JSONObject whereJson) { + PageHelper.startPage(whereJson.getIntValue("page"), whereJson.getIntValue("size")); + return null; } /** diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/controller/GroupController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/controller/GroupController.java index 276bbee..5fdb810 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/controller/GroupController.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/controller/GroupController.java @@ -2,6 +2,8 @@ package org.nl.wms.sch.group.controller; import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; @@ -11,13 +13,20 @@ 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.CodeUtil; import org.nl.common.utils.IdUtil; import org.nl.common.utils.SecurityUtils; import org.nl.wms.basedata.master.vehicle.service.IStoragevehicleinfoService; import org.nl.wms.basedata.master.vehicle.service.dao.Storagevehicleinfo; +import org.nl.wms.basedata.material.service.dao.MdMeMaterialbase; +import org.nl.wms.basedata.material.service.dao.mapper.MdMeMaterialbaseMapper; import org.nl.wms.sch.group.service.IMdPbGroupplateService; +import org.nl.wms.sch.group.service.IMdPbGroupplatedtlService; import org.nl.wms.sch.group.service.dao.GroupPlate; +import org.nl.wms.sch.group.service.dao.GroupPlatedtl; +import org.nl.wms.sch.group.service.dao.mapper.MdPbGroupplateMapper; import org.nl.wms.sch.group.service.enums.GroupStatus; +import org.nl.wms.util.TaskUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -25,8 +34,11 @@ import org.springframework.util.Assert; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; import java.util.Map; import java.util.Set; +import java.util.stream.Collectors; /** @@ -47,6 +59,12 @@ public class GroupController { private final IMdPbGroupplateService iMdPbGroupplateService; @Autowired private final IStoragevehicleinfoService iStoragevehicleinfoService; + @Autowired + private MdMeMaterialbaseMapper mdMeMaterialbaseMapper; + @Autowired + private MdPbGroupplateMapper groupplateMapper; + @Autowired + private IMdPbGroupplatedtlService groupplatedtlService; @GetMapping @@ -59,19 +77,60 @@ public class GroupController { @PostMapping @Log("新增组盘组盘") public ResponseEntity create(@RequestBody JSONObject group) { - Assert.noNullElements(new Object[]{group,group.get("material_code"),group.get("storagevehicle_code"),group.get("qty")},"请求参数不能为空"); - GroupPlate groupPlate = group.toJavaObject(GroupPlate.class); - Storagevehicleinfo one = iStoragevehicleinfoService.getOne(new LambdaQueryWrapper() - .eq(Storagevehicleinfo::getStoragevehicle_code, groupPlate.getStoragevehicle_code())); - if (one != null){ - throw new BadRequestException("当前载具组盘信息已存在"); + JSONArray tableData = group.getJSONArray("tableData"); + List rows = tableData.stream() + .map(row -> JSONObject.parseObject(JSON.toJSONString(row))) + .collect(Collectors.toList()); + JSONObject jo = rows.get(0); + String material_name = jo.getString("material_name"); + MdMeMaterialbase mdMeMaterialbase = mdMeMaterialbaseMapper.selectOne(new LambdaQueryWrapper().eq(MdMeMaterialbase::getMaterial_name, material_name)); + if (mdMeMaterialbase == null) { + throw new BadRequestException("当前物料不存在【"+material_name+"】"); } - groupPlate.setGroup_id(IdUtil.getStringId()); - groupPlate.setCreate_id(SecurityUtils.getCurrentUserId()); - groupPlate.setCreate_name(SecurityUtils.getCurrentUsername()); - groupPlate.setCreate_time(DateUtil.now()); - groupPlate.setStatus(GroupStatus.START.getCode()); - iMdPbGroupplateService.save(groupPlate); + String measure_unit_id = jo.getString("measure_unit_id"); + String unit_name = jo.getString("unit_name"); + String vehicleCode = "TP" + TaskUtils.getDateTime("yyMMddHHmmss") + CodeUtil.getNewCode("VEHICLE_CODE"); + String group_id = org.nl.common.utils.IdUtil.getStringId(); + List list = new ArrayList<>(); + List groupPlatedtls = new ArrayList<>(); + int qty = 0; + for (int i = 0; i < rows.size(); i++) { + JSONObject jsonObject = rows.get(i); + String container_code = jsonObject.getString("container_code"); + qty += jsonObject.getIntValue("qty"); + GroupPlatedtl groupPlatedtlBuilder = GroupPlatedtl.builder() + .groupdtl_id(org.nl.common.utils.IdUtil.getStringId()) + .group_id(group_id) + .pcsn(jsonObject.getString("pcsn")) + .container_code(container_code) + .storagevehicle_code(vehicleCode) + .qty(jsonObject.getIntValue("qty")) + .material_code(mdMeMaterialbase.getMaterial_code()) + .material_name(mdMeMaterialbase.getMaterial_name()) + .measure_unit_id(measure_unit_id) + .unit_name(unit_name) + .build(); + groupPlatedtls.add(groupPlatedtlBuilder); + list.add(container_code); + } + groupplatedtlService.saveBatch(groupPlatedtls); + //找到最小卷号 + String pscn = list.stream().min(String::compareTo).orElse(""); + GroupPlate groupPlateBuilder = GroupPlate.builder() + .group_id(group_id) + .material_code(mdMeMaterialbase.getMaterial_code()) + .material_name(mdMeMaterialbase.getMaterial_name()) + .pcsn(pscn) + .qty(qty) + .measure_unit_id(measure_unit_id) + .unit_name(unit_name) + .storagevehicle_code(vehicleCode) + .create_id(SecurityUtils.getCurrentUserId()) + .create_name(SecurityUtils.getCurrentNickName()) + .create_time(DateUtil.now()) + .ext_code(list.toString()) + .build(); + groupplateMapper.insert(groupPlateBuilder); return new ResponseEntity<>(HttpStatus.OK); } @@ -81,4 +140,11 @@ public class GroupController { iMdPbGroupplateService.delete(ids); return new ResponseEntity<>(HttpStatus.OK); } + + @GetMapping("/getDtl") + @Log("查询明细") + + public ResponseEntity getOutBillDtl(@RequestParam Map whereJson) { + return new ResponseEntity<>(iMdPbGroupplateService.getDtl(whereJson), HttpStatus.OK); + } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/controller/GroupdtlController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/controller/GroupdtlController.java new file mode 100644 index 0000000..5f73b95 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/controller/GroupdtlController.java @@ -0,0 +1,13 @@ +package org.nl.wms.sch.group.controller; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/groupdtl") +@Slf4j +public class GroupdtlController { +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/IMdPbGroupplateService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/IMdPbGroupplateService.java index b470a7f..ea1a694 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/IMdPbGroupplateService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/IMdPbGroupplateService.java @@ -1,5 +1,6 @@ package org.nl.wms.sch.group.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; @@ -35,4 +36,5 @@ public interface IMdPbGroupplateService extends IService { void delete(Set ids); + JSONArray getDtl(Map whereJson); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/IMdPbGroupplatedtlService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/IMdPbGroupplatedtlService.java new file mode 100644 index 0000000..2974043 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/IMdPbGroupplatedtlService.java @@ -0,0 +1,10 @@ +package org.nl.wms.sch.group.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.wms.sch.group.service.dao.GroupPlatedtl; + +import java.util.List; + +public interface IMdPbGroupplatedtlService extends IService { + List getGroupPlatedtlList(String groupId); +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/GroupPlate.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/GroupPlate.java index f026d50..74ec687 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/GroupPlate.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/GroupPlate.java @@ -38,6 +38,11 @@ public class GroupPlate implements Serializable { */ private String material_code; + /** + * 物料名称 + */ + private String material_name; + /** * 批次 diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/GroupPlatedtl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/GroupPlatedtl.java new file mode 100644 index 0000000..78dee50 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/GroupPlatedtl.java @@ -0,0 +1,115 @@ +package org.nl.wms.sch.group.service.dao; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@TableName("md_pb_groupplatedtl") +public class GroupPlatedtl { + private static final long serialVersionUID = 1L; + + /** + * 组盘明细标识 + */ + @TableId("groupdtl_id") + private String groupdtl_id; + + /** + * 组盘标识 + */ + private String group_id; + + /** + * 载具编码 + */ + private String storagevehicle_code; + + /** + * 物料编码 + */ + private String material_code; + + /** + * 物料名称 + */ + private String material_name; + + /** + * 卷号 + */ + private String container_code; + + + /** + * 批次 + */ + private String pcsn; + + /** + * 计量单位标识 + */ + private String measure_unit_id; + + /** + * 计量单位名称 + */ + private String unit_name; + + /** + * 组盘数量 + */ + private int qty; + + /** + * 冻结数量 + */ + private int frozen_qty; + + /** + * 备注 + */ + private String remark; + + /** + * 备注 + */ + private int is_delete; + + + /** + * 组盘人 + */ + private String create_id; + + /** + * 组盘人名称 + */ + private String create_name; + + /** + * 组盘时间 + */ + private String create_time; + + /** + * 修改人 + */ + private String update_id; + + /** + * 修改人姓名 + */ + private String update_name; + + /** + * 修改时间 + */ + private String update_time; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/mapper/MdPbGroupplatedtlMapper.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/mapper/MdPbGroupplatedtlMapper.java new file mode 100644 index 0000000..2838a94 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/mapper/MdPbGroupplatedtlMapper.java @@ -0,0 +1,12 @@ +package org.nl.wms.sch.group.service.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.nl.wms.sch.group.service.dao.GroupPlatedtl; + +import java.util.List; + +@Mapper +public interface MdPbGroupplatedtlMapper extends BaseMapper { +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dto/GroupPlatedtlDto.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dto/GroupPlatedtlDto.java new file mode 100644 index 0000000..e28934b --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dto/GroupPlatedtlDto.java @@ -0,0 +1,8 @@ +package org.nl.wms.sch.group.service.dto; + +import lombok.Data; +import org.nl.wms.sch.group.service.dao.GroupPlatedtl; + +@Data +public class GroupPlatedtlDto extends GroupPlatedtl { +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/enums/GroupStatus.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/enums/GroupStatus.java index 1fc6ef8..03534eb 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/enums/GroupStatus.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/enums/GroupStatus.java @@ -7,7 +7,8 @@ import lombok.Getter; @Getter @AllArgsConstructor public enum GroupStatus { - START("1","生成"); + START("1","组盘入库"), + OUT("2","出库"); private String code; private String desc; diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/MdPbGroupplateServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/MdPbGroupplateServiceImpl.java index 1d40045..3d265f0 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/MdPbGroupplateServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/MdPbGroupplateServiceImpl.java @@ -1,13 +1,19 @@ package org.nl.wms.sch.group.service.impl; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.nl.common.domain.query.PageQuery; import org.nl.wms.sch.group.service.IMdPbGroupplateService; import org.nl.wms.sch.group.service.dao.GroupPlate; +import org.nl.wms.sch.group.service.dao.GroupPlatedtl; import org.nl.wms.sch.group.service.dao.mapper.MdPbGroupplateMapper; +import org.nl.wms.sch.group.service.dao.mapper.MdPbGroupplatedtlMapper; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -25,6 +31,8 @@ import java.util.Set; */ @Service public class MdPbGroupplateServiceImpl extends ServiceImpl implements IMdPbGroupplateService { + @Autowired + private MdPbGroupplatedtlMapper mdPbGroupplatedtlMapper; @Override @@ -39,5 +47,16 @@ public class MdPbGroupplateServiceImpl extends ServiceImpl list = mdPbGroupplatedtlMapper.selectList(new LambdaQueryWrapper().eq(GroupPlatedtl::getGroup_id, group_id)); + if (list != null){ + JSONArray arr = JSONArray.parseArray(JSON.toJSONString(list)); + return arr; + } + return null; + } + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/MdPbGroupplatedtlServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/MdPbGroupplatedtlServiceImpl.java new file mode 100644 index 0000000..c5cd558 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/MdPbGroupplatedtlServiceImpl.java @@ -0,0 +1,23 @@ +package org.nl.wms.sch.group.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.wms.sch.group.service.IMdPbGroupplatedtlService; +import org.nl.wms.sch.group.service.dao.GroupPlatedtl; +import org.nl.wms.sch.group.service.dao.mapper.MdPbGroupplatedtlMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class MdPbGroupplatedtlServiceImpl extends ServiceImpl implements IMdPbGroupplatedtlService { + + @Autowired + private MdPbGroupplatedtlMapper mdpbGroupplatedtlMapper; + @Override + public List getGroupPlatedtlList(String groupId) { + List list = mdpbGroupplatedtlMapper.selectList(new LambdaQueryWrapper().eq(GroupPlatedtl::getGroup_id, groupId)); + return list.size() > 0 ? list : null; + } +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/ISchBasePointService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/ISchBasePointService.java index a1082c7..8e34967 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/ISchBasePointService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/ISchBasePointService.java @@ -79,4 +79,10 @@ public interface ISchBasePointService extends IService { TableDataInfo queryStruct(RegionStructQuery query, PageQuery pageQuery); SchBasePoint findByCode(String point_code); + + List getSamePoints(String regionCode, String material_code); + + List getPointByMaxCol(String regionCode, int col); + + List getEmptyPoints(String regionCode); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.java index 276281a..3c10444 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.java @@ -39,4 +39,8 @@ public interface SchBasePointMapper extends BaseMapper { List selectListByRegion(String region); List queryPointInfo(@Param("param") JSONObject whereJson); + + List getPointByMaxCol(@Param("regionCode") String regionCode, @Param("col") int col); + + List getEmptyPoints(@Param("regionCode") String regionCode); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.xml index 6f3dbdd..dc50d4f 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.xml +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.xml @@ -62,7 +62,7 @@ md_pb_groupplate.frozen_qty, md_pb_groupplate.unit_name, md_pb_groupplate.status, - md_pb_groupplate.inbound_time, + md_pb_groupplate.create_time as inbound_time, md_pb_groupplate.remark from sch_base_point inner join md_pb_groupplate on sch_base_point.storagevehicle_code = md_pb_groupplate.storagevehicle_code @@ -104,28 +104,83 @@ + + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/impl/SchBasePointServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/impl/SchBasePointServiceImpl.java index df38151..3470896 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/impl/SchBasePointServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/impl/SchBasePointServiceImpl.java @@ -1,5 +1,6 @@ package org.nl.wms.sch.point.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.ObjectUtil; @@ -204,4 +205,35 @@ public class SchBasePointServiceImpl extends ServiceImpl().eq(SchBasePoint::getPoint_code, point_code)); return point; } + + @Override + public List getSamePoints(String regionCode, String material_code) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .eq(SchBasePoint::getRegion_code, regionCode) + .eq(SchBasePoint::getMaterial_code, material_code) + .orderByAsc(SchBasePoint::getIn_order_seq); + List list = pointMapper.selectList(queryWrapper); + if (CollUtil.isNotEmpty(list)){ + return list; + } + return null; + } + + @Override + public List getPointByMaxCol(String regionCode, int col) { + List list = pointMapper.getPointByMaxCol(regionCode, col); + if (CollUtil.isNotEmpty(list)){ + return list; + } + return null; + } + + @Override + public List getEmptyPoints(String regionCode) { + List list = pointMapper.getEmptyPoints(regionCode); + if (CollUtil.isNotEmpty(list)){ + return list; + } + return null; + } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/ISchBaseTaskService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/ISchBaseTaskService.java index b5c85e1..04751f0 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/ISchBaseTaskService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/ISchBaseTaskService.java @@ -113,4 +113,12 @@ public interface ISchBaseTaskService extends IService { * @return SchBaseTask */ SchBaseTask getByCode(String taskCode); + + /** + * 根据任务配置查询同台设备未完成的任务列表 + * @param config_code 任务配置 + * @param newPoint_code 设备 + * @return List + */ + List findUnFinishTasksByTaskConfigAndPointCode(String config_code, String newPoint_code); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/dao/SchBaseTask.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/dao/SchBaseTask.java index df277ef..6427785 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/dao/SchBaseTask.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/dao/SchBaseTask.java @@ -92,6 +92,7 @@ public class SchBaseTask implements Serializable { /** 更新时间 */ private String update_time; + private String request_param; @TableField(exist = false) private String task_type; diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskServiceImpl.java index 0bbc42f..04f7819 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskServiceImpl.java @@ -126,7 +126,7 @@ public class SchBaseTaskServiceImpl extends ServiceImpl lam = new LambdaQueryWrapper<>(); lam.eq(SchBaseTask::getConfig_code, config_code) - .ne(SchBaseTask::getIs_delete, true) + .ne(SchBaseTask::getIs_delete, false) .lt(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode()); List schBaseTasks = schBaseTaskMapper.selectList(lam); return schBaseTasks; @@ -262,4 +262,22 @@ public class SchBaseTaskServiceImpl extends ServiceImpl findUnFinishTasksByTaskConfigAndPointCode(String config_code, String newPoint_code) { + Assert.notNull(config_code, "任务配置编码不能为空!"); + LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); + lam.eq(SchBaseTask::getConfig_code, config_code) + .lt(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode()) + .and(la -> la.eq(SchBaseTask::getPoint_code1, newPoint_code) + .or() + .eq(SchBaseTask::getPoint_code2, newPoint_code) + .or() + .eq(SchBaseTask::getPoint_code3, newPoint_code) + .or() + .eq(SchBaseTask::getPoint_code4, newPoint_code)) + .eq(SchBaseTask::getIs_delete, false); + List schBaseTasks = schBaseTaskMapper.selectList(lam); + return schBaseTasks; + } + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java index 889eab0..d42a0b6 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java @@ -15,6 +15,7 @@ import org.nl.config.SpringContextHolder; import org.nl.config.language.LangProcess; import org.nl.wms.ext.acs.service.WmsToAcsService; import org.nl.wms.ext.acs.service.dto.to.wms.AcsResponse; +import org.nl.wms.sch.point.service.dao.SchBasePoint; import org.nl.wms.sch.task.service.ISchBaseTaskService; import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; import org.nl.wms.sch.task.service.dao.SchBaseTask; @@ -300,6 +301,7 @@ AbstractTask { task.setVehicle_type(vehicleType); task.setMaterial_code(material_code); task.setTask_status(TaskStatus.APPLY.getCode()); + task.setRequest_param(JSONObject.toJSONString(param)); // 将所有参数存到表中,后续需要可以提取 TaskUtils.setCreateByAcsOrPda(task, param); setTaskPoint(taskConfig, task, param.getString("device_code")); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AutoCreateTask.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AutoCreateTask.java index 34103d5..94a9523 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AutoCreateTask.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AutoCreateTask.java @@ -31,7 +31,7 @@ public class AutoCreateTask { private Map, Method> methodCache = new HashMap<>(); // 类加载时候执行扫描 static { - Reflections reflections = new Reflections("org.nl.wms.sch.task_manage.task.tasks"); + Reflections reflections = new Reflections("org.nl.wms.sch.tasks"); subTypes = reflections.getSubTypesOf(AbstractTask.class); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/PdaPointTask.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/PdaPointTask.java index 621bdc7..23b32e0 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/PdaPointTask.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/PdaPointTask.java @@ -112,8 +112,9 @@ public class PdaPointTask extends AbstractTask { private SchBasePoint findStartPoint(List startRegionStr) { // 钢托盘缓存区域的空盘是1 状态不同 - List points = NETXLMapper.findPointForNETXL(startRegionStr); - return ObjectUtil.isNotEmpty(points) ? points.get(0) : null; +// List points = NETXLMapper.findPointForNETXL(startRegionStr); +// return ObjectUtil.isNotEmpty(points) ? points.get(0) : null; + return null; } @Override diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/netsl/mapper/NETSLMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/netsl/mapper/NETSLMapper.xml index d24ee8e..59fa2ed 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/netsl/mapper/NETSLMapper.xml +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/netsl/mapper/NETSLMapper.xml @@ -10,7 +10,14 @@ WHERE ( (p.point_type = '1' AND p.region_code = #{startRegionStr[0]}) ) - AND (p.ing_task_code = '' OR p.ing_task_code IS NULL) + AND 0 = ( + SELECT COUNT(*) + FROM sch_base_task + WHERE (point_code1 = p.point_code + OR point_code2 = p.point_code) + AND task_status '5' + AND is_delete = '0' + ) AND g.material_code = #{material_code} AND p.point_status = '2' AND p.is_used = 1 diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/netxl/NETXLTask.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/netxl/NETXLTask.java index 373bb9d..2a4b26a 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/netxl/NETXLTask.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/netxl/NETXLTask.java @@ -2,6 +2,8 @@ package org.nl.wms.sch.tasks.netxl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.nl.common.exception.BadRequestException; import org.nl.system.service.notice.ISysNoticeService; @@ -24,6 +26,7 @@ import org.nl.wms.util.TaskUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; import java.util.Arrays; import java.util.List; @@ -44,7 +47,7 @@ public class NETXLTask extends AbstractTask { @Autowired private ISysNoticeService noticeService; @Autowired - private NETXLMapper NETXLMapper; + private NETXLMapper netxlMapper; @Override public void create() throws BadRequestException { @@ -55,10 +58,13 @@ public class NETXLTask extends AbstractTask { .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); for (SchBaseTask task : tasks) { TaskUtils.setUpdateByAcs(task); - List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")) + List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")) .collect(Collectors.toList()); // 找终点 - SchBasePoint point = findStartPoint(startRegionStr); + String requestParam = task.getRequest_param(); + JSONObject jsonObject = JSONObject.parseObject(requestParam); + String regionCode = jsonObject.getString("region_code"); + SchBasePoint point = findNextPoint(nextRegionStr, regionCode, task.getMaterial_code()); if (ObjectUtil.isEmpty(point)) { task.setRemark("未找到所需点位!"); taskService.updateById(task); @@ -68,8 +74,12 @@ public class NETXLTask extends AbstractTask { continue; } // 设置终点并修改创建成功状态 - task.setPoint_code1(point.getPoint_code()); + task.setPoint_code2(point.getPoint_code()); task.setTask_status(TaskStatus.CREATED.getCode()); + if ("E2".equals(regionCode)) { + //设置等待点 + task.setPoint_code3(point.getParent_point_code()); + } task.setRemark(""); taskService.updateById(task); @@ -86,18 +96,25 @@ public class NETXLTask extends AbstractTask { SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); TaskUtils.setUpdateByAcs(task); - List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")) + List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")) .collect(Collectors.toList()); // 找起点 - SchBasePoint point = findStartPoint(startRegionStr); + String requestParam = task.getRequest_param(); + JSONObject jsonObject = JSONObject.parseObject(requestParam); + String regionCode = jsonObject.getString("region_code"); + SchBasePoint point = findNextPoint(nextRegionStr, regionCode, task.getMaterial_code()); if (ObjectUtil.isEmpty(point)) { // 消息通知 - noticeService.createNotice("货架暂无托盘!", TASK_CONFIG_CODE + task.getPoint_code2(), + noticeService.createNotice("E反保管区没有空闲的点位!", TASK_CONFIG_CODE + task.getPoint_code1(), NoticeTypeEnum.WARN.getCode()); - throw new BadRequestException("货架暂无托盘!"); + throw new BadRequestException("E反保管区没有空闲的点位!"); } // 设置终点并修改创建成功状态 - task.setPoint_code1(point.getPoint_code()); + task.setPoint_code2(point.getPoint_code()); + if ("E2".equals(regionCode)) { + //设置等待点 + task.setPoint_code3(point.getParent_point_code()); + } task.setRemark(""); task.setTask_status(TaskStatus.CREATED.getCode()); taskService.save(task); @@ -107,12 +124,91 @@ public class NETXLTask extends AbstractTask { pointService.updateById(point); } - private SchBasePoint findStartPoint(List startRegionStr) { - // 钢托盘缓存区域的空盘是1 状态不同 - List points = NETXLMapper.findPointForNETXL(startRegionStr); - return ObjectUtil.isNotEmpty(points) ? points.get(0) : null; + private SchBasePoint findNextPoint(List nextRegionStr, String regionCode, String material_code) { + // 找到同一个区域下物料相同的所有点位 + if ("E2".equals(regionCode)) { + List list = pointService.getSamePoints(regionCode, material_code); + if (!CollectionUtils.isEmpty(list)) { + for (int i = 0; i < list.size(); i++) { + SchBasePoint point = list.get(0); + int col_num = point.getCol_num(); + if (col_num == 1) { + continue; + } + SchBasePoint newPoint; + String newPoint_code = ""; + int new_col = col_num-1; + // 校验当前点位相邻的点是否空闲 + for (int j = 0; j < (col_num - 1); j++) { + newPoint_code = forametDevice_code(point.getPoint_code(), new_col); + newPoint = pointService.findByCode(newPoint_code); + Boolean result = this.checkIsFree(newPoint_code); + if (!result) { + col_num = col_num - 1; + point = newPoint; + continue; + } + return point; + } + } + } else if (CollectionUtils.isEmpty(list)){ + //找一排都是空的点位 + //找最大列为空且没有任务的点位 + List points = pointService.getPointByMaxCol(regionCode, 3); + for (int i = 0; i < points.size(); i++) { + SchBasePoint thirdColPoint = points.get(0); + String firstColPointCode = thirdColPoint.getPoint_code().substring(0, thirdColPoint.getPoint_code().length() - 1) + "1"; + String secondColPointCode = thirdColPoint.getPoint_code().substring(0, thirdColPoint.getPoint_code().length() - 1) + "2"; + + // 查询第一列和第二列点位 + SchBasePoint firstColPoint = pointService.findByCode(firstColPointCode); + SchBasePoint secondColPoint = pointService.findByCode(secondColPointCode); + // 判断第一列和第二列点位是否为空且没有任务 + boolean isFirstColFree = checkIsEmpty(firstColPoint); + boolean isSecondColFree = checkIsEmpty(secondColPoint); + // 如果第一列和第二列都为空,则返回这个第三列点位 + if (isFirstColFree && isSecondColFree) { + return thirdColPoint; + } + continue; + } + } else { + return null; + } + } else { + //E1 + List points = netxlMapper.findPointForNETXL(nextRegionStr, regionCode); + return ObjectUtil.isNotEmpty(points) ? points.get(0) : null; + } + return null; } + private boolean checkIsEmpty(SchBasePoint point) { + if (point.getPoint_status().equals(PointStatusEnum.EMPTY_POINT.getCode()) && StrUtil.isEmpty(point.getIng_task_code())) { + return true; + } + return false; + } + + private Boolean checkIsFree(String point_code) { + SchBasePoint newPoint = pointService.findByCode(point_code); + // 判断点位是否有货 + if (newPoint.getPoint_status().equals(PointStatusEnum.EMPTY_VEHICLE.getCode())) { + return false; + } + List list = taskService.findUnFinishTasksByTaskConfigAndPointCode("NETSLTask", point_code); + if (list.size() > 0) { + return false; + } + return true; + } + + + private String forametDevice_code(String point_code, int col_num) { + return point_code.substring(0, point_code.length() - 1) + (col_num); + } + + @Override public void updateStatus(String task_code, TaskStatus status) { // 校验任务 @@ -167,8 +263,7 @@ public class NETXLTask extends AbstractTask { PointUtils.setUpdateByType(startPointObj, taskFinishedType); PointUtils.clearPoint(startPointObj); endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); -// endPointObj.setVehicle_type(GeneralDefinition.STEEL_TRAY); -// endPointObj.setVehicle_qty(taskObj.getVehicle_qty()); + endPointObj.setStoragevehicle_code(taskObj.getVehicle_code()); endPointObj.setUpdate_time(DateUtil.now()); PointUtils.setUpdateByType(endPointObj, taskFinishedType); pointService.updateById(endPointObj); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/netxl/mapper/NETXLMapper.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/netxl/mapper/NETXLMapper.java index 6810941..9db32ae 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/netxl/mapper/NETXLMapper.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/netxl/mapper/NETXLMapper.java @@ -5,5 +5,5 @@ import org.nl.wms.sch.point.service.dao.SchBasePoint; import java.util.List; public interface NETXLMapper { - List findPointForNETXL(List startRegionStr); + List findPointForNETXL(List nextRegionStrs,String regionCode); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/netxl/mapper/NETXLMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/netxl/mapper/NETXLMapper.xml index f8d7609..66cdaec 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/netxl/mapper/NETXLMapper.xml +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/netxl/mapper/NETXLMapper.xml @@ -4,17 +4,24 @@ diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thsl/THSLTask.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thsl/THSLTask.java index b2b62b7..087127e 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thsl/THSLTask.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thsl/THSLTask.java @@ -3,6 +3,7 @@ package org.nl.wms.sch.tasks.thsl; import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.nl.common.exception.BadRequestException; import org.nl.system.service.notice.ISysNoticeService; @@ -63,7 +64,7 @@ public class THSLTask extends AbstractTask { List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")) .collect(Collectors.toList()); // 找起点 - SchBasePoint point = findStartPoint(startRegionStr, task.getMaterial_code()); + SchBasePoint point = findStartPoint(startRegionStr,task.getMaterial_code()); if (ObjectUtil.isEmpty(point)) { task.setRemark("未找到所需点位!"); taskService.updateById(task); @@ -116,7 +117,7 @@ public class THSLTask extends AbstractTask { private SchBasePoint findStartPoint(List startRegionStr, String material_code) { - // 钢托盘缓存区域的空盘是1 状态不同 + // 根据物料和区域找到无任务的点位 List points = thslMapper.findPointForTHSL(startRegionStr, material_code); //找到最小PCSN的点位 SchBasePointDto schBasePointDto = points.stream() @@ -126,24 +127,25 @@ public class THSLTask extends AbstractTask { } String region_code = schBasePointDto.getRegion_code(); String point_code = schBasePointDto.getPoint_code(); + SchBasePoint point = pointService.findByCode(point_code); if ("E2".equals(region_code)) { - return getWaitPoint(point_code); + return getWaitPoint(point); } else if ("H1".equals(schBasePointDto.getRegion_code())) { - return getWaitPoint(point_code); + return getWaitPoint(point); } else if ("H2".equals(schBasePointDto.getRegion_code())) { - return getWaitPoint(point_code); + return getWaitPoint(point); }else { return ObjectUtil.isNotEmpty(schBasePointDto) ? Convert.convert(SchBasePoint.class, schBasePointDto) : null; } } - private SchBasePoint getWaitPoint(String point_code) { + private SchBasePoint getWaitPoint(SchBasePoint point) { //查找该区域空闲的等待点 - SchBasePoint point = pointService.findByCode(point_code.substring(0, point_code.length() - 2) + "00"); - if (ObjectUtil.isEmpty(point)){ - throw new BadRequestException("未找到点位编码为【" + point_code + "】所需的等待点位!"); + SchBasePoint waitPoint = pointService.findByCode(point.getParent_point_code()); + if (ObjectUtil.isEmpty(waitPoint)){ + throw new BadRequestException("未找到点位编码为【" + point.getParent_point_code() + "】所需的等待点位!"); } - return point; + return waitPoint; } @Override @@ -200,8 +202,7 @@ public class THSLTask extends AbstractTask { PointUtils.setUpdateByType(startPointObj, taskFinishedType); PointUtils.clearPoint(startPointObj); endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); -// endPointObj.setVehicle_type(GeneralDefinition.STEEL_TRAY); -// endPointObj.setVehicle_qty(taskObj.getVehicle_qty()); + endPointObj.setStoragevehicle_code(taskObj.getVehicle_code()); endPointObj.setUpdate_time(DateUtil.now()); PointUtils.setUpdateByType(endPointObj, taskFinishedType); pointService.updateById(endPointObj); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thsl/mapper/THSLMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thsl/mapper/THSLMapper.xml index 9ba5046..9d96920 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thsl/mapper/THSLMapper.xml +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thsl/mapper/THSLMapper.xml @@ -10,7 +10,14 @@ WHERE ( (p.point_type = '1' AND p.region_code = #{startRegionStr[0]}) ) - AND (p.ing_task_code = '' OR p.ing_task_code IS NULL) + AND 0 = ( + SELECT COUNT(*) + FROM sch_base_task + WHERE (point_code1 = p.point_code + OR point_code2 = p.point_code) + AND task_status '5' + AND is_delete = '0' + ) AND g.material_code = #{material_code} AND p.point_status = '2' AND p.is_used = 1 diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thxl/THXLTask.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thxl/THXLTask.java index ddc34a4..0233c04 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thxl/THXLTask.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thxl/THXLTask.java @@ -2,6 +2,8 @@ package org.nl.wms.sch.tasks.thxl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.nl.common.exception.BadRequestException; import org.nl.system.service.notice.ISysNoticeService; @@ -19,11 +21,13 @@ import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum; import org.nl.wms.sch.task_manage.task.TaskType; import org.nl.wms.sch.task_manage.task.core.TaskStatus; import org.nl.wms.sch.tasks.netxl.mapper.NETXLMapper; +import org.nl.wms.sch.tasks.thxl.mapper.THXLMapper; import org.nl.wms.util.PointUtils; import org.nl.wms.util.TaskUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; import java.util.Arrays; import java.util.List; @@ -43,7 +47,7 @@ public class THXLTask extends AbstractTask { @Autowired private ISysNoticeService noticeService; @Autowired - private NETXLMapper NETXLMapper; + private THXLMapper thxlMapper; @Override public void create() throws BadRequestException { @@ -54,10 +58,13 @@ public class THXLTask extends AbstractTask { .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); for (SchBaseTask task : tasks) { TaskUtils.setUpdateByAcs(task); - List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")) + List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")) .collect(Collectors.toList()); // 找终点 - SchBasePoint point = findStartPoint(startRegionStr); + String requestParam = task.getRequest_param(); + JSONObject jsonObject = JSONObject.parseObject(requestParam); + String regionCode = jsonObject.getString("region_code"); + SchBasePoint point = findNextPoint(nextRegionStr,regionCode,task.getMaterial_code()); if (ObjectUtil.isEmpty(point)) { task.setRemark("未找到所需点位!"); taskService.updateById(task); @@ -67,7 +74,7 @@ public class THXLTask extends AbstractTask { continue; } // 设置终点并修改创建成功状态 - task.setPoint_code1(point.getPoint_code()); + task.setPoint_code2(point.getPoint_code()); task.setTask_status(TaskStatus.CREATED.getCode()); task.setRemark(""); taskService.updateById(task); @@ -85,18 +92,23 @@ public class THXLTask extends AbstractTask { SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); TaskUtils.setUpdateByAcs(task); - List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")) + List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")) .collect(Collectors.toList()); - // 找起点 - SchBasePoint point = findStartPoint(startRegionStr); + // 找终点 + String requestParam = task.getRequest_param(); + JSONObject jsonObject = JSONObject.parseObject(requestParam); + String regionCode = jsonObject.getString("region_code"); + SchBasePoint point = findNextPoint(nextRegionStr,regionCode,task.getMaterial_code()); if (ObjectUtil.isEmpty(point)) { // 消息通知 - noticeService.createNotice("货架暂无托盘!", TASK_CONFIG_CODE + task.getPoint_code2(), + noticeService.createNotice("待捆包区域无空闲点位!", TASK_CONFIG_CODE + task.getPoint_code1(), NoticeTypeEnum.WARN.getCode()); - throw new BadRequestException("货架暂无托盘!"); + throw new BadRequestException("待捆包区域无空闲点位!"); } // 设置终点并修改创建成功状态 - task.setPoint_code1(point.getPoint_code()); + task.setPoint_code2(point.getPoint_code()); + //设置等待点 + task.setPoint_code3(point.getParent_point_code()); task.setRemark(""); task.setTask_status(TaskStatus.CREATED.getCode()); taskService.save(task); @@ -106,10 +118,52 @@ public class THXLTask extends AbstractTask { pointService.updateById(point); } - private SchBasePoint findStartPoint(List startRegionStr) { - // 钢托盘缓存区域的空盘是1 状态不同 - List points = NETXLMapper.findPointForNETXL(startRegionStr); - return ObjectUtil.isNotEmpty(points) ? points.get(0) : null; + private SchBasePoint findNextPoint(List nextRegionStr, String regionCode, String material_code) { + List list = pointService.getSamePoints(regionCode, material_code); + if (!CollectionUtils.isEmpty(list)) { + for (int i = 0; i < list.size(); i++) { + SchBasePoint point = list.get(0); + int col_num = point.getCol_num(); + if (col_num == 1) { + continue; + } + SchBasePoint newPoint; + String newPoint_code = ""; + int new_col = col_num-1; + // 校验当前点位相邻的点是否空闲 + for (int j = 0; j < (col_num - 1); j++) { + newPoint_code = forametDevice_code(point.getPoint_code(), new_col); + newPoint = pointService.findByCode(newPoint_code); + Boolean result = this.checkIsFree(newPoint_code); + if (!result) { + col_num = col_num - 1; + point = newPoint; + continue; + } + return point; + } + } + } else if (CollectionUtils.isEmpty(list)){ + //找一排都是空的点位 + //找最大列为空且没有任务的点位 + List points = pointService.getPointByMaxCol(regionCode, 3); + for (int i = 0; i < points.size(); i++) { + SchBasePoint twoColPoint = points.get(0); + String firstColPointCode = twoColPoint.getPoint_code().substring(0, twoColPoint.getPoint_code().length() - 1) + "1"; + // 查询第一列 + SchBasePoint firstColPoint = pointService.findByCode(firstColPointCode); + // 判断第一列否为空且没有任务 + boolean isFirstColFree = checkIsEmpty(firstColPoint); + // 如果第一列为空,则返回这个第二列点位 + if (isFirstColFree) { + return twoColPoint; + } + continue; + } + } else { + return null; + } + return null; } @Override @@ -138,6 +192,32 @@ public class THXLTask extends AbstractTask { } + private boolean checkIsEmpty(SchBasePoint point) { + if (point.getPoint_status().equals(PointStatusEnum.EMPTY_POINT.getCode()) && StrUtil.isEmpty(point.getIng_task_code())) { + return true; + } + return false; + } + + private Boolean checkIsFree(String point_code) { + SchBasePoint newPoint = pointService.findByCode(point_code); + // 判断点位是否有货 + if (newPoint.getPoint_status().equals(PointStatusEnum.EMPTY_VEHICLE.getCode())) { + return false; + } + List list = taskService.findUnFinishTasksByTaskConfigAndPointCode("NETSLTask", point_code); + if (list.size() > 0) { + return false; + } + return true; + } + + + private String forametDevice_code(String point_code, int col_num) { + return point_code.substring(0, point_code.length() - 1) + (col_num); + } + + @Override public void forceFinish(String task_code) { SchBaseTask taskObj = taskService.getByCode(task_code); @@ -165,9 +245,9 @@ public class THXLTask extends AbstractTask { if (ObjectUtil.isNotEmpty(startPointObj)) { PointUtils.setUpdateByType(startPointObj, taskFinishedType); PointUtils.clearPoint(startPointObj); + endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); -// endPointObj.setVehicle_type(GeneralDefinition.STEEL_TRAY); -// endPointObj.setVehicle_qty(taskObj.getVehicle_qty()); + endPointObj.setStoragevehicle_code(taskObj.getVehicle_code()); endPointObj.setUpdate_time(DateUtil.now()); PointUtils.setUpdateByType(endPointObj, taskFinishedType); pointService.updateById(endPointObj); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thxl/mapper/THXLMapper.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thxl/mapper/THXLMapper.java new file mode 100644 index 0000000..545de71 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thxl/mapper/THXLMapper.java @@ -0,0 +1,9 @@ +package org.nl.wms.sch.tasks.thxl.mapper; + +import org.nl.wms.sch.point.service.dao.SchBasePoint; + +import java.util.List; + +public interface THXLMapper { + List findPointForTHXL(List nextRegionStrs, String regionCode); +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thxl/mapper/THXLMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thxl/mapper/THXLMapper.xml new file mode 100644 index 0000000..dbfcc42 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thxl/mapper/THXLMapper.xml @@ -0,0 +1,29 @@ + + + + + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/PointUtils.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/PointUtils.java index 987340a..462d165 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/PointUtils.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/PointUtils.java @@ -49,6 +49,7 @@ public class PointUtils { point.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode()); point.setVehicle_type(""); point.setStoragevehicle_code(""); + point.setMaterial_code(""); point.setIng_task_code(""); point.setVehicle_qty(0); point.setUpdate_time(DateUtil.now()); diff --git a/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml b/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml index 173cdb2..9eb520f 100644 --- a/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml +++ b/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml @@ -1,14 +1,14 @@ server: - port: 8011 + port: 8010 # 项目配置 nl: config: mysql: - ip: 192.168.81.251 + ip: 127.0.0.1 port: 3306 username: root - password: P@ssw0rd. - database: lms_standardv1 + password: 123456 + database: fengtiandl_lms redis: ip: 127.0.0.1 port: 6379 diff --git a/nladmin-system/nlsso-server/src/main/resources/config/application.yml b/nladmin-system/nlsso-server/src/main/resources/config/application.yml index 38d4fa7..9f2e7d5 100644 --- a/nladmin-system/nlsso-server/src/main/resources/config/application.yml +++ b/nladmin-system/nlsso-server/src/main/resources/config/application.yml @@ -57,7 +57,7 @@ spring: datasource: mysql: driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy - url: jdbc:log4jdbc:mysql://${DB_HOST:${nl.config.mysql.ip}}:${DB_PORT:${nl.config.mysql.port}}/${DB_NAME:${nl.config.mysql.database}}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true + url: jdbc:log4jdbc:mysql://${DB_HOST:${nl.config.mysql.ip}}:${DB_PORT:${nl.config.mysql.port}}/${DB_NAME:${nl.config.mysql.database}}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true username: ${DB_USER:${nl.config.mysql.username}} password: ${DB_PWD:${nl.config.mysql.password}} type: com.alibaba.druid.pool.DruidDataSource diff --git a/nladmin-ui/.env.development b/nladmin-ui/.env.development index e37a9a4..809e77f 100644 --- a/nladmin-ui/.env.development +++ b/nladmin-ui/.env.development @@ -1,8 +1,8 @@ ENV = 'development' # 接口地址 -VUE_APP_BASE_API = 'http://localhost:8011' -VUE_APP_WS_API = 'ws://localhost:8011' +VUE_APP_BASE_API = 'http://localhost:8010' +VUE_APP_WS_API = 'ws://localhost:8010' # 是否启用 babel-plugin-dynamic-import-node插件 VUE_CLI_BABEL_TRANSPILE_MODULES = true diff --git a/nladmin-ui/src/views/wms/basedata/material/MaterialDialog.vue b/nladmin-ui/src/views/wms/basedata/material/MaterialDialog.vue index e01adf7..343712c 100644 --- a/nladmin-ui/src/views/wms/basedata/material/MaterialDialog.vue +++ b/nladmin-ui/src/views/wms/basedata/material/MaterialDialog.vue @@ -51,6 +51,7 @@ + diff --git a/nladmin-ui/src/views/wms/pdm/group/AddDialog.vue b/nladmin-ui/src/views/wms/pdm/group/AddDialog.vue new file mode 100644 index 0000000..01cc6af --- /dev/null +++ b/nladmin-ui/src/views/wms/pdm/group/AddDialog.vue @@ -0,0 +1,228 @@ + + + + + diff --git a/nladmin-ui/src/views/wms/pdm/group/ViewDialog.vue b/nladmin-ui/src/views/wms/pdm/group/ViewDialog.vue new file mode 100644 index 0000000..8faf621 --- /dev/null +++ b/nladmin-ui/src/views/wms/pdm/group/ViewDialog.vue @@ -0,0 +1,185 @@ + + + + + diff --git a/nladmin-ui/src/views/wms/pdm/group/group.js b/nladmin-ui/src/views/wms/pdm/group/group.js index e927e8f..86ca8fb 100644 --- a/nladmin-ui/src/views/wms/pdm/group/group.js +++ b/nladmin-ui/src/views/wms/pdm/group/group.js @@ -24,4 +24,12 @@ export function edit(data) { }) } -export default { add, edit, del } +export function getDtl(params) { + return request({ + url: '/api/group/getDtl', + method: 'get', + params + }) +} + +export default { add, edit, del, getDtl } diff --git a/nladmin-ui/src/views/wms/pdm/group/index.vue b/nladmin-ui/src/views/wms/pdm/group/index.vue index 2709f7c..7aa2210 100644 --- a/nladmin-ui/src/views/wms/pdm/group/index.vue +++ b/nladmin-ui/src/views/wms/pdm/group/index.vue @@ -61,85 +61,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + @@ -178,24 +103,28 @@ + + + + diff --git a/nladmin-ui/src/views/wms/sch/group/index.vue b/nladmin-ui/src/views/wms/sch/group/index.vue index 2588dce..e23e506 100644 --- a/nladmin-ui/src/views/wms/sch/group/index.vue +++ b/nladmin-ui/src/views/wms/sch/group/index.vue @@ -235,20 +235,26 @@ - + - - - - - - - - + + + + + + + + + + + + @@ -289,6 +295,7 @@ + @@ -309,7 +316,7 @@ import crudSchBaseRegion from '@/views/wms/sch/region/schBaseRegion' const defaultForm = { group_id: null, - vehicle_code: null, + storagevehicle_code: null, vehicle_type: null, material_id: null, child_vehicle_code: null, @@ -366,6 +373,8 @@ export default { workShopList: [], pointList: [], regionList: [], + viewShow: false, + mstrow: {}, choose: '物料', materialDialog: false, workOrderDialog: false @@ -386,11 +395,56 @@ export default { this.workShopList = res }) }, + handleSelectionChange(val, row) { + if (val.length > 1) { + this.$refs.table.clearSelection() + this.$refs.table.toggleRowSelection(val.pop()) + this.buttonChange(row) + } else if (val.length === 1) { + this.buttonChange(row) + } else { + this.handleCurrentChange(null) + } + }, + onSelectAll() { + this.$refs.table.clearSelection() + this.handleCurrentChange(null) + }, + buttonChange(currentRow) { + if (currentRow !== null) { + this.currentRow = currentRow + if (currentRow.bill_status === '10' || currentRow.bill_status === '20' || currentRow.bill_status === '30' || currentRow.bill_status === '40') { + this.dis_flag = false + } else { + this.dis_flag = true + } + if (currentRow.bill_status === '30' || currentRow.bill_status === '40') { + this.task_flag = false + } else { + this.task_flag = true + } + } + }, + handleCurrentChange(currentRow) { + if (currentRow === null) { + this.dis_flag = true + this.task_flag = true + this.currentRow = {} + } + }, getRegionList() { crudSchBaseRegion.getRegionList().then(res => { this.regionList = res }) }, + toView(index, row) { + this.mstrow = row + this.viewShow = true + }, + querytable() { + this.onSelectAll() + this.crud.toQuery() + }, getMaterial() { if (this.choose === '物料') { this.materialDialog = true diff --git a/nladmin-ui/src/views/wms/sch/group/schBaseVehiclematerialgroup.js b/nladmin-ui/src/views/wms/sch/group/schBaseVehiclematerialgroup.js index 5921484..2c9a5f1 100644 --- a/nladmin-ui/src/views/wms/sch/group/schBaseVehiclematerialgroup.js +++ b/nladmin-ui/src/views/wms/sch/group/schBaseVehiclematerialgroup.js @@ -32,4 +32,6 @@ export function getGroup(data) { }) } + + export default { add, edit, del, getGroup }