diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/PackageInfoIvtEnum.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/PackageInfoIvtEnum.java index 0c29433..f3500eb 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/PackageInfoIvtEnum.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/PackageInfoIvtEnum.java @@ -37,7 +37,7 @@ public enum PackageInfoIvtEnum { //是否启用 IS_USED(MapOf.of("启用", "1", "未启用", "0")), //agv二次分配类型 - AGV_ACTION_TYPE(MapOf.of("普通任务", "1", "取货二次分配", "2", "放货二次分配", "3", "E2取放货二次分配", "4","HXT取放货二次分配","5")), + AGV_ACTION_TYPE(MapOf.of("普通任务", "1", "取货二次分配", "2", "放货二次分配", "3", "E2取放货二次分配", "4","取放货二次分配","5")), //二次分配请求类型 TASK_ACTION_TYPE(MapOf.of("普通任务", "1", "取货二次分配", "2", "放货二次分配", "3", "取放货二次分配", "4")), //是否自动下发 diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/service/dao/mapper/MdMeMaterialbaseMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/service/dao/mapper/MdMeMaterialbaseMapper.java index adb139c..b6a6847 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/service/dao/mapper/MdMeMaterialbaseMapper.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/service/dao/mapper/MdMeMaterialbaseMapper.java @@ -4,6 +4,9 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; import org.nl.wms.basedata.material.service.dao.MdMeMaterialbase; +import org.nl.wms.pda.task.service.dao.dto.MaterialDto; +import org.nl.wms.pda.task.service.dao.dto.PdaRequestDto; +import org.nl.wms.pda.task.service.dao.vo.PdaResponseVo; import java.util.List; @@ -17,7 +20,7 @@ import java.util.List; */ public interface MdMeMaterialbaseMapper extends BaseMapper { - List selectAllMaters(@Param("param") JSONObject whereJson); + List selectAllMaters(@Param("param") PdaRequestDto whereJson); List getMaterialTypes(); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/service/dao/mapper/MdMeMaterialbaseMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/service/dao/mapper/MdMeMaterialbaseMapper.xml index 34d1f65..1a2fcb0 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/service/dao/mapper/MdMeMaterialbaseMapper.xml +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata/material/service/dao/mapper/MdMeMaterialbaseMapper.xml @@ -1,8 +1,7 @@ - SELECT material_code, material_name, diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java index 82ab96f..3167b42 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java @@ -1,5 +1,6 @@ package org.nl.wms.ext.acs.service; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import org.nl.wms.ext.acs.service.dto.to.wms.AcsResponse; import org.nl.wms.sch.task_manage.AcsTaskDto; @@ -23,4 +24,12 @@ public interface WmsToAcsService { JSONObject putAction(JSONObject param); + /** + * 更新任务状态 + * + * @param arr / + * @return JSONObject + */ + JSONObject updateTask(JSONArray arr); + } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index dd15a75..30ef490 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -249,13 +249,15 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { private SchBasePoint getNewStartBasePoint(SchBaseTask baseTask) { String point_code1 = baseTask.getPoint_code1(); SchBasePoint schBasePoint = pointMapper.selectOne(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, point_code1)); - List list = pointMapper.selectList(new LambdaQueryWrapper() - .eq(SchBasePoint::getExt_point_code, baseTask.getPoint_code1()) //取货二次分配的等待点 - .eq(SchBasePoint::getRegion_code, schBasePoint.getRegion_code()) - .eq(SchBasePoint::getPoint_type, "1") - .eq(SchBasePoint::getIs_used, "1") - .eq(SchBasePoint::getPoint_status, "2") - .orderByAsc(SchBasePoint::getIn_order_seq)); + String region_code = schBasePoint.getRegion_code(); + List list = pointMapper.getNewStartBasePoints(point_code1, region_code); +// List list = pointMapper.selectList(new LambdaQueryWrapper() +// .eq(SchBasePoint::getExt_point_code, baseTask.getPoint_code1()) //取货二次分配的等待点 +// .eq(SchBasePoint::getRegion_code, schBasePoint.getRegion_code()) +// .eq(SchBasePoint::getPoint_type, "1") +// .eq(SchBasePoint::getIs_used, "1") +// .eq(SchBasePoint::getPoint_status, "2") +// .orderByAsc(SchBasePoint::getIn_order_seq)); if (ObjectUtils.isNotEmpty(list)) { return list.get(0); } else { diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java index 6b4d37c..fa332b3 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java @@ -3,6 +3,7 @@ package org.nl.wms.ext.acs.service.impl; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpRequest; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; @@ -88,4 +89,10 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { return result; } + @Override + public JSONObject updateTask(JSONArray whereJson) { + String api = "api/wms/updateTask"; + return AcsUtil.notifyAcs(api, whereJson); + } + } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/controller/PdaTaskController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/controller/PdaTaskController.java index 62664ef..2166b99 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/controller/PdaTaskController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/controller/PdaTaskController.java @@ -7,7 +7,10 @@ import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.nl.common.logging.annotation.Log; import org.nl.wms.pda.task.service.PdaTaskService; +import org.nl.wms.pda.task.service.dao.dto.MaterialDto; +import org.nl.wms.pda.task.service.dao.dto.PdaRequestDto; import org.nl.wms.pda.task.service.dao.vo.PdaResponseVo; +import org.nl.wms.pda.task.service.dao.vo.ResponseVo; import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.http.HttpStatus; @@ -44,14 +47,14 @@ public class PdaTaskController { @PostMapping("/selectMaterials") @Log("查询物料信息") - public ResponseEntity selectMaterials(@RequestBody JSONObject whereJson) { - return new ResponseEntity<>(pdaTaskService.selectMaterials(whereJson), HttpStatus.OK); + public PdaResponseVo selectMaterials(@RequestBody PdaRequestDto whereJson) { + return pdaTaskService.selectMaterials(whereJson); } @PostMapping("/getMaterialTypes") - @Log("查询物料信息") - public ResponseEntity getMaterialTypes() { - return new ResponseEntity<>(pdaTaskService.getMaterialTypes(), HttpStatus.OK); + @Log("查询所有物料类型") + public ResponseVo getMaterialTypes() { + return pdaTaskService.getMaterialTypes(); } @PostMapping("/getRegions") @@ -151,8 +154,8 @@ public class PdaTaskController { @PostMapping("/materialBinding") @Log("人工放货-物料绑定") - public ResponseEntity materialBinding(@RequestBody JSONObject whereJson) { - return new ResponseEntity<>(pdaTaskService.materialBinding(whereJson), HttpStatus.OK); + public PdaResponseVo materialBinding(@RequestBody PdaRequestDto whereJson) { + return pdaTaskService.materialBinding(whereJson); } @PostMapping("/vehicleBinding") @@ -243,4 +246,111 @@ public class PdaTaskController { return new ResponseEntity<>(pdaTaskService.selectFullMaterials(whereJson), HttpStatus.OK); } + @PostMapping("/getNextRegionsByPoint") + @Log("根据点位查询终点区域") + @SaIgnore + public ResponseVo getNextRegionsByPoint(@RequestBody PdaRequestDto whereJson) { + return pdaTaskService.getNextRegionsByPoint(whereJson); + } + + @PostMapping("/productBlanking") + @Log("产线管理") + @SaIgnore + public PdaResponseVo productBlanking(@RequestBody MaterialDto whereJson) { + return pdaTaskService.productBlanking(whereJson); + } + + @PostMapping("/selectPointInfo") + @Log("站点管理") + @SaIgnore + public JSONObject selectPointInfo(@RequestBody MaterialDto whereJson) { + return pdaTaskService.selectPointInfo(whereJson); + } + + @PostMapping("/selectRegions") + @Log("获取所有区域") + public ResponseEntity selectRegions() { + return new ResponseEntity<>(pdaTaskService.selectRegions(), HttpStatus.OK); + } + + @PostMapping("/getColsByPoint") + @Log("获取所有区域") + public ResponseEntity getColsByPoint(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaTaskService.getColsByPoint(whereJson), HttpStatus.OK); + } + + @PostMapping("/cleanPoint") + @Log("清空点位") + public ResponseEntity cleanPoint(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaTaskService.cleanPoint(whereJson), HttpStatus.OK); + } + + @PostMapping("/cleanCol") + @Log("清空列") + public ResponseEntity cleanCol(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaTaskService.cleanCol(whereJson), HttpStatus.OK); + } + + @PostMapping("/selectAgvInfo") + @Log("车辆信息查询") + @SaIgnore + public ResponseEntity selectAgvInfo(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaTaskService.selectAgvInfo(whereJson), HttpStatus.OK); + } + + @PostMapping("/getAgvNos") + @Log("车辆信息查询") + @SaIgnore + public ResponseEntity getAgvNos() { + return new ResponseEntity<>(pdaTaskService.getAgvNos(), HttpStatus.OK); + } + + @PostMapping("/pause") + @Log("锁定") + public ResponseEntity pause(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaTaskService.pause(whereJson), HttpStatus.OK); + } + + @PostMapping("/resume") + @Log("解锁") + public ResponseEntity resume(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaTaskService.resume(whereJson), HttpStatus.OK); + } + + @PostMapping("/chargeArea") + @Log("锁定") + public ResponseEntity chargeArea(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaTaskService.chargeArea(whereJson), HttpStatus.OK); + } + + @PostMapping("/releaseArea") + @Log("解锁") + public ResponseEntity releaseArea(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaTaskService.releaseArea(whereJson), HttpStatus.OK); + } + + @PostMapping("/materialTransfer") + @Log("人工移库") + public PdaResponseVo materialTransfer(@RequestBody JSONObject whereJson) { + return pdaTaskService.materialTransfer(whereJson); + } + + @PostMapping("/startPointConfirm") + @Log("起点确认") + public PdaResponseVo startPointConfirm(@RequestBody JSONObject whereJson) { + return pdaTaskService.startPointConfirm(whereJson); + } + + @PostMapping("/endPointConfirm") + @Log("终点确认") + public PdaResponseVo endPointConfirm(@RequestBody JSONObject whereJson) { + return pdaTaskService.endPointConfirm(whereJson); + } + + @PostMapping("/finishTask") + @Log("终点确认") + public PdaResponseVo finishTask(@RequestBody JSONObject whereJson) { + return pdaTaskService.finishTask(whereJson); + } + } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/PdaTaskService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/PdaTaskService.java index 5da5e59..aede636 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/PdaTaskService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/PdaTaskService.java @@ -3,8 +3,11 @@ package org.nl.wms.pda.task.service; import com.alibaba.fastjson.JSONObject; import org.nl.common.base.TableDataInfo; import org.nl.wms.basedata.material.service.dao.MdMeMaterialbase; +import org.nl.wms.pda.task.service.dao.dto.MaterialDto; import org.nl.wms.pda.task.service.dao.dto.MoveDto; +import org.nl.wms.pda.task.service.dao.dto.PdaRequestDto; import org.nl.wms.pda.task.service.dao.vo.PdaResponseVo; +import org.nl.wms.pda.task.service.dao.vo.ResponseVo; import org.nl.wms.sch.region.service.dao.SchBaseRegion; import java.util.List; @@ -25,7 +28,7 @@ public interface PdaTaskService { JSONObject getPointnByRegion(JSONObject whereJson); - JSONObject selectMaterials(JSONObject whereJson); + PdaResponseVo selectMaterials(PdaRequestDto whereJson); JSONObject getMaterialInfoByPoint(JSONObject whereJson); @@ -45,7 +48,7 @@ public interface PdaTaskService { JSONObject vehicleBinding(JSONObject whereJson); - JSONObject materialBinding(JSONObject whereJson); + PdaResponseVo materialBinding(PdaRequestDto whereJson); JSONObject getPointInfo(JSONObject whereJson); @@ -69,7 +72,41 @@ public interface PdaTaskService { JSONObject getCallRegions(); - JSONObject getMaterialTypes(); + ResponseVo getMaterialTypes(); JSONObject selectMaterialByPointCode(JSONObject whereJson); + + ResponseVo getNextRegionsByPoint(PdaRequestDto whereJson); + + PdaResponseVo productBlanking(MaterialDto whereJson); + + JSONObject selectPointInfo(MaterialDto whereJson); + + JSONObject selectRegions(); + + JSONObject getColsByPoint(JSONObject whereJson); + + JSONObject cleanPoint(JSONObject whereJson); + + JSONObject cleanCol(JSONObject whereJson); + + JSONObject selectAgvInfo(JSONObject whereJson); + + JSONObject getAgvNos(); + + PdaResponseVo pause(JSONObject whereJson); + + PdaResponseVo resume(JSONObject whereJson); + + PdaResponseVo chargeArea(JSONObject whereJson); + + PdaResponseVo releaseArea(JSONObject whereJson); + + PdaResponseVo materialTransfer(JSONObject whereJson); + + PdaResponseVo startPointConfirm(JSONObject whereJson); + + PdaResponseVo endPointConfirm(JSONObject whereJson); + + PdaResponseVo finishTask(JSONObject whereJson); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/dao/dto/MaterialDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/dao/dto/MaterialDto.java new file mode 100644 index 0000000..f586720 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/dao/dto/MaterialDto.java @@ -0,0 +1,21 @@ +package org.nl.wms.pda.task.service.dao.dto; + +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +@Data +public class MaterialDto { + + private String point_code; + private java.util.List data; + private String region_code; + private String type; + + public static class DataItem { + private String container_code; + private String material_code; + private String material_name; + private String qty; + private String measure_unit_id; + } +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/dao/dto/PdaRequestDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/dao/dto/PdaRequestDto.java new file mode 100644 index 0000000..45fdd4b --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/dao/dto/PdaRequestDto.java @@ -0,0 +1,106 @@ +package org.nl.wms.pda.task.service.dao.dto; + +import lombok.Data; + +import java.util.List; + +@Data +public class PdaRequestDto { + + /** + * 模糊查询关键字 + */ + private String blurry; + + /** + * 点位编码 + */ + private String point_code; + + /** + * 物料类型 + */ + private String material_type; + + /** + * 数据列表 + */ + private List data; + + /** + * 列数 + */ + private Integer col; + + /** + * 区域编码 + */ + private String region_code; + + /** + * 点位编码1 + */ + private String point_code1; + + /** + * 点位编码2 + */ + private String point_code2; + + /** + * 任务编码 + */ + private String task_code; + + /** + * 操作选项 + */ + private String option; + + /** + * AGV编号 + */ + private String agv_no; + + /** + * 页码 + */ + private Integer page; + + /** + * 每页大小 + */ + private Integer size; + + @Data + public static class DataItem { + /** + * 容器编码(卷号) + */ + private String container_code; + + /** + * 物料编码 + */ + private String material_code; + + /** + * 物料名称 + */ + private String material_name; + + /** + * 数量 + */ + private String qty; + + /** + * 计量单位 + */ + private String measure_unit_id; + /** + * 批次号 + */ + private String pscn; + } +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/dao/vo/PdaResponseVo.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/dao/vo/PdaResponseVo.java index e04fef3..64e2750 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/dao/vo/PdaResponseVo.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/dao/vo/PdaResponseVo.java @@ -1,18 +1,54 @@ package org.nl.wms.pda.task.service.dao.vo; +import com.alibaba.fastjson.JSONObject; import lombok.Data; +import java.util.List; + @Data public class PdaResponseVo { /** - * 先提供一个message + * 返回数据列表 + */ + private List data; + + /** + * 返回消息 */ private String message; + /** + * 返回消息 + */ + private String code; + public static PdaResponseVo pdaResultOk(String message) { PdaResponseVo vo = new PdaResponseVo(); vo.setMessage(message); return vo; } + + @Data + public static class DataItem { + /** + * 物料编码 + */ + private String material_code; + + /** + * 物料类型 + */ + private String material_type; + + /** + * 物料名称 + */ + private String material_name; + + /** + * 计量单位 + */ + private String measure_unit_id; + } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/dao/vo/ResponseVo.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/dao/vo/ResponseVo.java new file mode 100644 index 0000000..9646388 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/dao/vo/ResponseVo.java @@ -0,0 +1,36 @@ +package org.nl.wms.pda.task.service.dao.vo; + +import lombok.Data; + +import java.util.List; + +@Data +public class ResponseVo { + /** + * 返回数据列表 + */ + private List data; + + /** + * 返回消息 + */ + private String message; + + /** + * 返回结果 + */ + private String code; + + @Data + public static class DataItem { + /** + * 值 + */ + private String value; + + /** + * 显示文本 + */ + private String text; + } +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/impl/PdaTaskServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/impl/PdaTaskServiceImpl.java index 223d45d..cd46039 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/impl/PdaTaskServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/task/service/impl/PdaTaskServiceImpl.java @@ -21,6 +21,8 @@ import org.nl.common.enums.PackageInfoIvtEnum; import org.nl.common.exception.BadRequestException; import org.nl.common.utils.CodeUtil; import org.nl.common.utils.SecurityUtils; +import org.nl.system.service.param.dao.Param; +import org.nl.system.service.param.dao.mapper.SysParamMapper; 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; @@ -28,10 +30,14 @@ import org.nl.wms.basedata.material.service.dao.MdMeMaterialbase; import org.nl.wms.basedata.material.service.dao.mapper.MdMeMaterialbaseMapper; import org.nl.wms.basedata.material.service.dto.MaterialQuery; import org.nl.wms.ext.acs.service.WmsToAcsService; +import org.nl.wms.ext.acs.service.impl.WmsToAcsServiceImpl; import org.nl.wms.pda.task.service.PdaTaskService; +import org.nl.wms.pda.task.service.dao.dto.MaterialDto; import org.nl.wms.pda.task.service.dao.dto.MoveDto; +import org.nl.wms.pda.task.service.dao.dto.PdaRequestDto; 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.task.service.dao.vo.ResponseVo; import org.nl.wms.pda.util.PdaResponse; import org.nl.wms.sch.group.service.IMdPbGroupplatedtlService; import org.nl.wms.sch.group.service.dao.GroupPlate; @@ -43,8 +49,10 @@ import org.nl.wms.sch.material.service.dao.mapper.MaterialRecordMapper; 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; +import org.nl.wms.sch.region.service.dao.AgvCharge; import org.nl.wms.sch.region.service.dao.RegionCharge; import org.nl.wms.sch.region.service.dao.SchBaseRegion; +import org.nl.wms.sch.region.service.dao.mapper.AgvChargeMapper; import org.nl.wms.sch.region.service.dao.mapper.RegionChargeMapper; import org.nl.wms.sch.region.service.dao.mapper.SchBaseRegionMapper; import org.nl.wms.sch.task.service.ISchBaseTaskService; @@ -52,10 +60,13 @@ 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.AbstractTask; import org.nl.wms.sch.task_manage.GeneralDefinition; +import org.nl.wms.sch.task_manage.enums.CommonParamEnum; import org.nl.wms.sch.task_manage.enums.PointStatusEnum; import org.nl.wms.sch.task_manage.enums.PointTypeEnum; import org.nl.wms.sch.task_manage.enums.RegionTypeEnum; import org.nl.wms.sch.task_manage.task.TaskFactory; +import org.nl.wms.sch.task_manage.task.core.TaskStatus; +import org.nl.wms.sch.task_manage.task.core.TaskType; import org.nl.wms.sch.tasks.PdaPointTask; import org.nl.wms.sch.tasks.netsl.NETSLTask; import org.nl.wms.util.TaskUtils; @@ -79,6 +90,8 @@ public class PdaTaskServiceImpl implements PdaTaskService { @Autowired private ISchBaseTaskService taskService; @Autowired + private SchBaseTaskMapper schBaseTaskMapper; + @Autowired private SchBaseRegionMapper regionMapper; @Autowired private MdMeMaterialbaseMapper mdMeMaterialbaseMapper; @@ -97,9 +110,14 @@ public class PdaTaskServiceImpl implements PdaTaskService { @Autowired private RegionChargeMapper regionChargeMapper; @Autowired + private AgvChargeMapper agvChargeMapper; + @Autowired private WmsToAcsService wmsToAcsService; @Autowired private MdPbGroupplatedtlMapper mdPbGroupplatedtlMapper; + @Autowired + private SysParamMapper sysParamMapper; + @Override @Transactional(rollbackFor = Exception.class) @@ -164,7 +182,7 @@ public class PdaTaskServiceImpl implements PdaTaskService { String prefix = schBasePoint.getPoint_code().substring(0, schBasePoint.getPoint_code().length() - 2); List existTask = taskService.findUnFinishTasksByTaskConfig("THSLTask", prefix); int existMaxTaskSize = 1; - if (schBasePoint.getPoint_code().contains("HXT")){//活性炭上料位有三个位置 + if (schBasePoint.getPoint_code().contains("HXT")) {//活性炭上料位有三个位置 existMaxTaskSize = 2; } if (existTask.size() <= existMaxTaskSize) { @@ -173,10 +191,10 @@ public class PdaTaskServiceImpl implements PdaTaskService { throw new BadRequestException(region_code + "区域无空闲点位"); } SchBasePoint point = list.get(0); - if (schBasePoint.getPoint_code().contains(RegionTypeEnum.REGION_TYPE.code("MB制布区"))) { + if (schBasePoint.getPoint_code().contains("MB")) { param.put("point4", point.getPoint_code());// param.put("device_code", pointMapper.selectOne(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, schBasePoint.getParent_point_code())).getPoint_code());//等待点 - } else if (schBasePoint.getPoint_code().contains("GC") && (schBasePoint.getRegion_code().equals("L1")||schBasePoint.getRegion_code().equals("L2"))) { + } else if (schBasePoint.getPoint_code().contains("GC") && (schBasePoint.getRegion_code().equals("L1") || schBasePoint.getRegion_code().equals("L2"))) { param.put("point4", point.getPoint_code());// param.put("device_code", pointMapper.selectOne(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, schBasePoint.getParent_point_code())).getPoint_code());//等待点 } else if (schBasePoint.getPoint_code().contains("HXT") && schBasePoint.getRegion_code().equals("L1")) { @@ -208,15 +226,15 @@ public class PdaTaskServiceImpl implements PdaTaskService { } String region_code = point.getRegion_code(); if ("N1".equals(region_code) || "N3".equals(region_code)) { - if (!point.getPoint_type().equals(PointTypeEnum.NET_IN_POINT.getCode())){ + if (!point.getPoint_type().equals("3")) { throw new BadRequestException("点位" + point_code + "不为NET的上料位,请扫描正确上料位再重新操作!"); } - }else if ("L1".equals(region_code) || "L2".equals(region_code)) { + } else if ("L1".equals(region_code) || "L2".equals(region_code)) { List regions = Arrays.asList("1", "2", "3"); - if (!regions.contains(point.getPoint_type())){ + if (!regions.contains(point.getPoint_type())) { throw new BadRequestException("点位" + point_code + "不为贴合加工区的上料位,请扫描正确上料位再重新操作!"); } - }else { + } else { throw new BadRequestException("当前点位" + point_code + "不是上料位!"); } String region_name = point.getRegion_name(); @@ -255,7 +273,7 @@ public class PdaTaskServiceImpl implements PdaTaskService { if (ObjectUtil.isEmpty(point)) { throw new BadRequestException("点位" + point_code + "不存在!"); } - if (point.getPoint_status().equals(PointStatusEnum.EMPTY_VEHICLE.getCode())){ + if (point.getPoint_status().equals(PointStatusEnum.EMPTY_VEHICLE.getCode())) { throw new BadRequestException("点位" + point_code + "已有货,请先检查再操作!"); } List list = taskService.findTaskByPoint(point_code); @@ -273,16 +291,16 @@ public class PdaTaskServiceImpl implements PdaTaskService { param.put("material_code", mdMeMaterialbase.getMaterial_code()); param.put("requestNo", IdUtil.simpleUUID()); if ("N1".equals(point.getRegion_code()) || "N3".equals(point.getRegion_code())) { - if (!point.getPoint_type().equals(PointTypeEnum.NET_OUT_POINT.getCode())){ + if (!point.getPoint_type().equals("1")) { throw new BadRequestException("点位" + point_code + "不为NET的下料位,请扫描正确下料位再重新操作!"); } param.put("config_code", "NETXLTask"); } else if ("L1".equals(point.getRegion_code()) || "L2".equals(point.getRegion_code())) { - if (!point.getPoint_type().equals(PointTypeEnum.L_OUT_POINT.getCode())){ + if (!point.getPoint_type().equals("4")) { throw new BadRequestException("点位" + point_code + "不为贴合加工下料位,请扫描正确下料位再重新操作!"); } param.put("config_code", "THXLTask"); - }else { + } else { throw new BadRequestException("当前点位" + point_code + "不是下料位!"); } String vehicleCode = "TP" + TaskUtils.getDateTime("yyMMddHHmmss") + CodeUtil.getNewCode("VEHICLE_CODE"); @@ -292,18 +310,18 @@ public class PdaTaskServiceImpl implements PdaTaskService { param.put("region_code", region_code); taskService.apply(param); //维护物料信息 - packageData(data, point_code, vehicleCode); +// packageData(data, point_code, vehicleCode); return PdaResponseVo.pdaResultOk("任务创建成功"); } - private void packageData(JSONArray data, String point_code, String vehicleCode) { - JSONObject jo = data.getJSONObject(0); - String material_name = jo.getString("material_name"); + private void packageData(List data, String point_code, String vehicleCode) { + PdaRequestDto.DataItem jo = data.get(0); + String material_name = jo.getMaterial_name(); MdMeMaterialbase mdMeMaterialbase = mdMeMaterialbaseMapper.selectOne(new LambdaQueryWrapper().eq(MdMeMaterialbase::getMaterial_name, material_name)); if (mdMeMaterialbase == null) { throw new BadRequestException("当前物料不存在【" + material_name + "】"); } - String measure_unit_id = jo.getString("measure_unit_id"); + String measure_unit_id = jo.getMeasure_unit_id(); if (StrUtil.isEmpty(vehicleCode)) { vehicleCode = "TP" + TaskUtils.getDateTime("yyMMddHHmmss") + CodeUtil.getNewCode("VEHICLE_CODE"); } @@ -312,16 +330,16 @@ public class PdaTaskServiceImpl implements PdaTaskService { 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"); + PdaRequestDto.DataItem jsonObject = data.get(i); + String container_code = jsonObject.getContainer_code(); + qty += Integer.parseInt(jsonObject.getQty()); GroupPlatedtl groupPlatedtlBuilder = GroupPlatedtl.builder() .groupdtl_id(org.nl.common.utils.IdUtil.getStringId()) .group_id(group_id) - .pcsn(jsonObject.getString("pcsn")) + .pcsn(jsonObject.getPscn()) .container_code(container_code) .storagevehicle_code(vehicleCode) - .qty(jsonObject.getIntValue("qty")) + .qty(Integer.parseInt(jsonObject.getQty())) .material_code(mdMeMaterialbase.getMaterial_code()) .material_name(mdMeMaterialbase.getMaterial_name()) .measure_unit_id(measure_unit_id) @@ -362,7 +380,17 @@ public class PdaTaskServiceImpl implements PdaTaskService { @Override public JSONObject getRegions() { - List list = regionMapper.selectList(new LambdaQueryWrapper()); + Param charge_region_code = sysParamMapper.selectOne(new LambdaQueryWrapper().eq(Param::getCode, "CHARGE_REGION_CODE")); + if (charge_region_code == null) { + throw new BadRequestException("请先配置【管制区域】系统参数"); + } + String value = charge_region_code.getValue(); + if (StrUtil.isEmpty(value)) { + throw new BadRequestException("请先配置【管制区域】"); + } + String[] split = value.split(","); + + List list = regionMapper.selectList(new LambdaQueryWrapper().in(SchBaseRegion::getRegion_code, split)); List ja = new ArrayList<>(); list.forEach(region -> { JSONObject jo = new JSONObject(); @@ -444,7 +472,7 @@ public class PdaTaskServiceImpl implements PdaTaskService { @Override public JSONObject getCallRegions() { - List regions = Arrays.asList("MB","H1", "H2","E1", "E2","GC","HXTFZW"); + List regions = Arrays.asList("MB", "H1", "H2", "E1", "E2", "GC", "HXTFZW"); List list = regionMapper.selectList(new LambdaQueryWrapper().in(SchBaseRegion::getRegion_code, regions)); List ja = new ArrayList<>(); list.forEach(region -> { @@ -524,33 +552,34 @@ public class PdaTaskServiceImpl implements PdaTaskService { // } @Override - public JSONObject selectMaterials(JSONObject whereJson) { - List list = mdMeMaterialbaseMapper.selectAllMaters(whereJson); + public PdaResponseVo selectMaterials(PdaRequestDto whereJson) { + List list = mdMeMaterialbaseMapper.selectAllMaters(whereJson); JSONObject ret = new JSONObject(); + PdaResponseVo vo = new PdaResponseVo(); if (ObjectUtil.isNotEmpty(list)) { - ret.put("code", String.valueOf(HttpStatus.HTTP_OK)); - ret.put("message", "查询成功"); - ret.put("data", list); - return ret; + vo.setData(list); + vo.setMessage("查询成功"); + vo.setCode(String.valueOf(HttpStatus.HTTP_OK)); + return vo; } - return ret; + return vo; } @Override - public JSONObject getMaterialTypes() { + public ResponseVo getMaterialTypes() { List list = mdMeMaterialbaseMapper.getMaterialTypes(); - List arr = new ArrayList<>(); - JSONObject ret = new JSONObject(); + List arr = new ArrayList<>(); + ResponseVo ret = new ResponseVo(); if (ObjectUtil.isNotEmpty(list)) { list.forEach(point -> { - JSONObject jo = new JSONObject(); - jo.put("value", point.getString("material_type")); - jo.put("text", point.getString("material_type")); + ResponseVo.DataItem jo = new ResponseVo.DataItem(); + jo.setValue(point.getString("material_type")); + jo.setText(point.getString("material_type")); arr.add(jo); }); - ret.put("code", String.valueOf(HttpStatus.HTTP_OK)); - ret.put("message", "查询成功"); - ret.put("data", arr); + ret.setData(arr); + ret.setMessage("查询成功"); + ret.setCode(String.valueOf(HttpStatus.HTTP_OK)); return ret; } return ret; @@ -597,6 +626,706 @@ public class PdaTaskServiceImpl implements PdaTaskService { return ret; } + @Override + public ResponseVo getNextRegionsByPoint(PdaRequestDto whereJson) { + String point_code = whereJson.getPoint_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("点位不存在!"); + } + List arr = new ArrayList<>(); +// if (point.getRegion_code().equals(RegionTypeEnum.REGION_TYPE.code("区域1")) || point.getRegion_code().equals(RegionTypeEnum.REGION_TYPE.code("区域2"))) { +// ResponseVo.DataItem dataItem = new ResponseVo.DataItem(); +// dataItem.setValue(RegionTypeEnum.REGION_TYPE.code("区域3")); +// dataItem.setText(RegionTypeEnum.REGION_TYPE.code("区域3")); +// arr.add(dataItem); +// } else if (point.getRegion_code().equals(RegionTypeEnum.REGION_TYPE.code("区域3"))) { +// List list = Arrays.asList("R4", "R5"); +// list.forEach(region_code -> { +// ResponseVo.DataItem dataItem = new ResponseVo.DataItem(); +// dataItem.setValue(region_code); +// dataItem.setText(region_code); +// arr.add(dataItem); +// }); +// } else + if (point.getRegion_code().equals(RegionTypeEnum.REGION_TYPE.code("区域4")) || point.getRegion_code().equals(RegionTypeEnum.REGION_TYPE.code("区域5"))) { + List list = Arrays.asList("R6", "R7"); + list.forEach(region_code -> { + ResponseVo.DataItem dataItem = new ResponseVo.DataItem(); + dataItem.setValue(region_code); + if (region_code.equals("R6")) { + dataItem.setText("合格区"); + } else { + dataItem.setText("不合格区"); + } + arr.add(dataItem); + }); + } else { + + } + ResponseVo ret = new ResponseVo(); + ret.setMessage("查询成功"); + ret.setCode(String.valueOf(HttpStatus.HTTP_OK)); + ret.setData(arr); + return ret; + } + + @Override + public PdaResponseVo productBlanking(MaterialDto whereJson) { + String point_code = whereJson.getPoint_code(); + String type = whereJson.getType(); + 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.isEmpty(type)) { + throw new BadRequestException("类型不能为空!"); + } + if (PointStatusEnum.EMPTY_POINT.getCode().equals(point.getPoint_status())) { + throw new BadRequestException("点位【" + point.getPoint_code() + "】上无货!"); + } + boolean flag = isSingleTask(point.getPoint_code()); + if (flag) { + throw new BadRequestException("该点位【" + point.getPoint_code() + "】有未完成的任务!"); + } + String storagevehicle_code = point.getStoragevehicle_code(); + if (ObjectUtil.isEmpty(storagevehicle_code)) { + throw new BadRequestException("点位【" + point.getPoint_code() + "】上无载具!"); + } + GroupPlate groupPlate = groupplateMapper.selectOne(new LambdaQueryWrapper() + .eq(GroupPlate::getStoragevehicle_code, storagevehicle_code) + .eq(GroupPlate::getStatus, GroupStatus.START.getCode()) + .eq(GroupPlate::getIs_delete, GeneralDefinition.NO)); + if (ObjectUtil.isEmpty(groupPlate)) { + throw new BadRequestException("找不到该点位上的组盘信息"); + } + // 1.产线下料 2.质检配送 3.质检下料 + if (CommonParamEnum.ONE.getCode().equals(type)) { + if (!point.getRegion_code().equals(RegionTypeEnum.REGION_TYPE.code("区域1"))) { + throw new BadRequestException("该点位【" + point.getPoint_code() + "】不是区域1的下料位,请检查输入点位是否有误!"); + } + JSONObject param = new JSONObject(); + param.put("point3", point.getPoint_code()); + param.put("device_code", pointMapper.selectOne(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, point.getParent_point_code())).getPoint_code());//等待点 + param.put("material_code", point.getMaterial_code()); + param.put("requestNo", IdUtil.simpleUUID()); + param.put("config_code", "SCXLTask"); + param.put("user_id", "1"); + taskService.apply(param); + } + if (CommonParamEnum.TWO.getCode().equals(type)) { + if (!point.getRegion_code().equals(RegionTypeEnum.REGION_TYPE.code("区域3"))) { + throw new BadRequestException("该点位【" + point.getPoint_code() + "】不是区域3的下料位,请检查输入点位是否有误!"); + } + JSONObject param = new JSONObject(); + param.put("device_code", pointMapper.selectOne(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, point.getParent_point_code())).getPoint_code());//等待点 + param.put("point3", point.getPoint_code()); + param.put("material_code", point.getMaterial_code()); + param.put("requestNo", IdUtil.simpleUUID()); + param.put("config_code", "ZJPSTask"); + param.put("user_id", "1"); + taskService.apply(param); + } + if (CommonParamEnum.THREE.getCode().equals(type)) { + if (!point.getRegion_code().equals(RegionTypeEnum.REGION_TYPE.code("区域4")) || !point.getRegion_code().equals(RegionTypeEnum.REGION_TYPE.code("区域5"))) { + throw new BadRequestException("该点位【" + point.getPoint_code() + "】不是区域4或区域5的下料位,请检查输入点位是否有误!"); + } + String region_code = whereJson.getRegion_code(); + if (ObjectUtil.isEmpty(region_code)) { + throw new BadRequestException("区域不能为空!"); + } + JSONObject param = new JSONObject(); + param.put("point3", point.getPoint_code());// + param.put("device_code", pointMapper.selectOne(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, point.getParent_point_code())).getPoint_code());//等待点 + param.put("material_code", point.getMaterial_code()); + param.put("requestNo", IdUtil.simpleUUID()); + param.put("config_code", "ZJXLTask"); + param.put("region_code", region_code); + param.put("user_id", "1"); + taskService.apply(param); + } + return PdaResponseVo.pdaResultOk("操作成功"); + } + + @Override + public JSONObject selectPointInfo(MaterialDto whereJson) { + String region_code = whereJson.getRegion_code(); + if (ObjectUtil.isEmpty(region_code)) { + throw new BadRequestException("区域不能为空!"); + } + JSONObject jo = new JSONObject(); + List ja = new ArrayList<>(); + List list = pointMapper.selectList(new LambdaQueryWrapper().eq(SchBasePoint::getRegion_code, region_code) + .eq(SchBasePoint::getIs_used, "1") + .eq(SchBasePoint::getPoint_type, "1")); + if (ObjectUtil.isNotEmpty(list)) { + list.forEach(point -> { + JSONObject jo1 = new JSONObject(); + jo1.put("point_code", point.getPoint_code()); + jo1.put("point_name", point.getPoint_name()); + jo1.put("row_num", point.getRow_num()); + jo1.put("point_status", point.getPoint_status()); + ja.add(jo1); + }); + } + jo.put("data", ja); + jo.put("message", "查询成功"); + jo.put("code", "200"); + return jo; + } + + @Override + public JSONObject selectRegions() { + List regions = Arrays.asList("R6", "R7"); + List list = regionMapper.selectList(new LambdaQueryWrapper().in(SchBaseRegion::getRegion_code, regions)); + List ja = new ArrayList<>(); + list.forEach(region -> { + JSONObject jo = new JSONObject(); + jo.put("value", region.getRegion_code()); + jo.put("text", region.getRegion_name()); + ja.add(jo); + }); + JSONObject ret = new JSONObject(); + if (ObjectUtil.isNotEmpty(list)) { + ret.put("code", String.valueOf(HttpStatus.HTTP_OK)); + ret.put("message", "查询成功"); + ret.put("data", ja); + return ret; + } + return ret; + } + + @Override + public JSONObject getColsByPoint(JSONObject whereJson) { + String point_code = whereJson.getString("point_code"); + if (ObjectUtil.isEmpty(point_code)) { + throw new BadRequestException("点位不能为空!"); + } + JSONObject ret = new JSONObject(); + SchBasePoint point = pointMapper.selectOne(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, point_code)); + if (ObjectUtil.isEmpty(point)) { + throw new BadRequestException("点位【+point.getPoint_code()+】不存在!"); + } + List list = pointMapper.selectList(new LambdaQueryWrapper().eq(SchBasePoint::getRegion_code, point.getRegion_code()) + .eq(SchBasePoint::getPoint_type, "1") + .eq(SchBasePoint::getIs_used, "1")); + List ja = new ArrayList<>(); + if (ObjectUtil.isNotEmpty(list)) { + SchBasePoint schBasePoint = list.stream().max(Comparator.comparingInt(SchBasePoint::getRow_num)).orElse(null); + Integer row_num = schBasePoint.getRow_num(); + if (schBasePoint.getRegion_code().equals("R7")){//区域7排数从4开始 + row_num = row_num - 3; + } + for (Integer i = 0; i < row_num; i++) { + JSONObject jo1 = new JSONObject(); + int row = i + 1; + jo1.put("text", String.valueOf(row)); + jo1.put("value", String.valueOf(row)); + ja.add(jo1); + } + } + ret.put("code", String.valueOf(HttpStatus.HTTP_OK)); + ret.put("message", "查询成功"); + ret.put("data", ja); + return ret; + } + + @Override + public JSONObject cleanPoint(JSONObject whereJson) { + log.info("人工开始清空点位"); + 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("点位不存在!"); + } + if (ObjectUtil.isNotEmpty(point.getStoragevehicle_code())) { + GroupPlate groupPlate = groupplateMapper.selectOne(new LambdaQueryWrapper().eq(GroupPlate::getStoragevehicle_code, point.getStoragevehicle_code())); + if (ObjectUtil.isNotEmpty(groupPlate)) { + //删除组盘信息 + List list = mdPbGroupplatedtlMapper.selectList(new LambdaQueryWrapper().eq(GroupPlatedtl::getGroup_id, groupPlate.getGroup_id())); + if (list.size() > 0) { + Set ids = new HashSet(); + list.forEach(groupPlatedtl -> { + String id = groupPlatedtl.getGroupdtl_id(); + ids.add(id); + }); + mdPbGroupplatedtlMapper.deleteBatchIds(ids); + } + groupplateMapper.deleteById(groupPlate); + } + } + point.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode()); + point.setStoragevehicle_code(""); + point.setMaterial_code(""); + point.setIng_task_code(""); + point.setUpdate_id(SecurityUtils.getCurrentUserId()); + point.setUpdate_name(SecurityUtils.getCurrentNickName()); + point.setUpdate_time(DateUtil.now()); + pointMapper.updateById(point); + JSONObject ret = new JSONObject(); + ret.put("status", String.valueOf(HttpStatus.HTTP_OK)); + ret.put("message", "操作成功"); + return ret; + } + + @Override + public JSONObject cleanCol(JSONObject whereJson) { + log.info("人工开始清空列"); + String point_code = whereJson.getString("point_code"); + if (ObjectUtil.isEmpty(point_code)) { + throw new BadRequestException("点位不能为空!"); + } + SchBasePoint schBasePoint = pointMapper.selectOne(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, point_code)); + if (ObjectUtil.isEmpty(schBasePoint)) { + throw new BadRequestException("点位【" + schBasePoint.getPoint_code() + "】不存在!"); + } + Integer col = whereJson.getInteger("col"); + if (ObjectUtil.isEmpty(col)) { + throw new BadRequestException("列不能为空!"); + } + List pointListlist = pointMapper.selectList(new LambdaQueryWrapper().eq(SchBasePoint::getRegion_code, schBasePoint.getRegion_code()) + .eq(SchBasePoint::getPoint_type, "1") + .eq(SchBasePoint::getRow_num, col)); + if (ObjectUtil.isNotEmpty(pointListlist)) { + pointListlist.forEach(point -> { + if (ObjectUtil.isNotEmpty(point.getStoragevehicle_code())) { + GroupPlate groupPlate = groupplateMapper.selectOne(new LambdaQueryWrapper().eq(GroupPlate::getStoragevehicle_code, point.getStoragevehicle_code())); + if (ObjectUtil.isNotEmpty(groupPlate)) { + //删除组盘信息 + List list = mdPbGroupplatedtlMapper.selectList(new LambdaQueryWrapper().eq(GroupPlatedtl::getGroup_id, groupPlate.getGroup_id())); + if (list.size() > 0) { + Set ids = new HashSet(); + list.forEach(groupPlatedtl -> { + String id = groupPlatedtl.getGroupdtl_id(); + ids.add(id); + }); + mdPbGroupplatedtlMapper.deleteBatchIds(ids); + } + groupplateMapper.deleteById(groupPlate); + } + } + point.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode()); + point.setStoragevehicle_code(""); + point.setMaterial_code(""); + point.setIng_task_code(""); + point.setUpdate_id(SecurityUtils.getCurrentUserId()); + point.setUpdate_name(SecurityUtils.getCurrentNickName()); + point.setUpdate_time(DateUtil.now()); + pointMapper.updateById(point); + }); + } + JSONObject ret = new JSONObject(); + ret.put("code", String.valueOf(HttpStatus.HTTP_OK)); + ret.put("message", "操作成功"); + return ret; + } + + @Override + public JSONObject selectAgvInfo(JSONObject whereJson) { + List list = agvChargeMapper.selectPageLeftJoin(whereJson); + JSONObject ret = new JSONObject(); + ret.put("code", String.valueOf(HttpStatus.HTTP_OK)); + ret.put("message", "查询成功"); + ret.put("data", list); + return ret; + } + + @Override + public JSONObject getAgvNos() { + List list = agvChargeMapper.selectCarNos(); + List ja = new ArrayList<>(); + list.forEach(item -> { + JSONObject jo = new JSONObject(); + jo.put("text", item.getString("agv_no")); + jo.put("value", item.getString("agv_no")); + ja.add(jo); + }); + JSONObject ret = new JSONObject(); + ret.put("code", String.valueOf(HttpStatus.HTTP_OK)); + ret.put("data", ja); + ret.put("message", "查询成功"); + return ret; + } + + @Override + public PdaResponseVo pause(JSONObject whereJson) { + log.info("暂停agv"); + String agv_no = whereJson.getString("agv_no"); + String option = whereJson.getString("option"); + if (ObjectUtil.isEmpty(agv_no)) { + throw new BadRequestException("车号不能为空!"); + } + if (ObjectUtil.isEmpty(option)) { + throw new BadRequestException("操作不能为空!"); + } + AgvCharge agvCharge = agvChargeMapper.selectOne(new LambdaQueryWrapper().eq(AgvCharge::getAgv_no, agv_no)); + if (ObjectUtil.isEmpty(agvCharge)) { + throw new BadRequestException("当前车号为:" + agv_no + "的管制记录不存在!"); + } + if (option.equals(agvCharge.getStatus())) { + throw new BadRequestException("当前车号为:" + agv_no + "已经被暂停,请勿重复操作!"); + } + + //下发ACS,执行暂停的AGV动作 +// JSONArray paramArr = new JSONArray(); +// JSONObject param = new JSONObject(); +// param.put("device_code", agv_no); +// param.put("option", option); +// paramArr.add(param); +// +// WmsToAcsServiceImpl wmsToAcsService = new WmsToAcsServiceImpl(); +// JSONObject result = wmsToAcsService.updateTask(paramArr); +// +// if (!StrUtil.equals(result.getString("status"), "200")) { +// throw new BadRequestException("操作失败:" + result.getString("message ")); +// } + + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + agvCharge.setStatus(option); + agvCharge.setUpdate_optid(currentUserId); + agvCharge.setUpdate_optname(nickName); + agvCharge.setUpdate_time(DateUtil.now()); + agvChargeMapper.updateById(agvCharge); + return PdaResponseVo.pdaResultOk("暂停成功!"); + } + + @Override + public PdaResponseVo resume(JSONObject whereJson) { + log.info("恢复agv"); + String agv_no = whereJson.getString("agv_no"); + String option = whereJson.getString("option"); + if (ObjectUtil.isEmpty(agv_no)) { + throw new BadRequestException("车号不能为空!"); + } + if (ObjectUtil.isEmpty(option)) { + throw new BadRequestException("操作不能为空!"); + } + AgvCharge agvCharge = agvChargeMapper.selectOne(new LambdaQueryWrapper().eq(AgvCharge::getAgv_no, agv_no)); + if (ObjectUtil.isEmpty(agvCharge)) { + throw new BadRequestException("当前车号为:" + agv_no + "的管制记录不存在!"); + } + if (option.equals(agvCharge.getStatus())) { + throw new BadRequestException("当前车号为:" + agv_no + "已经被恢复,请勿重复操作!"); + } + + //下发ACS,执行恢复的AGV动作 +// JSONArray paramArr = new JSONArray(); +// JSONObject param = new JSONObject(); +// param.put("device_code", agv_no); +// param.put("option", option); +// paramArr.add(param); +// +// WmsToAcsServiceImpl wmsToAcsService = new WmsToAcsServiceImpl(); +// JSONObject result = wmsToAcsService.updateTask(paramArr); +// +// if (!StrUtil.equals(result.getString("status"), "200")) { +// throw new BadRequestException("操作失败:" + result.getString("message ")); +// } + + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + agvCharge.setStatus(option); + agvCharge.setUpdate_optid(currentUserId); + agvCharge.setUpdate_optname(nickName); + agvCharge.setUpdate_time(DateUtil.now()); + agvChargeMapper.updateById(agvCharge); + return PdaResponseVo.pdaResultOk("恢复成功!"); + } + + @Override + public PdaResponseVo chargeArea(JSONObject whereJson) { + log.info("管制区域"); + String region_code = whereJson.getString("region_code"); + String option = whereJson.getString("option"); + if (ObjectUtil.isEmpty(region_code)) { + throw new BadRequestException("区域编码不能为空!"); + } + if (ObjectUtil.isEmpty(option)) { + throw new BadRequestException("操作不能为空!"); + } + RegionCharge regionCharge = regionChargeMapper.selectOne(new LambdaQueryWrapper().eq(RegionCharge::getRegion_code, region_code)); + if (ObjectUtil.isEmpty(regionCharge)) { + throw new BadRequestException("当前区域为:" + region_code + "的管制记录不存在!"); + } + if (option.equals(regionCharge.getStatus())) { + throw new BadRequestException("当前区域为:" + region_code + "已经被管制,请勿重复操作!"); + } + + //下发ACS,执行管制区域动作 +// JSONArray paramArr = new JSONArray(); +// JSONObject param = new JSONObject(); +// param.put("device_code", region_code); +// param.put("option", option); +// paramArr.add(param); +// +// WmsToAcsServiceImpl wmsToAcsService = new WmsToAcsServiceImpl(); +// JSONObject result = wmsToAcsService.updateTask(paramArr); +// +// if (!StrUtil.equals(result.getString("status"), "200")) { +// throw new BadRequestException("操作失败:" + result.getString("message ")); +// } + + + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + regionCharge.setStatus(option); + regionCharge.setUpdate_optid(currentUserId); + regionCharge.setUpdate_optname(nickName); + regionCharge.setUpdate_time(DateUtil.now()); + regionChargeMapper.updateById(regionCharge); + return PdaResponseVo.pdaResultOk("管制成功!"); + } + + @Override + public PdaResponseVo releaseArea(JSONObject whereJson) { + log.info("解除管制区域"); + String region_code = whereJson.getString("region_code"); + String option = whereJson.getString("option"); + if (ObjectUtil.isEmpty(region_code)) { + throw new BadRequestException("区域编码不能为空!"); + } + if (ObjectUtil.isEmpty(option)) { + throw new BadRequestException("操作不能为空!"); + } + RegionCharge regionCharge = regionChargeMapper.selectOne(new LambdaQueryWrapper().eq(RegionCharge::getRegion_code, region_code)); + if (ObjectUtil.isEmpty(regionCharge)) { + throw new BadRequestException("当前区域为:" + region_code + "的管制记录不存在!"); + } + if (option.equals(regionCharge.getStatus())) { + throw new BadRequestException("当前车区域为:" + region_code + "已经被恢复,请勿重复操作!"); + } + + //下发ACS,执行释放区域动作 +// JSONArray paramArr = new JSONArray(); +// JSONObject param = new JSONObject(); +// param.put("device_code", region_code); +// param.put("option", option); +// paramArr.add(param); +// +// WmsToAcsServiceImpl wmsToAcsService = new WmsToAcsServiceImpl(); +// JSONObject result = wmsToAcsService.updateTask(paramArr); +// +// if (!StrUtil.equals(result.getString("status"), "200")) { +// throw new BadRequestException("操作失败:" + result.getString("message ")); +// } + + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + regionCharge.setStatus(option); + regionCharge.setUpdate_optid(currentUserId); + regionCharge.setUpdate_optname(nickName); + regionCharge.setUpdate_time(DateUtil.now()); + regionChargeMapper.updateById(regionCharge); + return PdaResponseVo.pdaResultOk("解除管制成功!"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public PdaResponseVo materialTransfer(JSONObject whereJson) { + String point_code1 = whereJson.getString("point_code1"); + String point_code2 = whereJson.getString("point_code2"); + if (ObjectUtil.isEmpty(point_code1) || ObjectUtil.isEmpty(point_code2)) { + throw new BadRequestException("点位不能为空"); + } + SchBasePoint point1 = pointMapper.selectOne(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, point_code1)); + SchBasePoint point2 = pointMapper.selectOne(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, point_code2)); + if (ObjectUtil.isEmpty(point1)) { + throw new BadRequestException("点位1不存在"); + } + if (ObjectUtil.isEmpty(point2)) { + throw new BadRequestException("点位2不存在"); + } + if (point1.getPoint_status().equals("1")) { + throw new BadRequestException("点位1为:" + point_code1 + "的点位无货!"); + } + if (point2.getPoint_status().equals("2")) { + throw new BadRequestException("点位2为:" + point_code2 + "的点位有货!"); + } + if (ObjectUtil.isEmpty(point1.getStoragevehicle_code())) { + throw new BadRequestException("点位1为:" + point_code1 + "的点位无托盘号!"); + } + List groupPlates = groupplateMapper.selectList(new LambdaQueryWrapper().eq(GroupPlate::getStoragevehicle_code, point1.getStoragevehicle_code())); + if (groupPlates.size() == 0) { + throw new BadRequestException("点位1为:" + point_code1 + "的点位无物料组盘信息!"); + } + boolean flag1 = isSingleTask(point_code1); + if (flag1) { + throw new BadRequestException("点位1为:" + point_code1 + "的点位有未完成的任务!"); + } + boolean flag2 = isSingleTask(point_code2); + if (flag2) { + throw new BadRequestException("点位2为:" + point_code2 + "的点位有未完成的任务!"); + } + //清空点位1的点位信息 + String storagevehicle_code = point1.getStoragevehicle_code(); + String material_code = point1.getMaterial_code(); + point1.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode()); + point1.setStoragevehicle_code(""); + point1.setMaterial_code(""); + point1.setUpdate_id(SecurityUtils.getCurrentUserId()); + point1.setUpdate_name(SecurityUtils.getCurrentNickName()); + point1.setUpdate_time(DateUtil.now()); + + //绑定点位2的信息 + point2.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); + point2.setStoragevehicle_code(storagevehicle_code); + point2.setMaterial_code(material_code); + point2.setUpdate_id(SecurityUtils.getCurrentUserId()); + point2.setUpdate_name(SecurityUtils.getCurrentNickName()); + point2.setUpdate_time(DateUtil.now()); + pointMapper.updateById(point1); + pointMapper.updateById(point2); + return PdaResponseVo.pdaResultOk("移库成功!"); + } + + @Override + public PdaResponseVo startPointConfirm(JSONObject whereJson) { + log.info("开始起点确认"); + String task_code = whereJson.getString("task_code"); + String point_code = whereJson.getString("point_code"); + if (ObjectUtil.isEmpty(task_code)) { + throw new BadRequestException("任务号为空!"); + } + if (ObjectUtil.isEmpty(point_code)) { + throw new BadRequestException("点位号为空!"); + } + SchBaseTask task = schBaseTaskMapper.selectOne(new LambdaQueryWrapper() + .eq(SchBaseTask::getTask_code, task_code) + .lt(SchBaseTask::getTask_status, "5")); + if (ObjectUtil.isEmpty(task)) { + throw new BadRequestException("任务已完成或者取消!"); + } + SchBasePoint point = pointMapper.selectOne(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, point_code)); + if (ObjectUtil.isEmpty(point)) { + throw new BadRequestException("点位不存在!"); + } + if (point.getPoint_status().equals("1")) { + throw new BadRequestException("点位为:" + point_code + "的点位无货!"); + } + if (ObjectUtil.isEmpty(point.getStoragevehicle_code())) { + throw new BadRequestException("点位为:" + point_code + "的点位无托盘号!"); + } + List groupPlates = groupplateMapper.selectList(new LambdaQueryWrapper().eq(GroupPlate::getStoragevehicle_code, point.getStoragevehicle_code())); + if (groupPlates.size() == 0) { + throw new BadRequestException("点位为:" + point_code + "的点位无物料组盘信息!"); + } + String vehicle_code2 = task.getVehicle_code2(); + if (ObjectUtil.isNotEmpty(vehicle_code2)) { + if (TaskType.TWO.getCode().equals(task.getVehicle_code2()) || TaskType.FIVE.getCode().equals(task.getVehicle_code2())) { + String currentUserId = SecurityUtils.getCurrentUserId(); + task.setPoint_code1(point_code); + task.setVehicle_code(point.getStoragevehicle_code()); + task.setMaterial_code(point.getMaterial_code()); + task.setUpdate_id(currentUserId); + task.setTask_status(TaskStatus.PICK_UP_COMPLETED.getCode()); + task.setUpdate_name(SecurityUtils.getCurrentNickName()); + task.setUpdate_time(DateUtil.now()); + schBaseTaskMapper.updateById(task); + } else { + throw new BadRequestException("任务号为【" + task_code + "】的任务已确定起点!"); + } + } else { + throw new BadRequestException("任务号为【" + task_code + "】的任务已确定起点和终点!"); + } + return PdaResponseVo.pdaResultOk("起点确认成功!"); + } + + + @Override + public PdaResponseVo endPointConfirm(JSONObject whereJson) { + log.info("开始终点确认"); + String task_code = whereJson.getString("task_code"); + String point_code = whereJson.getString("point_code"); + if (ObjectUtil.isEmpty(task_code)) { + throw new BadRequestException("任务号为空!"); + } + if (ObjectUtil.isEmpty(point_code)) { + throw new BadRequestException("点位号为空!"); + } + SchBaseTask task = schBaseTaskMapper.selectOne(new LambdaQueryWrapper() + .eq(SchBaseTask::getTask_code, task_code) + .lt(SchBaseTask::getTask_status, "5")); + if (ObjectUtil.isEmpty(task)) { + throw new BadRequestException("任务已完成或者取消!"); + } + SchBasePoint point = pointMapper.selectOne(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, point_code)); + if (ObjectUtil.isEmpty(point)) { + throw new BadRequestException("点位不存在!"); + } + if (!point.getPoint_status().equals("1")) { + throw new BadRequestException("点位为:" + point_code + "的点位有货!"); + } + String vehicle_code2 = task.getVehicle_code2(); + if (ObjectUtil.isNotEmpty(vehicle_code2)) { + if (TaskType.THREE.getCode().equals(task.getVehicle_code2()) || TaskType.FIVE.getCode().equals(task.getVehicle_code2())) { + String currentUserId = SecurityUtils.getCurrentUserId(); + task.setPoint_code2(point_code); + task.setUpdate_id(currentUserId); + task.setUpdate_name(SecurityUtils.getCurrentNickName()); + task.setUpdate_time(DateUtil.now()); + schBaseTaskMapper.updateById(task); + } else { + throw new BadRequestException("任务号为【" + task_code + "】的任务已确定终点!"); + } + } else { + throw new BadRequestException("任务号为【" + task_code + "】的任务已确定起点和终点!"); + } + return PdaResponseVo.pdaResultOk("终点确认成功!"); + } + + @Override + public PdaResponseVo finishTask(JSONObject whereJson) { + log.info("开始任务强制完成"); + String task_code = whereJson.getString("task_code"); + if (ObjectUtil.isEmpty(task_code)) { + throw new BadRequestException("任务号为空!"); + } + SchBaseTask task = schBaseTaskMapper.selectOne(new LambdaQueryWrapper() + .eq(SchBaseTask::getTask_code, task_code) + .lt(SchBaseTask::getTask_status, "5")); + if (ObjectUtil.isEmpty(task)) { + throw new BadRequestException("任务已完成或者取消!"); + } + String point_code1 = task.getPoint_code1(); + String point_code2 = task.getPoint_code2(); + SchBasePoint point1 = pointMapper.selectOne(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, point_code1)); + SchBasePoint point2 = pointMapper.selectOne(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, point_code2)); + if (point1.getPoint_type().equals("3") || point2.getPoint_type().equals("3")) { + throw new BadRequestException("当前任务:【" + task_code + "】起点或者终点不确认,请先确认再操作!"); + } + Map param = new HashMap<>(); + param.put("task_code", task_code); + param.put("config_code", task.getConfig_code()); + param.put("method_name", "forceFinishByHand"); + taskService.operation(param); + return null; + } + + + //判断该点位是否存在未完成的任务 + public boolean isSingleTask(String point_code) { + SchBaseTask task1 = schBaseTaskMapper.selectOne(new LambdaQueryWrapper().eq(SchBaseTask::getPoint_code1, point_code).lt(SchBaseTask::getTask_status, "5").eq(SchBaseTask::getIs_delete, "0")); + SchBaseTask task2 = schBaseTaskMapper.selectOne(new LambdaQueryWrapper().eq(SchBaseTask::getPoint_code2, point_code).lt(SchBaseTask::getTask_status, "5").eq(SchBaseTask::getIs_delete, "0")); + SchBaseTask task3 = schBaseTaskMapper.selectOne(new LambdaQueryWrapper().eq(SchBaseTask::getPoint_code3, point_code).lt(SchBaseTask::getTask_status, "5").eq(SchBaseTask::getIs_delete, "0")); + SchBaseTask task4 = schBaseTaskMapper.selectOne(new LambdaQueryWrapper().eq(SchBaseTask::getPoint_code4, point_code).lt(SchBaseTask::getTask_status, "5").eq(SchBaseTask::getIs_delete, "0")); + + if (ObjectUtil.isNotEmpty(task1) || ObjectUtil.isNotEmpty(task2) || ObjectUtil.isNotEmpty(task3) || ObjectUtil.isNotEmpty(task4)) { + return true; + } else { + return false; + } + } + @Override public JSONObject getMaterialInfoByPoint(JSONObject whereJson) { String point_code = whereJson.getString("point_code"); @@ -749,10 +1478,10 @@ public class PdaTaskServiceImpl implements PdaTaskService { List list = mdPbGroupplatedtlMapper.selectList(new LambdaQueryWrapper().eq(GroupPlatedtl::getGroup_id, groupPlate.getGroup_id())); if (list.size() > 0) { Set ids = new HashSet(); - list.forEach(groupPlatedtl ->{ + list.forEach(groupPlatedtl -> { String id = groupPlatedtl.getGroupdtl_id(); ids.add(id); - } ); + }); mdPbGroupplatedtlMapper.deleteBatchIds(ids); } groupplateMapper.deleteById(groupPlate); @@ -788,15 +1517,15 @@ public class PdaTaskServiceImpl implements PdaTaskService { @Override @Transactional(rollbackFor = Exception.class) - public JSONObject materialBinding(JSONObject whereJson) { + public PdaResponseVo materialBinding(PdaRequestDto whereJson) { log.info("物料绑定,请求参数:" + whereJson); - String point_code = whereJson.getString("point_code"); + String point_code = whereJson.getPoint_code(); //校验该点位是否存在任务 List taskList = taskService.findTaskByPoint(point_code); if (ObjectUtil.isNotEmpty(taskList)) { throw new BadRequestException("该点位有任务正在执行,请勿重复操作!"); } - JSONArray data = whereJson.getJSONArray("data"); + List data = whereJson.getData(); if (ObjectUtil.isEmpty(point_code)) { throw new BadRequestException("点位不能为空"); } @@ -805,8 +1534,8 @@ public class PdaTaskServiceImpl implements PdaTaskService { } for (int i = 0; i < data.size(); i++) { - JSONObject jo = data.getJSONObject(i); - String container_code = jo.getString("container_code"); + PdaRequestDto.DataItem jo = data.get(i); + String container_code = jo.getContainer_code(); List groupPlatedtlList = groupplatedtlService.selectDtlByContainerCode(container_code); if (ObjectUtil.isNotEmpty(groupPlatedtlList)) { throw new BadRequestException("该卷号【" + container_code + "】已绑定过,请勿重复操作!"); @@ -820,54 +1549,32 @@ public class PdaTaskServiceImpl implements PdaTaskService { if (point.getPoint_status().equals(PointStatusEnum.EMPTY_VEHICLE.getCode())) { throw new BadRequestException("点位" + point_code + "有货!"); } - if (point.getRegion_code().equals(RegionTypeEnum.REGION_TYPE.code("活性碳保管1区")) || point.getRegion_code().equals(RegionTypeEnum.REGION_TYPE.code("活性碳保管2区"))) { - JSONObject jo = data.getJSONObject(0); - String material_code = jo.getString("material_code"); - //找到相同排或者列其他点位 - List list = pointMapper.selectSameRowPoints(point); + if (point.getRegion_code().equals("R3") && point.getPoint_type().equals("1")) { + //查询同组同半区放货顺序低于当前点位的其他点位 + List list = pointMapper.selectSameGroupPoints(point); if (ObjectUtil.isNotEmpty(list)) { - int count = 0; - for (SchBasePoint point1 : list) { - if (point1.getPoint_status().equals(PointStatusEnum.EMPTY_VEHICLE.getCode())) { - if (StrUtil.isNotEmpty(point1.getMaterial_code()) && !material_code.equals(point1.getMaterial_code())) { - count++; - } + for (int i = 0; i < list.size(); i++) { + SchBasePoint schBasePoint = list.get(i); + boolean singleTask = isSingleTask(schBasePoint.getPoint_code()); + if (singleTask) { + throw new BadRequestException("请检查当前点位前面的位置是否有任务,请按顺序放货!"); } } - if (count > 0) { - throw new BadRequestException("该排存在有不同的物料点位,请勿重复操作!"); - } } - //找出比当前点位列大的的点位 - List pointList = list.stream().filter(point1 -> point1.getCol_num() > point.getCol_num()).collect(Collectors.toList()); - if (ObjectUtil.isNotEmpty(pointList)) { - List containlist = new ArrayList<>(); - for (int i = 0; i < data.size(); i++) { - JSONObject ja = data.getJSONObject(i); - String container_code = ja.getString("container_code"); - containlist.add(container_code); - } - String minContain = containlist.stream().min(String::compareTo).orElse(""); - List vehicleCodes = pointList.stream().map(SchBasePoint::getStoragevehicle_code).collect(Collectors.toList()); - List groupPlates = groupplateMapper.selectList(new LambdaQueryWrapper().in(GroupPlate::getStoragevehicle_code, vehicleCodes) - .eq(GroupPlate::getStatus, GroupStatus.START.getCode()) - .eq(GroupPlate::getIs_delete, GeneralDefinition.NO)); - if (ObjectUtil.isNotEmpty(groupPlates)) { - boolean b = groupPlates.stream() - .map(GroupPlate::getPcsn) - .anyMatch(pcsn -> pcsn.compareTo(minContain) < 0); - if (b) { - throw new BadRequestException("该排存在卷号小于当前卷号的点位,请检查后再重试!"); - } - } - } else { - pointList = list.stream().filter(point1 -> point1.getCol_num() < point.getCol_num()).collect(Collectors.toList()); - if (ObjectUtil.isNotEmpty(pointList)) { - for (int i = 0; i < pointList.size(); i++) { - SchBasePoint schBasePoint = pointList.get(i); - if (schBasePoint.getPoint_status().equals(PointStatusEnum.EMPTY_VEHICLE.getCode())) { - throw new BadRequestException("请检查当前点位的前面位置是否有货,请按顺序放货!"); - } + } else { + //查询同排In_order_seq顺序低于当前点位的其他点位 + List list = pointMapper.selectList(new LambdaQueryWrapper() + .ne(SchBasePoint::getPoint_code, point_code) + .eq(SchBasePoint::getRegion_code, point.getRegion_code()) + .eq(SchBasePoint::getPoint_type, point.getPoint_type()) + .eq(SchBasePoint::getRow_num, point.getRow_num()) + .lt(SchBasePoint::getIn_order_seq, point.getIn_order_seq())); + if (ObjectUtil.isNotEmpty(list)) { + for (int i = 0; i < list.size(); i++) { + SchBasePoint schBasePoint = list.get(i); + boolean singleTask = isSingleTask(schBasePoint.getPoint_code()); + if (singleTask) { + throw new BadRequestException("请检查当前点位前面的位置是否有任务,请按顺序放货!"); } } } @@ -875,9 +1582,9 @@ public class PdaTaskServiceImpl implements PdaTaskService { packageData(data, point_code, null); - JSONObject ret = new JSONObject(); - ret.put("status", String.valueOf(HttpStatus.HTTP_OK)); - ret.put("message", "物料绑定成功"); + PdaResponseVo ret = new PdaResponseVo(); + ret.setCode(String.valueOf(HttpStatus.HTTP_OK)); + ret.setMessage("物料绑定成功"); return ret; } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/MdPbStoragevehicleext.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/MdPbStoragevehicleext.java new file mode 100644 index 0000000..c66a491 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/forewarn/service/dao/MdPbStoragevehicleext.java @@ -0,0 +1,93 @@ +package org.nl.wms.sch.forewarn.service.dao; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + *

+ * 载具扩展属性信息表 + *

+ * + * @author Liuxy + * @since 2025-05-23 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("md_pb_storagevehicleext") +public class MdPbStoragevehicleext implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 载具扩展标识 + */ + @TableId(value = "storagevehicleext_id") + private String storagevehicleext_id; + + /** + * 载具编码 + */ + private String storagevehicle_code; + + /** + * 物料标识 + */ + private String material_id; + + /** + * 批次 + */ + private String pcsn; + + /** + * 数量计量单位标识 + */ + private String qty_unit_id; + + /** + * 数量计量单位名称 + */ + private String qty_unit_name; + + /** + * 可用数 + */ + private BigDecimal canuse_qty; + + /** + * 冻结数 + */ + private BigDecimal frozen_qty; + + /** + * 备注 + */ + private String remark; + + /** + * 修改人 + */ + private String update_optid; + + /** + * 修改人姓名 + */ + private String update_optname; + + /** + * 修改时间 + */ + private String update_time; + + /** + * 入库时间 + */ + private String insert_time; + + +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.java index bb7c3d9..c8ff1b7 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.java @@ -54,4 +54,8 @@ public interface SchBasePointMapper extends BaseMapper { List getNewEndBasePoints(@Param("point_code2") String point_code2, @Param("region_code") String region_code); List getSamePoints(@Param("regionCode") String regionCode, @Param("material_code") String material_code); + + List getNewStartBasePoints(@Param("point_code1") String point_code1, @Param("region_code") String region_code); + + List selectSameGroupPoints(@Param("point") SchBasePoint point); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.xml index 30d6070..05d57f3 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.xml +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.xml @@ -223,9 +223,18 @@ FROM `sch_base_point` p WHERE p.region_code = #{region_code} AND p.parent_point_code = #{point_code2} - AND (point_type = '1' OR point_type = '2' OR point_type = '3') + AND point_type = '1' AND is_used = 1 AND point_status = "1" + AND 0 = ( + SELECT COUNT(1) FROM sch_base_point p2 + WHERE + p2.point_status = '2' + AND p2.row_num = p.row_num + AND p2.col_num p.col_num + AND p2.point_type = '1' + AND p2.region_code = #{region_code} + ) ORDER BY in_order_seq asc + + diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/controller/AgvChargeController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/controller/AgvChargeController.java new file mode 100644 index 0000000..d977dcc --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/controller/AgvChargeController.java @@ -0,0 +1,11 @@ +package org.nl.wms.sch.region.controller; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Slf4j +@RestController +@RequestMapping("/api/agvCharge") +public class AgvChargeController { +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/AgvChargeService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/AgvChargeService.java new file mode 100644 index 0000000..edc9fa0 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/AgvChargeService.java @@ -0,0 +1,8 @@ +package org.nl.wms.sch.region.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.wms.sch.region.service.dao.AgvCharge; + + +public interface AgvChargeService extends IService { +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/dao/AgvCharge.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/dao/AgvCharge.java new file mode 100644 index 0000000..708b57a --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/dao/AgvCharge.java @@ -0,0 +1,42 @@ +package org.nl.wms.sch.region.service.dao; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("st_ivt_agvcharge") +@Builder +public class AgvCharge implements Serializable { + private static final long serialVersionUID = 1L; + + @TableId(value = "agvcharge_id", type = IdType.NONE) + private String agvcharge_id; + + private String agv_no; + + private int is_hasTask; + + private String remark; + + private String status; + + private String create_id; + + private String create_name; + + private String create_time; + + private String update_optid; + + private String update_optname; + + + private String update_time; +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/dao/RegionCharge.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/dao/RegionCharge.java index cbeb4f0..7935482 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/dao/RegionCharge.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/dao/RegionCharge.java @@ -27,6 +27,8 @@ public class RegionCharge implements Serializable { private String remark; + private String status; + private String create_id; private String create_name; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/dao/mapper/AgvChargeMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/dao/mapper/AgvChargeMapper.java new file mode 100644 index 0000000..a2a8286 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/dao/mapper/AgvChargeMapper.java @@ -0,0 +1,14 @@ +package org.nl.wms.sch.region.service.dao.mapper; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.nl.wms.sch.region.service.dao.AgvCharge; + +import java.util.List; + +public interface AgvChargeMapper extends BaseMapper { + List selectPageLeftJoin(@Param("whereJson") JSONObject whereJson); + + List selectCarNos(); +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/dao/mapper/AgvChargeMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/dao/mapper/AgvChargeMapper.xml new file mode 100644 index 0000000..c256300 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/dao/mapper/AgvChargeMapper.xml @@ -0,0 +1,20 @@ + + + + + + diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/dao/mapper/RegionChargeMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/dao/mapper/RegionChargeMapper.xml index f994eec..57c9e6d 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/dao/mapper/RegionChargeMapper.xml +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/dao/mapper/RegionChargeMapper.xml @@ -4,9 +4,9 @@ + SELECT * FROM sch_base_point p1 + WHERE + p1.point_status = '1' + AND p1.point_type = '1' + AND p1.region_code = 'R3' + AND 0 = ( + SELECT COUNT(*) + FROM sch_base_task + WHERE (point_code1 = p1.point_code + OR point_code2 = p1.point_code + OR point_code3 = p1.point_code + OR point_code4 = p1.point_code + ) + AND task_status '5' + AND is_delete = '0' + ) + AND 0 = ( + SELECT COUNT(1) FROM sch_base_point p2 + WHERE + p2.point_status = '2' + AND p2.point_location = p1.point_location + AND p2.in_order_seq > p1.in_order_seq + AND p2.point_type = '1' + AND p2.region_code = 'R3' + ) + ORDER BY p1.in_order_seq + + diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thsl/THSLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thsl/THSLTask.java index 4bf01c5..458c651 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thsl/THSLTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thsl/THSLTask.java @@ -190,6 +190,36 @@ public class THSLTask extends AbstractTask { this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); } + @Override + public void forceFinishByPDA(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + if (!taskObj.getTask_status().equals(TaskStatus.PICK_UP_COMPLETED.getCode())) { + throw new BadRequestException("agv还未取货完成,不允许点完成!"); + } + SchBasePoint startPointObj = pointService.getById(taskObj.getPoint_code1()); + SchBasePoint endPointObj = pointService.getById(taskObj.getPoint_code2()); + //清空起点信息 + startPointObj.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode()); + startPointObj.setStoragevehicle_code(""); + startPointObj.setMaterial_code(""); + PointUtils.setUpdateByType(startPointObj, TaskFinishedTypeEnum.MANUAL_PDA); + pointService.updateById(startPointObj); + //绑定终点信息 + endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); + endPointObj.setStoragevehicle_code(taskObj.getVehicle_code()); + endPointObj.setMaterial_code(taskObj.getMaterial_code()); + PointUtils.setUpdateByType(endPointObj, TaskFinishedTypeEnum.MANUAL_PDA); + pointService.updateById(endPointObj); + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskObj.setRemark(GeneralDefinition.TASK_FINISH); +// taskObj.setFinished_type(taskFinishedType.getCode()); + TaskUtils.setUpdateByType(taskObj, TaskFinishedTypeEnum.MANUAL_PDA); + taskService.updateById(taskObj); + } + @Override public void cancel(String task_code) { SchBaseTask taskObj = taskService.getByCode(task_code); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thxl/THXLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thxl/THXLTask.java index 2794ccf..1954db7 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thxl/THXLTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/thxl/THXLTask.java @@ -256,6 +256,36 @@ public class THXLTask extends AbstractTask { return true; } + @Override + public void forceFinishByPDA(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + if (!taskObj.getTask_status().equals(TaskStatus.PICK_UP_COMPLETED.getCode())) { + throw new BadRequestException("agv还未取货完成,不允许点完成!"); + } + SchBasePoint startPointObj = pointService.getById(taskObj.getPoint_code1()); + SchBasePoint endPointObj = pointService.getById(taskObj.getPoint_code2()); + //清空起点信息 + startPointObj.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode()); + startPointObj.setStoragevehicle_code(""); + startPointObj.setMaterial_code(""); + PointUtils.setUpdateByType(startPointObj, TaskFinishedTypeEnum.MANUAL_PDA); + pointService.updateById(startPointObj); + //绑定终点信息 + endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); + endPointObj.setStoragevehicle_code(taskObj.getVehicle_code()); + endPointObj.setMaterial_code(taskObj.getMaterial_code()); + PointUtils.setUpdateByType(endPointObj, TaskFinishedTypeEnum.MANUAL_PDA); + pointService.updateById(endPointObj); + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskObj.setRemark(GeneralDefinition.TASK_FINISH); +// taskObj.setFinished_type(taskFinishedType.getCode()); + TaskUtils.setUpdateByType(taskObj, TaskFinishedTypeEnum.MANUAL_PDA); + taskService.updateById(taskObj); + } + private String forametDevice_code(String point_code, int col_num) { return point_code.substring(0, point_code.length() - 1) + (col_num); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/zjps/ZJPSTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/zjps/ZJPSTask.java new file mode 100644 index 0000000..bd94f02 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/zjps/ZJPSTask.java @@ -0,0 +1,316 @@ +package org.nl.wms.sch.tasks.zjps; + +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 lombok.SneakyThrows; +import org.nl.common.enums.PackageInfoIvtEnum; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.RedissonUtils; +import org.nl.system.service.notice.ISysNoticeService; +import org.nl.system.service.param.ISysParamService; +import org.nl.system.service.param.dao.Param; +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.point.service.ISchBasePointService; +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; +import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; +import org.nl.wms.sch.task_manage.AbstractTask; +import org.nl.wms.sch.task_manage.GeneralDefinition; +import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; +import org.nl.wms.sch.task_manage.enums.PointStatusEnum; +import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum; +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.zjps.mapper.ZJPSMapper; +import org.nl.wms.util.PointUtils; +import org.nl.wms.util.TaskUtils; +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; +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.HashSet; +import java.util.List; +import java.util.Set; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +//// 质检配送任务 +@Component(value = "ZJPSTask") +@TaskType("ZJPSTask") +public class ZJPSTask extends AbstractTask { + private static final String TASK_CONFIG_CODE = "ZJPSTask"; + @Autowired + private ISchBasePointService pointService; + @Autowired + private ISchBaseTaskService taskService; + @Autowired + private ISchBaseTaskconfigService taskConfigService; + @Autowired + private ISysNoticeService noticeService; + @Autowired + private RedissonClient redissonClient; + @Autowired + private ZJPSMapper zjpsMapper; + @Autowired + private MdPbGroupplateMapper mdPbGroupplateMapper; + @Autowired + private MdPbGroupplatedtlMapper mdPbGroupplatedtlMapper; + @Autowired + private ISysParamService paramService; + + @Override + public void create() throws BadRequestException { + // 获取任务 + List tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY); + // 配置信息 + SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() + .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); + for (SchBaseTask task : tasks) { + TaskUtils.setUpdateByAcs(task); + List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")) + .collect(Collectors.toList()); + // 找终点 + String requestParam = task.getRequest_param(); + JSONObject jsonObject = JSONObject.parseObject(requestParam); + String regionCode = jsonObject.getString("region_code"); + findNextPoint(nextRegionStr, task); + } + } + + @Override + @SneakyThrows + @Transactional(rollbackFor = Exception.class) + public void createCompletion(SchBaseTask task) { + // 配置信息 + SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() + .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); + TaskUtils.setUpdateByAcs(task); + List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")) + .collect(Collectors.toList()); + // 找终点 + findNextPoint(nextRegionStr, task); + } + + private void findNextPoint(List nextRegionStr,SchBaseTask task) { + RedissonUtils.lock(c -> { + List points = zjpsMapper.findNextPoint(nextRegionStr); + if (CollectionUtils.isEmpty(points)) { + throw new BadRequestException("区域4和区域5没有空闲的上料点位!"); + } + SchBasePoint schBasePoint = null; + for (int i = 0; i < points.size(); i++) { + SchBasePoint point = points.get(i); + + //判断该点位的所在的排是否达到任务最大数 + if (!checkMaxTaskNum(point)) { + continue; + } + schBasePoint = point; + break; + } + // 设置终点并修改创建成功状态 + task.setPoint_code2(schBasePoint.getExt_point_code()); + task.setPoint_code4(schBasePoint.getPoint_code()); + String requestParam = task.getRequest_param(); + JSONObject jsonObject = JSONObject.parseObject(requestParam); + String point3 = jsonObject.getString("point3"); + if (StrUtil.isNotEmpty(point3)){ + task.setPoint_code3(point3); + } + task.setVehicle_code2(PackageInfoIvtEnum.AGV_ACTION_TYPE.code("取放货二次分配")); + task.setRemark(""); + task.setTask_status(TaskStatus.CREATED.getCode()); + taskService.save(task); + // 点位更新 + schBasePoint.setIng_task_code(task.getTask_code()); + PointUtils.setUpdateByAcs(schBasePoint); + pointService.updateById(schBasePoint); + return true; + }, "ZJPSTask", null); + } + + private boolean checkMaxTaskNum(SchBasePoint point) { + String ext_point_code = point.getExt_point_code(); + if (StrUtil.isEmpty(ext_point_code)){ + throw new BadRequestException("该点位【"+point.getPoint_code()+"】没有设置等待点位!"); + } + List zjpsTask = taskService.findUnFinishTasksByTaskConfigAndPointCode("ZJPSTask", ext_point_code); + Param zjpsTaskNum = paramService.findByCode("ZJPSTask_num"); + if (zjpsTaskNum == null) { + throw new BadRequestException("请先设置参数【ZJPSTask_num】!"); + } + if (zjpsTask.size() >= Integer.parseInt(zjpsTaskNum.getValue())) { + return false; + } + return true; + } + + @Override + public void forceFinishByPDA(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + if (!taskObj.getTask_status().equals(TaskStatus.PICK_UP_COMPLETED.getCode())) { + throw new BadRequestException("agv还未取货完成,不允许点完成!"); + } + SchBasePoint startPointObj = pointService.getById(taskObj.getPoint_code1()); + SchBasePoint endPointObj = pointService.getById(taskObj.getPoint_code2()); + //清空起点信息 + startPointObj.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode()); + startPointObj.setStoragevehicle_code(""); + startPointObj.setMaterial_code(""); + PointUtils.setUpdateByType(startPointObj, TaskFinishedTypeEnum.MANUAL_PDA); + pointService.updateById(startPointObj); + //绑定终点信息 + endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); + endPointObj.setStoragevehicle_code(taskObj.getVehicle_code()); + endPointObj.setMaterial_code(taskObj.getMaterial_code()); + PointUtils.setUpdateByType(endPointObj, TaskFinishedTypeEnum.MANUAL_PDA); + pointService.updateById(endPointObj); + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskObj.setRemark(GeneralDefinition.TASK_FINISH); +// taskObj.setFinished_type(taskFinishedType.getCode()); + TaskUtils.setUpdateByType(taskObj, TaskFinishedTypeEnum.MANUAL_PDA); + taskService.updateById(taskObj); + } + + 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("NETXLTask", 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) { + // 校验任务 + SchBaseTask taskObj = taskService.getByCode(task_code); + if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { + throw new BadRequestException("该任务已完成!"); + } + if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { + throw new BadRequestException("该任务已取消!"); + } + // 根据传来的类型去对任务进行操作 + if (status.equals(TaskStatus.EXECUTING)) { + taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); + taskObj.setRemark("执行中"); + TaskUtils.setUpdateByAcs(taskObj); + taskService.updateById(taskObj); + } + if (status.equals(TaskStatus.FINISHED)) { + this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); + } + if (status.equals(TaskStatus.CANCELED)) { + this.cancelTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); + } + } + + + @Override + public void forceFinish(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + if (!taskObj.getTask_status().equals(TaskStatus.PICK_UP_COMPLETED.getCode())){ + throw new BadRequestException("agv还未取货完成,不允许点完成!"); + } + this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); + } + + @Override + public void cancel(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + if (taskObj.getTask_status().equals(TaskStatus.PICK_UP_COMPLETED.getCode())){ + throw new BadRequestException("agv已经取货完成,不允许点取消!"); + } + this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); + } + + @Transactional(rollbackFor = Exception.class) + public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + // 获取参数 + SchBasePoint endPointObj = pointService.getById(taskObj.getPoint_code2()); + // 起点清空 + if (ObjectUtil.isNotEmpty(endPointObj)) { + endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); + endPointObj.setStoragevehicle_code(taskObj.getVehicle_code()); + endPointObj.setMaterial_code(taskObj.getMaterial_code()); + endPointObj.setUpdate_time(DateUtil.now()); + endPointObj.setIng_task_code(""); + PointUtils.setUpdateByType(endPointObj, taskFinishedType); + pointService.updateById(endPointObj); + } + // 任务完成 + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskObj.setRemark(GeneralDefinition.TASK_FINISH); +// taskObj.setFinished_type(taskFinishedType.getCode()); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); + } + + @Transactional(rollbackFor = Exception.class) + public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + // 获取参数 + SchBasePoint startPointObj = pointService.getById(taskObj.getPoint_code1()); + // 起点解锁 + if (ObjectUtil.isNotEmpty(startPointObj)) { + String storagevehicle_code = startPointObj.getStoragevehicle_code(); + //取货完成会清空托盘号 + startPointObj.setIng_task_code(""); + PointUtils.setUpdateByType(startPointObj, taskFinishedType); + pointService.updateById(startPointObj); + } + SchBasePoint point2 = pointService.getById(taskObj.getPoint_code2()); + if (ObjectUtil.isNotEmpty(point2)) { + point2.setIng_task_code(""); + pointService.updateById(point2); + } + SchBasePoint point4 = pointService.getById(taskObj.getPoint_code4()); + if (ObjectUtil.isNotEmpty(point4)) { + point4.setIng_task_code(""); + pointService.updateById(point4); + } + taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + taskObj.setRemark(GeneralDefinition.TASK_CANCEL); +// taskObj.setFinished_type(taskFinishedType.getCode()); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); + } +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/zjps/mapper/ZJPSMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/zjps/mapper/ZJPSMapper.java new file mode 100644 index 0000000..13a848f --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/zjps/mapper/ZJPSMapper.java @@ -0,0 +1,11 @@ +package org.nl.wms.sch.tasks.zjps.mapper; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.nl.wms.sch.point.service.dao.SchBasePoint; + +import java.util.List; + +public interface ZJPSMapper { + List findNextPoint(@Param("nextRegionStr") List nextRegionStr); +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/zjps/mapper/ZJPSMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/zjps/mapper/ZJPSMapper.xml new file mode 100644 index 0000000..434fbd2 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/zjps/mapper/ZJPSMapper.xml @@ -0,0 +1,32 @@ + + + + + diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/zjxl/ZJXLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/zjxl/ZJXLTask.java new file mode 100644 index 0000000..9508957 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/zjxl/ZJXLTask.java @@ -0,0 +1,378 @@ +package org.nl.wms.sch.tasks.zjxl; + +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 lombok.SneakyThrows; +import org.nl.common.enums.PackageInfoIvtEnum; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.RedissonUtils; +import org.nl.system.service.notice.ISysNoticeService; +import org.nl.system.service.param.ISysParamService; +import org.nl.system.service.param.dao.Param; +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.point.service.ISchBasePointService; +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; +import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; +import org.nl.wms.sch.task_manage.AbstractTask; +import org.nl.wms.sch.task_manage.GeneralDefinition; +import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; +import org.nl.wms.sch.task_manage.enums.PointStatusEnum; +import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum; +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.zjxl.mapper.ZJXLMapper; +import org.nl.wms.util.PointUtils; +import org.nl.wms.util.TaskUtils; +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; +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.HashSet; +import java.util.List; +import java.util.Set; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +//// 质检下料任务 +@Component(value = "ZJXLTask") +@TaskType("ZJXLTask") +public class ZJXLTask extends AbstractTask { + private static final String TASK_CONFIG_CODE = "ZJXLTask"; + @Autowired + private ISchBasePointService pointService; + @Autowired + private ISchBaseTaskService taskService; + @Autowired + private ISchBaseTaskconfigService taskConfigService; + @Autowired + private ISysNoticeService noticeService; + @Autowired + private RedissonClient redissonClient; + @Autowired + private MdPbGroupplateMapper mdPbGroupplateMapper; + @Autowired + private MdPbGroupplatedtlMapper mdPbGroupplatedtlMapper; + @Autowired + private ZJXLMapper zjxlMapper; + @Autowired + private ISysParamService paramService; + + @Override + public void create() throws BadRequestException { + // 获取任务 + List tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY); + // 配置信息 + SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() + .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); + for (SchBaseTask task : tasks) { + TaskUtils.setUpdateByAcs(task); + List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")) + .collect(Collectors.toList()); + // 找终点 + // 找终点 + String requestParam = task.getRequest_param(); + JSONObject jsonObject = JSONObject.parseObject(requestParam); + String regionCode = jsonObject.getString("region_code"); + findNextPoint(nextRegionStr, regionCode,task); + } + } + + @Override + @SneakyThrows + @Transactional(rollbackFor = Exception.class) + public void createCompletion(SchBaseTask task) { + // 配置信息 + SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() + .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); + TaskUtils.setUpdateByAcs(task); + List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")) + .collect(Collectors.toList()); + // 找起点 + String requestParam = task.getRequest_param(); + JSONObject jsonObject = JSONObject.parseObject(requestParam); + String regionCode = jsonObject.getString("region_code"); + // 找终点 + findNextPoint(nextRegionStr,regionCode,task); + } + + private void findNextPoint(List nextRegionStr,String regionCode,SchBaseTask task) { + // 查找R6 R7区域的空闲点位 + if ("R6".equals(regionCode)) { + RedissonUtils.lock(c -> { + List points = zjxlMapper.findNextPoint(nextRegionStr,regionCode); + if (CollectionUtils.isEmpty(points)) { + throw new BadRequestException("区域6没有空闲的点位!"); + } + + SchBasePoint schBasePoint = null; + for (int i = 0; i < points.size(); i++) { + SchBasePoint point = points.get(i); + + //判断该点位的所在的排是否达到任务最大数 + if (!checkMaxTaskNum(point)) { + continue; + } + schBasePoint = point; + break; + } + // 设置终点并修改创建成功状态 + task.setPoint_code2(schBasePoint.getExt_point_code()); + task.setPoint_code4(schBasePoint.getPoint_code()); + String requestParam = task.getRequest_param(); + JSONObject jsonObject = JSONObject.parseObject(requestParam); + String point3 = jsonObject.getString("point3"); + if (StrUtil.isNotEmpty(point3)){ + task.setPoint_code3(point3); + } + task.setVehicle_code2(PackageInfoIvtEnum.AGV_ACTION_TYPE.code("取放货二次分配")); + task.setRemark(""); + task.setTask_status(TaskStatus.CREATED.getCode()); + taskService.save(task); + // 点位更新 + schBasePoint.setIng_task_code(task.getTask_code()); + PointUtils.setUpdateByAcs(schBasePoint); + pointService.updateById(schBasePoint); + return true; + }, "ZJXLToR6Task", null); + } else { + //R7 + RedissonUtils.lock(c -> { + List points = zjxlMapper.findNextPoint(nextRegionStr,regionCode); + if (CollectionUtils.isEmpty(points)) { + throw new BadRequestException("区域7没有空闲的点位!"); + } + SchBasePoint schBasePoint = null; + for (int i = 0; i < points.size(); i++) { + SchBasePoint point = points.get(i); + + //判断该点位的所在的排是否达到任务最大数 + if (!checkMaxTaskNum(point)) { + continue; + } + schBasePoint = point; + break; + } + // 设置终点并修改创建成功状态 + task.setPoint_code2(schBasePoint.getExt_point_code()); + task.setPoint_code4(schBasePoint.getPoint_code()); + String requestParam = task.getRequest_param(); + JSONObject jsonObject = JSONObject.parseObject(requestParam); + String point3 = jsonObject.getString("point3"); + if (StrUtil.isNotEmpty(point3)){ + task.setPoint_code3(point3); + } + task.setVehicle_code2(PackageInfoIvtEnum.AGV_ACTION_TYPE.code("取放货二次分配")); + task.setRemark(""); + task.setTask_status(TaskStatus.CREATED.getCode()); + taskService.save(task); + // 点位更新 + schBasePoint.setIng_task_code(task.getTask_code()); + PointUtils.setUpdateByAcs(schBasePoint); + pointService.updateById(schBasePoint); + return true; + }, "ZJXLToR7Task", null); + } + } + + private boolean checkMaxTaskNum(SchBasePoint point) { + String ext_point_code = point.getExt_point_code(); + if (StrUtil.isEmpty(ext_point_code)){ + throw new BadRequestException("该点位【"+point.getPoint_code()+"】没有设置等待点位!"); + } + String region_code = point.getRegion_code(); + Param zjpsTaskNum = new Param(); + if (region_code.equals("R6")) { + zjpsTaskNum = paramService.findByCode("ZJXLToR6Task_num"); + }else if (region_code.equals("R7")) { + zjpsTaskNum = paramService.findByCode("ZJXLToR7Task_num"); + } + List zjpsTask = taskService.findUnFinishTasksByTaskConfigAndPointCode("ZJXLTask", ext_point_code); + if (zjpsTaskNum == null) { + if (region_code.equals("R6")) { + throw new BadRequestException("请先设置参数【ZJXLToR6Task_num】!"); + }else if (region_code.equals("R7")) { + throw new BadRequestException("请先设置参数【ZJXLToR7Task_num】!"); + } + } + if (zjpsTask.size() >= Integer.parseInt(zjpsTaskNum.getValue())) { + return false; + } + return true; + } + + + @Override + public void forceFinishByPDA(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + if (!taskObj.getTask_status().equals(TaskStatus.PICK_UP_COMPLETED.getCode())) { + throw new BadRequestException("agv还未取货完成,不允许点完成!"); + } + SchBasePoint startPointObj = pointService.getById(taskObj.getPoint_code1()); + SchBasePoint endPointObj = pointService.getById(taskObj.getPoint_code2()); + //清空起点信息 + startPointObj.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode()); + startPointObj.setStoragevehicle_code(""); + startPointObj.setMaterial_code(""); + PointUtils.setUpdateByType(startPointObj, TaskFinishedTypeEnum.MANUAL_PDA); + pointService.updateById(startPointObj); + //绑定终点信息 + endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); + endPointObj.setStoragevehicle_code(taskObj.getVehicle_code()); + endPointObj.setMaterial_code(taskObj.getMaterial_code()); + PointUtils.setUpdateByType(endPointObj, TaskFinishedTypeEnum.MANUAL_PDA); + pointService.updateById(endPointObj); + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskObj.setRemark(GeneralDefinition.TASK_FINISH); +// taskObj.setFinished_type(taskFinishedType.getCode()); + TaskUtils.setUpdateByType(taskObj, TaskFinishedTypeEnum.MANUAL_PDA); + taskService.updateById(taskObj); + } + + 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("NETXLTask", 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) { + // 校验任务 + SchBaseTask taskObj = taskService.getByCode(task_code); + if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { + throw new BadRequestException("该任务已完成!"); + } + if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { + throw new BadRequestException("该任务已取消!"); + } + // 根据传来的类型去对任务进行操作 + if (status.equals(TaskStatus.EXECUTING)) { + taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); + taskObj.setRemark("执行中"); + TaskUtils.setUpdateByAcs(taskObj); + taskService.updateById(taskObj); + } + if (status.equals(TaskStatus.FINISHED)) { + this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); + } + if (status.equals(TaskStatus.CANCELED)) { + this.cancelTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); + } + } + + + @Override + public void forceFinish(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + if (!taskObj.getTask_status().equals(TaskStatus.PICK_UP_COMPLETED.getCode())){ + throw new BadRequestException("agv还未取货完成,不允许点完成!"); + } + this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); + } + + @Override + public void cancel(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + if (taskObj.getTask_status().equals(TaskStatus.PICK_UP_COMPLETED.getCode())){ + throw new BadRequestException("agv已经取货完成,不允许点取消!"); + } + this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); + } + + @Transactional(rollbackFor = Exception.class) + public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + // 获取参数 + SchBasePoint endPointObj = pointService.getById(taskObj.getPoint_code2()); + // 起点清空 + if (ObjectUtil.isNotEmpty(endPointObj)) { + endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); + endPointObj.setStoragevehicle_code(taskObj.getVehicle_code()); + endPointObj.setMaterial_code(taskObj.getMaterial_code()); + endPointObj.setUpdate_time(DateUtil.now()); + endPointObj.setIng_task_code(""); + PointUtils.setUpdateByType(endPointObj, taskFinishedType); + pointService.updateById(endPointObj); + } + // 任务完成 + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskObj.setRemark(GeneralDefinition.TASK_FINISH); +// taskObj.setFinished_type(taskFinishedType.getCode()); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); + } + + @Transactional(rollbackFor = Exception.class) + public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + // 获取参数 + SchBasePoint startPointObj = pointService.getById(taskObj.getPoint_code1()); + // 起点解锁 + if (ObjectUtil.isNotEmpty(startPointObj)) { + String storagevehicle_code = startPointObj.getStoragevehicle_code(); + //取货完成会清空托盘号 + startPointObj.setIng_task_code(""); + PointUtils.setUpdateByType(startPointObj, taskFinishedType); + pointService.updateById(startPointObj); + } + SchBasePoint point3 = pointService.getById(taskObj.getPoint_code3()); + SchBasePoint point4 = pointService.getById(taskObj.getPoint_code4()); + SchBasePoint point2 = pointService.getById(taskObj.getPoint_code2()); + if (ObjectUtil.isNotEmpty(point2)) { + point2.setIng_task_code(""); + pointService.updateById(point2); + } + if (ObjectUtil.isNotEmpty(point3)) { + point3.setIng_task_code(""); + pointService.updateById(point3); + } + if (ObjectUtil.isNotEmpty(point4)) { + point4.setIng_task_code(""); + pointService.updateById(point4); + } + taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + taskObj.setRemark(GeneralDefinition.TASK_CANCEL); +// taskObj.setFinished_type(taskFinishedType.getCode()); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); + } +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/zjxl/mapper/ZJXLMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/zjxl/mapper/ZJXLMapper.java new file mode 100644 index 0000000..28c73de --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/zjxl/mapper/ZJXLMapper.java @@ -0,0 +1,10 @@ +package org.nl.wms.sch.tasks.zjxl.mapper; + +import org.apache.ibatis.annotations.Param; +import org.nl.wms.sch.point.service.dao.SchBasePoint; + +import java.util.List; + +public interface ZJXLMapper { + List findNextPoint(@Param("nextRegionStr") List nextRegionStr, @Param("regionCode") String regionCode); +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/zjxl/mapper/ZJXLMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/zjxl/mapper/ZJXLMapper.xml new file mode 100644 index 0000000..0d56cb5 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/tasks/zjxl/mapper/ZJXLMapper.xml @@ -0,0 +1,33 @@ + + + + + + diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/PointUtils.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/PointUtils.java index 462d165..d4b10b5 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/PointUtils.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/PointUtils.java @@ -102,11 +102,22 @@ public class PointUtils { pointObj.setUpdate_time(DateUtil.now()); } + /** + * 点位修改更新信息 + **/ + public static void setUpdateByPDA(SchBasePoint pointObj) { + pointObj.setUpdate_id(SecurityUtils.getCurrentUserId()); + pointObj.setUpdate_name(SecurityUtils.getCurrentNickName()); + pointObj.setUpdate_time(DateUtil.now()); + } + public static void setUpdateByType(SchBasePoint pointObj, TaskFinishedTypeEnum taskFinishedType) { if (taskFinishedType.equals(TaskFinishedTypeEnum.AUTO_ACS)) { setUpdateByAcs(pointObj); - } else { + } else if (taskFinishedType.equals(TaskFinishedTypeEnum.MANUAL_PC)){ setUpdateByPC(pointObj); + } else { + setUpdateByPDA(pointObj); } } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/TaskUtils.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/TaskUtils.java index ce6e9c2..283eeac 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/TaskUtils.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/TaskUtils.java @@ -107,8 +107,10 @@ public class TaskUtils { public static void setUpdateByType(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { if (taskFinishedType.equals(TaskFinishedTypeEnum.AUTO_ACS)) { setUpdateByAcs(taskObj); - } else { + } else if (taskFinishedType.equals(TaskFinishedTypeEnum.MANUAL_PC)){ setUpdateByPC(taskObj); + }else { + setUpdateByDefault(taskObj); } } diff --git a/lms/nladmin-ui/.env.production b/lms/nladmin-ui/.env.production index 65580f0..762ac12 100644 --- a/lms/nladmin-ui/.env.production +++ b/lms/nladmin-ui/.env.production @@ -2,6 +2,6 @@ ENV = 'production' # 如果使用 Nginx 代理后端接口,那么此处需要改为 '/',文件查看 Docker 部署篇,Nginx 配置 # 接口地址,注意协议,如果你没有配置 ssl,需要将 https 改为 http -VUE_APP_BASE_API = 'http://10.93.41.201:8010' +VUE_APP_BASE_API = 'http://127.0.0.1:8010' # 如果接口是 http 形式, wss 需要改为 ws -VUE_APP_WS_API = 'ws://10.93.41.201:8010' +VUE_APP_WS_API = 'ws://127.0.0.1:8010' diff --git a/lms/nladmin-ui/public/config.js b/lms/nladmin-ui/public/config.js index 3b399da..441302a 100644 --- a/lms/nladmin-ui/public/config.js +++ b/lms/nladmin-ui/public/config.js @@ -1,9 +1,9 @@ window.g = { dev: { - VUE_APP_BASE_API: 'http://192.168.217.2:8010' + VUE_APP_BASE_API: 'http://127.0.0.1:8010' }, prod: { - VUE_APP_BASE_API: 'http://192.168.217.2:8010' + VUE_APP_BASE_API: 'http://127.0.0.1:8010' } } diff --git a/lms/nladmin-ui/src/views/system/param/index.vue b/lms/nladmin-ui/src/views/system/param/index.vue index b9a234b..95b06f0 100644 --- a/lms/nladmin-ui/src/views/system/param/index.vue +++ b/lms/nladmin-ui/src/views/system/param/index.vue @@ -19,6 +19,15 @@ + + + + + + + + + @@ -73,6 +82,9 @@ const defaultForm = { id: null, code: null, name: null, + zh_name: null, + en_name: null, + in_name: null, value: null, remark: null, is_active: true diff --git a/lms/nladmin-ui/src/views/wms/sch/task/index.vue b/lms/nladmin-ui/src/views/wms/sch/task/index.vue index 9fe03ca..5db5ee5 100644 --- a/lms/nladmin-ui/src/views/wms/sch/task/index.vue +++ b/lms/nladmin-ui/src/views/wms/sch/task/index.vue @@ -207,7 +207,7 @@ :min-width="flexWidth('vehicle_code2',crud.data,$t('Task.table.vehicle_code2'))" > { + this.taskTypeList = res.content + }) + }, getStatusName(code) { const status = this.taskStatusList.find(item => item.code === code) return status ? status.name : '-' }, + getTypeName(code) { + const status = this.taskTypeList.find(item => item.code === code) + return status ? status.name : '-' + }, doOperate(row, command) { let method_name = '' switch (command) { diff --git a/lms/nladmin-ui/src/views/wms/sch/task/schBaseTask.js b/lms/nladmin-ui/src/views/wms/sch/task/schBaseTask.js index 4497dff..b7c90b0 100644 --- a/lms/nladmin-ui/src/views/wms/sch/task/schBaseTask.js +++ b/lms/nladmin-ui/src/views/wms/sch/task/schBaseTask.js @@ -31,6 +31,13 @@ export function getTaskStatusList() { }) } +export function getTaskTypeList() { + return request({ + url: 'api/schBaseTask/taskTypeList', + method: 'get' + }) +} + export function operation(data) { return request({ url: 'api/schBaseTask/operation', @@ -39,4 +46,4 @@ export function operation(data) { }) } -export default { add, edit, del, getTaskStatusList, operation } +export default { add, edit, del, getTaskStatusList, getTaskTypeList, operation }