diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/controller/IotToWmsController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/controller/IotToWmsController.java new file mode 100644 index 0000000..a164b5f --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/controller/IotToWmsController.java @@ -0,0 +1,55 @@ +package org.nl.wms.ext.controller; + +import cn.dev33.satoken.annotation.SaIgnore; +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.logging.annotation.Log; +import org.nl.wms.ext.service.AcsToWmsService; +import org.nl.wms.ext.service.IotToWmsService; +import org.nl.wms.ext.service.dto.to.iot.IotOrdersReq; +import org.nl.wms.ext.service.dto.to.iot.IotPartsReq; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author sxp + */ +@RestController +@Api(tags = "iot请求lms") +@RequestMapping("/api/wms") +@Slf4j +@SaIgnore +public class IotToWmsController { + + @Autowired + private IotToWmsService iotToWmsService; + + @PostMapping("/task") + @Log("iot请求lms新增任务") + @ApiOperation("iot请求lms新增任务") + public ResponseEntity apply(@RequestBody JSONObject param) { + return new ResponseEntity<>(iotToWmsService.acsApply(param), HttpStatus.OK); + } + + @PostMapping("/parts") + @Log("叉车离开后数据接口") + @ApiOperation("叉车离开后数据接口") + public ResponseEntity parts(@RequestBody IotPartsReq iotPartsReq) { + return new ResponseEntity<>(iotToWmsService.parts(iotPartsReq), HttpStatus.OK); + } + + @PostMapping("/orders") + @Log("叉车离开后数据接口") + @ApiOperation("叉车离开后数据接口") + public ResponseEntity orders(@RequestBody IotOrdersReq iotOrdersReq) { + return new ResponseEntity<>(iotToWmsService.orders(iotOrdersReq), HttpStatus.OK); + } + +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/IotToWmsService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/IotToWmsService.java new file mode 100644 index 0000000..51512af --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/IotToWmsService.java @@ -0,0 +1,20 @@ +package org.nl.wms.ext.service; + +import com.alibaba.fastjson.JSONObject; +import org.nl.wms.ext.service.dto.to.BaseResponse; +import org.nl.wms.ext.service.dto.to.iot.IotOrdersReq; +import org.nl.wms.ext.service.dto.to.iot.IotPartsReq; + +/** + * @Author: sxp + * @Description: iot请求wms + */ +public interface IotToWmsService { + /** ACS请求接口 */ + BaseResponse acsApply(JSONObject param); + + BaseResponse parts(IotPartsReq iotPartsReq); + + BaseResponse orders(IotOrdersReq iotOrdersReq); + +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/dto/to/iot/AgvStateParam.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/dto/to/iot/AgvStateParam.java new file mode 100644 index 0000000..ea2f453 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/dto/to/iot/AgvStateParam.java @@ -0,0 +1,20 @@ +package org.nl.wms.ext.service.dto.to.iot; + +import lombok.Data; + +/** + * 叉车到位和离开 + * + * @author sxp + */ +@Data +public class AgvStateParam { + /*任务号*/ + private String task_code; + /*1 (表示请求取货) 2 (表示取货完成) */ + private String status; + /*设备号*/ + private String device_code; + /*托盘号*/ + private String vehicle_code; +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/dto/to/iot/IotOrdersReq.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/dto/to/iot/IotOrdersReq.java new file mode 100644 index 0000000..388ac23 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/dto/to/iot/IotOrdersReq.java @@ -0,0 +1,20 @@ +package org.nl.wms.ext.service.dto.to.iot; + +import lombok.Data; + +/** + * @author sxp + * @Description 叉车离开后发送数据接口请求参数 + */ +@Data +public class IotOrdersReq { + private String ID; + private String Jobname; + private String Salesorder; + private String Palletid; + private String ProductID; + private String Angle; + private String Thickness; + private String PositionX; + private String PositionY; +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/dto/to/iot/IotPartsReq.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/dto/to/iot/IotPartsReq.java new file mode 100644 index 0000000..29a4496 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/dto/to/iot/IotPartsReq.java @@ -0,0 +1,24 @@ +package org.nl.wms.ext.service.dto.to.iot; + +import lombok.Data; + +/** + * @author sxp + * @Description 叉车离开后发送数据接口请求参数 + */ +@Data +public class IotPartsReq { + private String ID; + private String Jobname; + private String PalletID; + private String Pallet_Split; + private String ProductID; + private String Currentqty; + private String SizeX; + private String SizeY; + private String Angle; + private String Thickness; + private String PositionX; + private String PositionY; + private String vehicle_code; +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/AcsToWmsServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/AcsToWmsServiceImpl.java index a6418d6..3cd2fa6 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/AcsToWmsServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/AcsToWmsServiceImpl.java @@ -195,7 +195,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { /** * 任务阶段反馈最新点位 - * todo */ @Override @@ -215,12 +214,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { // 执行创建任务 task.feedbackState(param, schBaseTask, result); taskService.update(schBaseTask); - Map map = new HashMap<>(); - map.put("start_point", schBaseTask.getPoint_code1()); - map.put("next_point", schBaseTask.getPoint_code2()); - map.put("start_height", schBaseTask.getPoint_code1_height()); - map.put("next_height", schBaseTask.getPoint_code2_height()); - result.setParameters(map); } catch (Exception e) { String message = e.getMessage(); log.error("ACS请求LMS出现错误: {}{}", e.getMessage(), e); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/IotToWmsServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/IotToWmsServiceImpl.java new file mode 100644 index 0000000..f10449a --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/IotToWmsServiceImpl.java @@ -0,0 +1,38 @@ +package org.nl.wms.ext.service.impl; + +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.nl.wms.ext.service.AcsToWmsService; +import org.nl.wms.ext.service.IotToWmsService; +import org.nl.wms.ext.service.dto.to.BaseResponse; +import org.nl.wms.ext.service.dto.to.iot.IotOrdersReq; +import org.nl.wms.ext.service.dto.to.iot.IotPartsReq; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; + +@Slf4j +@Service +@Lazy +public class IotToWmsServiceImpl implements IotToWmsService { + @Autowired + private AcsToWmsService acsToWmsService; + + @Override + public BaseResponse acsApply(JSONObject param) { + return acsToWmsService.acsApply(param); + } + + + @Override + public BaseResponse parts(IotPartsReq iotPartsReq) { + return null; + } + + @Override + public BaseResponse orders(IotOrdersReq iotOrdersReq) { + + return null; + } + +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/controller/PdaController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/controller/PdaController.java index 21a0080..a8f553f 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/controller/PdaController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/controller/PdaController.java @@ -71,4 +71,52 @@ public class PdaController { return new ResponseEntity<>(pdaService.zpjb(param), HttpStatus.OK); } + @PostMapping("/yclrk") + @Log("待折弯件出库") + @ApiOperation("待折弯件出库") + public ResponseEntity dzwck(@RequestBody JSONObject param){ + return new ResponseEntity<>(pdaService.dzwck(param), HttpStatus.OK); + } + + @PostMapping("/zwjk") + @Log("折弯空载具呼叫") + @ApiOperation("折弯空载具呼叫") + public ResponseEntity zwjk(@RequestBody JSONObject param){ + return new ResponseEntity<>(pdaService.zwjk(param), HttpStatus.OK); + } + + @PostMapping("/zwzz") + @Log("折弯件(成品)周转") + @ApiOperation("折弯件(成品)周转") + public ResponseEntity zwzz(@RequestBody JSONObject param){ + return new ResponseEntity<>(pdaService.zwzz(param), HttpStatus.OK); + } + + @PostMapping("/lkzy") + @Log("成叠笼框转运") + @ApiOperation("成叠笼框转运") + public ResponseEntity lkzy(@RequestBody JSONObject param){ + return new ResponseEntity<>(pdaService.lkzy(param), HttpStatus.OK); + } + + @PostMapping("/qtjgsl") + @Log("其它加工送料") + @ApiOperation("其它加工送料") + public ResponseEntity qtjgsl(@RequestBody JSONObject param){ + return new ResponseEntity<>(pdaService.qtjgsl(param), HttpStatus.OK); + } + + @PostMapping("/qgxl") + @Log("激光切割下料") + @ApiOperation("激光切割下料") + public ResponseEntity qgxl(@RequestBody JSONObject param){ + return new ResponseEntity<>(pdaService.qgxl(param), HttpStatus.OK); + } + + @PostMapping("/getVehicleType") + @Log("获取载具类型") + @ApiOperation("获取载具类型") + public ResponseEntity getVehicleType(){ + return new ResponseEntity<>(pdaService.getVehicleType(), HttpStatus.OK); + } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/PdaService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/PdaService.java index 40e3a89..ef6166b 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/PdaService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/PdaService.java @@ -1,8 +1,11 @@ package org.nl.wms.pda.service; import com.alibaba.fastjson.JSONObject; +import org.nl.wms.pda.service.dao.vo.DropdownListVo; import org.nl.wms.pda.service.dao.vo.PdaResponseVo; +import java.util.List; + /** * @Author: lyd * @Description: @@ -19,4 +22,17 @@ public interface PdaService { PdaResponseVo zpjb(JSONObject param); + PdaResponseVo dzwck(JSONObject param); + + PdaResponseVo zwjk(JSONObject param); + + PdaResponseVo zwzz(JSONObject param); + + PdaResponseVo lkzy(JSONObject param); + + PdaResponseVo qtjgsl(JSONObject param); + + PdaResponseVo qgxl(JSONObject param); + + List getVehicleType(); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/mapper/PdaMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/mapper/PdaMapper.java index e3271dd..aae4739 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/mapper/PdaMapper.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/mapper/PdaMapper.java @@ -1,6 +1,7 @@ package org.nl.wms.pda.service.dao.mapper; import org.nl.wms.pda.service.dao.dto.CommonQueryDto; +import org.nl.wms.pda.service.dao.vo.DropdownListVo; import org.nl.wms.sch.point.service.dao.SchBasePoint; import java.util.List; @@ -12,4 +13,5 @@ import java.util.List; */ public interface PdaMapper { + List getDictByCode(String vehicleType); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/mapper/PdaMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/mapper/PdaMapper.xml index 0ea35f1..eb5aa00 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/mapper/PdaMapper.xml +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/mapper/PdaMapper.xml @@ -2,4 +2,10 @@ + diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/impl/PdaServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/impl/PdaServiceImpl.java index 073b926..f4269d3 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/impl/PdaServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/impl/PdaServiceImpl.java @@ -1,6 +1,7 @@ package org.nl.wms.pda.service.impl; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -11,6 +12,7 @@ import org.nl.wms.database.material.service.IMdBaseMaterialService; import org.nl.wms.ext.service.AcsToWmsService; import org.nl.wms.pda.service.PdaService; import org.nl.wms.pda.service.dao.mapper.PdaMapper; +import org.nl.wms.pda.service.dao.vo.DropdownListVo; import org.nl.wms.pda.service.dao.vo.PdaResponseVo; import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup; @@ -135,4 +137,60 @@ public class PdaServiceImpl implements PdaService { } return PdaResponseVo.pdaResultOk("组盘解绑成功"); } + + @Override + public PdaResponseVo dzwck(JSONObject param) { + param.put("taskCode", IdUtil.getSnowflake(1, 1).nextIdStr()); + param.put("taskType", "ZWSLTask"); +// param.put("start_device_code",param.getString("start_device_code")); + acsToWmsService.acsApply(param); + return PdaResponseVo.pdaResultOk("待折弯件出库成功"); + } + + @Override + public PdaResponseVo zwjk(JSONObject param) { + param.put("taskCode", IdUtil.getSnowflake(1, 1).nextIdStr()); + param.put("taskType", "ZWJKTask"); +// param.put("vehicleCode", param.getString("vehicleCode")); +// param.put("next_device_code",param.getString("next_device_code")); + acsToWmsService.acsApply(param); + return PdaResponseVo.pdaResultOk("呼叫空载具成功"); + } + + @Override + public PdaResponseVo zwzz(JSONObject param) { + param.put("taskCode", IdUtil.getSnowflake(1, 1).nextIdStr()); + param.put("taskType", "ZWXLTask"); + acsToWmsService.acsApply(param); + return PdaResponseVo.pdaResultOk("成品周转任务下发成功"); + } + + @Override + public PdaResponseVo lkzy(JSONObject param) { + param.put("taskCode", IdUtil.getSnowflake(1, 1).nextIdStr()); + param.put("taskType", "LKZYTask"); + acsToWmsService.acsApply(param); + return PdaResponseVo.pdaResultOk("成叠笼框转运任务下发成功"); + } + + @Override + public PdaResponseVo qtjgsl(JSONObject param) { + param.put("taskCode", IdUtil.getSnowflake(1, 1).nextIdStr()); + param.put("taskType", "QTSLTask"); + acsToWmsService.acsApply(param); + return PdaResponseVo.pdaResultOk("其它加工送料任务下发成功"); + } + + @Override + public PdaResponseVo qgxl(JSONObject param) { + param.put("taskCode", IdUtil.getSnowflake(1, 1).nextIdStr()); + param.put("taskType", "QGXLTask"); + acsToWmsService.acsApply(param); + return PdaResponseVo.pdaResultOk("激光切割下料任务下发成功"); + } + + @Override + public List getVehicleType() { + return pdaMapper.getDictByCode("vehicle_type"); + } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/CYJKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/cy/CYJKTask.java similarity index 97% rename from lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/CYJKTask.java rename to lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/cy/CYJKTask.java index 9716fbc..fc1fc7b 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/CYJKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/cy/CYJKTask.java @@ -1,4 +1,4 @@ -package org.nl.wms.sch.task_manage.task.tasks; +package org.nl.wms.sch.task_manage.task.tasks.cy; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; @@ -29,6 +29,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; +import java.util.Arrays; import java.util.List; /** @@ -96,8 +97,9 @@ public class CYJKTask extends AbstractTask { //查找空托盘 private SchBasePoint findStartPoint(String startRegionStr) { + String[] reginList = startRegionStr.split(","); LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); - lam.in(SchBasePoint::getRegion_code, startRegionStr) + lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList)) .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_VEHICLE.getCode()) .and(la -> la.isNull(SchBasePoint::getIng_task_code) .or() diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/CYXLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/cy/CYXLTask.java similarity index 79% rename from lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/CYXLTask.java rename to lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/cy/CYXLTask.java index 38d5597..4c55af6 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/CYXLTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/cy/CYXLTask.java @@ -1,18 +1,19 @@ -package org.nl.wms.sch.task_manage.task.tasks; +package org.nl.wms.sch.task_manage.task.tasks.cy; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.http.HttpRequest; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import freemarker.template.utility.StringUtil; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang.StringUtils; import org.nl.common.exception.BadRequestException; -import org.nl.wms.ext.service.AcsToWmsService; +import org.nl.config.SpringContextHolder; +import org.nl.system.service.param.impl.SysParamServiceImpl; import org.nl.wms.ext.service.dto.to.BaseResponse; +import org.nl.wms.ext.service.dto.to.iot.AgvStateParam; import org.nl.wms.pdm.service.IPdmBdWorkorderService; -import org.nl.wms.pdm.service.dao.PdmBdWorkorder; import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup; import org.nl.wms.sch.point.service.ISchBasePointService; @@ -27,14 +28,12 @@ import org.nl.wms.sch.task_manage.enums.GroupStatusEnum; import org.nl.wms.sch.task_manage.enums.PointStatusEnum; import org.nl.wms.sch.task_manage.task.TaskType; import org.nl.wms.sch.task_manage.task.core.TaskStatus; -import org.nl.wms.sch.task_manage.task.tasks.mapper.PointMapper; import org.nl.wms.util.PointUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; +import org.springframework.http.HttpStatus; import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; -import java.math.BigDecimal; import java.util.Arrays; import java.util.List; @@ -94,7 +93,7 @@ public class CYXLTask extends AbstractTask { * @return */ private SchBasePoint findNextPoint(String nextReginStr) { - //todo 区域优先级 + //todo 区域优先级,暂时按照创建任务配置时,区域选择顺序 String[] reginList = nextReginStr.split(","); LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList)) @@ -161,7 +160,7 @@ public class CYXLTask extends AbstractTask { endPointObj.setVehicle_qty(1); pointService.update(endPointObj); // 要把数据存到组盘表 -> 改造公共方法,返回id - + //todo 涉及一对多、设置物料类型为待分拣冲压件、载具类型 SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup(); groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr()); groupEntity.setCreate_id("2"); @@ -186,6 +185,7 @@ public class CYXLTask extends AbstractTask { groupEntity.setPcsn(DateUtil.format(DateUtil.date(), "yyyyMMdd")); groupEntity.setInstorage_time(DateUtil.now()); groupEntity.setTask_code(taskObj.getTask_code()); + groupEntity.setMove_way(startPoint); groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定 groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。 groupEntity.setIs_delete(false); @@ -195,11 +195,6 @@ public class CYXLTask extends AbstractTask { taskObj.setTask_status(TaskStatus.FINISHED.getCode()); taskObj.setGroup_id(groupEntity.getGroup_id()); taskObj.setRemark("任务完成"); - try { - //todo 入库成功后上报mes - } catch (Exception e) { - log.error("原材料入库上报MES失败{}", e.getMessage(), e); - } } if (status.equals(TaskStatus.CANCELED)) { // 取消 // 终点解锁 @@ -226,6 +221,51 @@ public class CYXLTask extends AbstractTask { @Override protected void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result) { - //该场景无需重算等待点 + // 反馈上位系统 反馈上位系统成功后,返回200给acs + AgvStateParam agvStateParam = new AgvStateParam(); + agvStateParam.setTask_code(schBaseTask.getTask_code()); + agvStateParam.setDevice_code(schBaseTask.getPoint_code1()); + agvStateParam.setVehicle_code(schBaseTask.getVehicle_code()); + String phase = param.getString("phase"); + String iotUrl = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("iot_url").getValue(); + if ("3".equals(phase)) { + agvStateParam.setStatus("1"); + //叉车到位 请求取货 + String url = iotUrl + "iot/agvarrive"; + applyIot(url, agvStateParam, result); + } + if ("5".equals(phase)) { + agvStateParam.setStatus("2"); + //取货完成,请求离开 + String url = iotUrl + "iot/agvfinish"; + applyIot(url, agvStateParam, result); + } + } + + private void applyIot(String url, AgvStateParam agvStateParam, BaseResponse result) { + String jsonParam = JSON.toJSONString(agvStateParam); + log.info("请求iot参数为:{}", jsonParam); + try { + String resultMsg = HttpRequest.post(url) + .body(jsonParam) + .execute().body(); + JSONObject res = JSONObject.parseObject(resultMsg); + if ("200".equals(res.getString("code"))) { + log.info("请求iot成功,返回结果为:{}", res); + result.setCode(HttpStatus.OK.value()); + result.setMessage("请求iot成功!"); + } else { + log.error("请求iot失败:{}", res); + result.setCode(HttpStatus.BAD_REQUEST.value()); + result.setMessage("请求iot失败!"); + } + } catch (Exception e) { + String msg = e.getMessage(); + //请求iot失败 + log.error("请求iot失败:{}", msg); + result.setCode(HttpStatus.BAD_REQUEST.value()); + result.setMessage("请求iot失败!"); + } + } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/FJSLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSLTask.java similarity index 82% rename from lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/FJSLTask.java rename to lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSLTask.java index dc1773d..d1e4880 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/FJSLTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSLTask.java @@ -1,4 +1,4 @@ -package org.nl.wms.sch.task_manage.task.tasks; +package org.nl.wms.sch.task_manage.task.tasks.fj; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; @@ -20,14 +20,17 @@ 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.GroupBindMaterialStatusEnum; +import org.nl.wms.sch.task_manage.enums.PointStatusEnum; import org.nl.wms.sch.task_manage.task.TaskType; import org.nl.wms.sch.task_manage.task.core.TaskStatus; import org.nl.wms.sch.task_manage.task.tasks.mapper.PointMapper; import org.nl.wms.util.PointUtils; +import org.nl.wms.util.TaskUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; +import java.util.Arrays; import java.util.List; /** @@ -74,7 +77,7 @@ public class FJSLTask extends AbstractTask { task.setRemark("未找到所需点位!"); taskService.update(task); // 消息通知 - log.info("冲压机叫空盘未找到所需点位!"); + log.info("分拣上料未找到所需点位!"); continue; } // 设置起点并修改创建成功状态 @@ -95,9 +98,11 @@ public class FJSLTask extends AbstractTask { //查找待分拣物料 private SchBasePoint findStartPoint(String startRegionStr) { - //从待分拣货架查找 + //从待分拣货架查找 物料类型是待分拣物料,物料类型字段尚未确定 + String[] reginList = startRegionStr.split(","); LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); - lam.in(SchBasePoint::getRegion_code, startRegionStr) + lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList)) + .eq(SchBasePoint::getPoint_status, PointStatusEnum.FULL_POINT.getCode()) .and(la -> la.isNull(SchBasePoint::getIng_task_code) .or() .eq(SchBasePoint::getIng_task_code, "")) @@ -108,7 +113,7 @@ public class FJSLTask extends AbstractTask { /** - * todo 任务完成设置完成时间为开始固化时间 + * */ @Override // @Transactional(rollbackFor = Exception.class) @@ -144,6 +149,17 @@ public class FJSLTask extends AbstractTask { startPointObj.setIng_task_code(""); startPointObj.setUpdate_time(DateUtil.now()); pointService.updateById(startPointObj); + //todo 分拣上料完成后 组盘信息解绑 + SchBaseVehiclematerialgroup vehicleMaterialGroupObj = vehiclematerialgroupService.getById(taskObj.getGroup_id()); + vehicleMaterialGroupObj.setGroup_bind_material_status(GroupBindMaterialStatusEnum.UNBOUND.getValue()); + vehicleMaterialGroupObj.setPoint_code(endPointObj.getPoint_code()); + vehicleMaterialGroupObj.setPoint_name(endPointObj.getPoint_name()); + vehicleMaterialGroupObj.setTask_code(taskObj.getTask_code()); + vehicleMaterialGroupObj.setMove_way(vehicleMaterialGroupObj.getMove_way() + " -> " + endPointObj.getPoint_code()); + vehicleMaterialGroupObj.setUpdate_id(GeneralDefinition.ACS_ID); + vehicleMaterialGroupObj.setUpdate_name(GeneralDefinition.ACS_NAME); + vehicleMaterialGroupObj.setUpdate_time(DateUtil.now()); + vehiclematerialgroupService.updateById(vehicleMaterialGroupObj); // 任务完成 taskObj.setTask_status(TaskStatus.FINISHED.getCode()); taskObj.setRemark("任务完成"); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/FJXLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJXLTask.java similarity index 93% rename from lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/FJXLTask.java rename to lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJXLTask.java index fe8326f..c38c1ac 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/FJXLTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJXLTask.java @@ -1,4 +1,4 @@ -package org.nl.wms.sch.task_manage.task.tasks; +package org.nl.wms.sch.task_manage.task.tasks.fj; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; @@ -68,7 +68,7 @@ public class FJXLTask extends AbstractTask { if (ObjectUtil.isEmpty(point)) { task.setRemark("未找到所需点位!"); taskService.update(task); - log.info("冲压下料入库未找到当前符合条件的点位!"); + log.info("分拣下料未找到当前符合条件的点位!"); continue; } task.setPoint_code2(point.getPoint_code()); @@ -88,7 +88,6 @@ public class FJXLTask extends AbstractTask { * @return */ private SchBasePoint findNextPoint(String nextReginStr) { - String[] reginList = nextReginStr.split(","); LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList)) @@ -100,13 +99,7 @@ public class FJXLTask extends AbstractTask { .orderByAsc(SchBasePoint::getIn_order_seq) .orderByAsc(SchBasePoint::getPoint_code); List schBasePoints = pointService.list(lam); - for (SchBasePoint schBasePoint : schBasePoints) { - if (StringUtils.isEmpty(schBasePoint.getIng_task_code()) && schBasePoint.getVehicle_qty() == 0) { - log.info("冲压下料入库找到当前符合条件的点位{}", schBasePoint.getPoint_code()); - return schBasePoint; - } - } - return null; + return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null; } @Override @@ -154,8 +147,8 @@ public class FJXLTask extends AbstractTask { endPointObj.setVehicle_code(ObjectUtil.isEmpty(endPointObj.getVehicle_code()) ? vehicle_code + "," : endPointObj.getVehicle_code() + vehicle_code + ","); endPointObj.setVehicle_qty(1); pointService.update(endPointObj); - // 要把数据存到组盘表 -> 改造公共方法,返回id - //todo 组盘表需要关联外部mes晶棒数据,一对多 + // 要把数据存到组盘表 + //todo 组盘一对一还是一对多、设置物料类型为待折弯冲压件、载具类型 SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup(); groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr()); groupEntity.setCreate_id("2"); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/KJRKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/lk/LKZYTask.java similarity index 68% rename from lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/KJRKTask.java rename to lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/lk/LKZYTask.java index e262d1c..a018fdb 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/KJRKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/lk/LKZYTask.java @@ -1,4 +1,4 @@ -package org.nl.wms.sch.task_manage.task.tasks; +package org.nl.wms.sch.task_manage.task.tasks.lk; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; @@ -6,11 +6,10 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; import org.nl.common.exception.BadRequestException; -import org.nl.wms.ext.service.AcsToWmsService; import org.nl.wms.ext.service.dto.to.BaseResponse; import org.nl.wms.pdm.service.IPdmBdWorkorderService; -import org.nl.wms.pdm.service.dao.PdmBdWorkorder; import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup; import org.nl.wms.sch.point.service.ISchBasePointService; @@ -22,28 +21,28 @@ import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; import org.nl.wms.sch.task_manage.AbstractTask; import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum; import org.nl.wms.sch.task_manage.enums.GroupStatusEnum; +import org.nl.wms.sch.task_manage.enums.PointStatusEnum; import org.nl.wms.sch.task_manage.task.TaskType; import org.nl.wms.sch.task_manage.task.core.TaskStatus; -import org.nl.wms.sch.task_manage.task.tasks.mapper.PointMapper; import org.nl.wms.util.PointUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; -import java.math.BigDecimal; +import java.util.Arrays; import java.util.List; /** - * @Author: psh - * @Description: 空架入库 - * @Date: 2024/1/24 + * @Author: sxp + * @Description: 成叠笼框转运 + * @Date: 2024/3/11 */ @Slf4j @Component -@TaskType("KJRKTask") +@TaskType("LKZYTask") @Lazy -public class KJRKTask extends AbstractTask { - private static String TASK_CONFIG_CODE = "KJRKTask"; +public class LKZYTask extends AbstractTask { + private static String TASK_CONFIG_CODE = "LKZYTask"; /** * 入口 */ @@ -58,46 +57,27 @@ public class KJRKTask extends AbstractTask { private IPdmBdWorkorderService workorderService; @Autowired private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; - @Autowired - private PointMapper pointMapper; - @Autowired - private AcsToWmsService acsToWmsService; @Override -// @Transactional(rollbackFor = Exception.class) protected 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) { - // 找终点 - SchBasePoint startPoint = pointService.getOne(new LambdaQueryWrapper() - .eq(SchBasePoint::getPoint_code, task.getPoint_code1())); - String extGroupData = task.getExt_group_data(); - JSONObject jsonObject = JSONObject.parseObject(extGroupData); -// String materialType = jsonObject.getString("material_type"); - SchBasePoint point = findNextPoint(); + SchBasePoint point = findNextPoint(taskConfig.getNext_region_str()); if (ObjectUtil.isEmpty(point)) { task.setRemark("未找到所需点位!"); taskService.update(task); - // 消息通知 - log.info("原材料入库未找到当前符合条件的点位!"); + log.info("成叠笼框暂存点未找到当前符合条件的点位!"); continue; } - // 设置终点并修改创建成功状态 task.setPoint_code2(point.getPoint_code()); task.setTask_status(TaskStatus.CREATED.getCode()); task.setRemark(""); taskService.update(task); - //发起任务时先把点位占用,防止发起重复任务 point.setIng_task_code(task.getTask_code()); -// point.setVehicle_type(materialType); pointService.update(point); - - //下发 this.renotifyAcs(task); } } @@ -107,17 +87,20 @@ public class KJRKTask extends AbstractTask { * * @return */ - private SchBasePoint findNextPoint() { - String regionCode = "YL"; - List schBasePointList = pointMapper.findPointByRegion(regionCode, "2"); - for (SchBasePoint schBasePoint : schBasePointList) { - if ("2".equals(schBasePoint.getPoint_status()) - && schBasePoint.getVehicle_qty() ==0) { - log.info("原材料入库找到当前符合条件的点位{}", schBasePoint.getPoint_code()); - return schBasePoint; - } - } - return null; + private SchBasePoint findNextPoint(String nextReginStr) { + + String[] reginList = nextReginStr.split(","); + LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); + lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList)) + .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode()) + .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住 + .or() + .eq(SchBasePoint::getIng_task_code, "")) + .eq(SchBasePoint::getIs_used, true) + .orderByAsc(SchBasePoint::getIn_order_seq) + .orderByAsc(SchBasePoint::getPoint_code); + List schBasePoints = pointService.list(lam); + return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null; } @Override @@ -139,15 +122,15 @@ public class KJRKTask extends AbstractTask { String vehicle_code = ObjectUtil.isNotEmpty(taskObj.getVehicle_code()) ? taskObj.getVehicle_code() : IdUtil.getSnowflake(1, 1).nextIdStr(); - PdmBdWorkorder workorderCode = null; - if (extGroupData != null) { - workorderCode = ObjectUtil.isNotEmpty(extGroupData.getString("workorder_code")) - ? workorderService.getOne(new LambdaQueryWrapper() - .eq(PdmBdWorkorder::getWorkorder_code, extGroupData.getString("workorder_code"))) - : null; - } +// PdmBdWorkorder workorderCode = null; +// if (extGroupData != null) { +// workorderCode = ObjectUtil.isNotEmpty(extGroupData.getString("workorder_code")) +// ? workorderService.getOne(new LambdaQueryWrapper() +// .eq(PdmBdWorkorder::getWorkorder_code, extGroupData.getString("workorder_code"))) +// : null; +// } String startPoint = taskObj.getPoint_code1(); // 获取起点 - String endPoint = ObjectUtil.isNotEmpty(taskObj.getPoint_code2())?taskObj.getPoint_code2().substring(0,taskObj.getPoint_code2().length()-2):"0"; // 获取终点 + String endPoint = ObjectUtil.isNotEmpty(taskObj.getPoint_code2()) ? taskObj.getPoint_code2().substring(0, taskObj.getPoint_code2().length() - 2) : "0"; // 获取终点 SchBasePoint startPointObj = pointService.getById(startPoint); SchBasePoint endPointObj = pointService.getById(endPoint); // 根据传来的类型去对任务进行操作 @@ -165,25 +148,25 @@ public class KJRKTask extends AbstractTask { endPointObj.setVehicle_code(ObjectUtil.isEmpty(endPointObj.getVehicle_code()) ? vehicle_code + "," : endPointObj.getVehicle_code() + vehicle_code + ","); endPointObj.setVehicle_qty(1); pointService.update(endPointObj); - // 要把数据存到组盘表 -> 改造公共方法,返回id - //todo 组盘表需要关联外部mes晶棒数据,一对多 + // 要把数据存到组盘表 + //todo 组盘信息 SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup(); groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr()); groupEntity.setCreate_id("2"); groupEntity.setCreate_name("ACS"); groupEntity.setCreate_time(DateUtil.now()); - groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(workorderCode) - ? workorderCode.getMaterial_id() - : ""); - groupEntity.setStanding_time(ObjectUtil.isNotEmpty(workorderCode) - ? workorderCode.getStanding_time() - : 0); - groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(extGroupData) - ? extGroupData.getBigDecimal("material_qty") - : BigDecimal.valueOf(0)); - groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(workorderCode) - ? workorderCode.getWorkorder_code() - : ""); +// groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(workorderCode) +// ? workorderCode.getMaterial_id() +// : ""); +// groupEntity.setStanding_time(ObjectUtil.isNotEmpty(workorderCode) +// ? workorderCode.getStanding_time() +// : 0); +// groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(extGroupData) +// ? extGroupData.getBigDecimal("material_qty") +// : BigDecimal.valueOf(0)); +// groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(workorderCode) +// ? workorderCode.getWorkorder_code() +// : ""); groupEntity.setVehicle_code(vehicle_code); groupEntity.setVehicle_type(taskObj.getVehicle_type()); groupEntity.setPoint_code(startPoint); @@ -202,8 +185,8 @@ public class KJRKTask extends AbstractTask { taskObj.setRemark("任务完成"); try { //todo 入库成功后上报mes - }catch (Exception e){ - log.error("原材料入库上报MES失败{}",e.getMessage(),e); + } catch (Exception e) { + log.error("原材料入库上报MES失败{}", e.getMessage(), e); } } if (status.equals(TaskStatus.CANCELED)) { // 取消 diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/QGJKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/qg/QGJKTask.java similarity index 99% rename from lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/QGJKTask.java rename to lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/qg/QGJKTask.java index fdf2c58..61326ec 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/QGJKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/qg/QGJKTask.java @@ -1,4 +1,4 @@ -package org.nl.wms.sch.task_manage.task.tasks; +package org.nl.wms.sch.task_manage.task.tasks.qg; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/QGXLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/qg/QGXLTask.java similarity index 99% rename from lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/QGXLTask.java rename to lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/qg/QGXLTask.java index 7a81c89..10e8cee 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/QGXLTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/qg/QGXLTask.java @@ -1,4 +1,4 @@ -package org.nl.wms.sch.task_manage.task.tasks; +package org.nl.wms.sch.task_manage.task.tasks.qg; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/LKZYTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/qt/QTSLTask.java similarity index 51% rename from lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/LKZYTask.java rename to lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/qt/QTSLTask.java index 827da99..20dead2 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/LKZYTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/qt/QTSLTask.java @@ -1,15 +1,17 @@ -package org.nl.wms.sch.task_manage.task.tasks; +package org.nl.wms.sch.task_manage.task.tasks.qt; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; import org.nl.common.exception.BadRequestException; -import org.nl.wms.ext.service.WmsToAcsService; import org.nl.wms.ext.service.dto.to.BaseResponse; import org.nl.wms.pdm.service.IPdmBdWorkorderService; import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; +import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup; 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; @@ -17,27 +19,30 @@ 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.GroupBindMaterialStatusEnum; +import org.nl.wms.sch.task_manage.enums.GroupStatusEnum; +import org.nl.wms.sch.task_manage.enums.PointStatusEnum; import org.nl.wms.sch.task_manage.task.TaskType; import org.nl.wms.sch.task_manage.task.core.TaskStatus; -import org.nl.wms.sch.task_manage.task.tasks.mapper.PointMapper; +import org.nl.wms.util.PointUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; +import java.util.Arrays; import java.util.List; /** * @Author: sxp - * @Description: 成叠笼框转运 - * @Date: 2023/1/24 + * @Description: 其他加工送料 + * @Date: 2024/3/11 */ @Slf4j @Component -@TaskType("LKZYTask") +@TaskType("QTSLTask") @Lazy -public class LKZYTask extends AbstractTask { - private static String TASK_CONFIG_CODE = "LKZYTask"; +public class QTSLTask extends AbstractTask { + private static String TASK_CONFIG_CODE = "QTSLTask"; /** * 入口 */ @@ -52,60 +57,52 @@ public class LKZYTask extends AbstractTask { private IPdmBdWorkorderService workorderService; @Autowired private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; - @Autowired - private PointMapper pointMapper; - @Autowired - private WmsToAcsService wmsToAcsService; @Override -// @Transactional(rollbackFor = Exception.class) protected 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) { - SchBasePoint point = findStartPoint(taskConfig.getStart_region_str()); + SchBasePoint point = findNextPoint(taskConfig.getNext_region_str()); if (ObjectUtil.isEmpty(point)) { task.setRemark("未找到所需点位!"); taskService.update(task); - // 消息通知 - log.info("冲压机叫空盘未找到所需点位!"); + log.info("成叠笼框暂存点未找到当前符合条件的点位!"); continue; } - // 设置起点并修改创建成功状态 - task.setPoint_code1(point.getPoint_code()); + task.setPoint_code2(point.getPoint_code()); task.setTask_status(TaskStatus.CREATED.getCode()); task.setRemark(""); taskService.update(task); //发起任务时先把点位占用,防止发起重复任务 point.setIng_task_code(task.getTask_code()); - point.setUpdate_id(GeneralDefinition.ACS_ID); - point.setUpdate_name(GeneralDefinition.ACS_NAME); - point.setUpdate_time(DateUtil.now()); pointService.update(point); - //下发 this.renotifyAcs(task); } } - //查找待分拣物料 - private SchBasePoint findStartPoint(String startRegionStr) { + /** + * 判断目标点位 + * + * @return + */ + private SchBasePoint findNextPoint(String nextReginStr) { + //分配空库位 + String[] reginList = nextReginStr.split(","); LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); - lam.in(SchBasePoint::getRegion_code, startRegionStr) - .and(la -> la.isNull(SchBasePoint::getIng_task_code) + lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList)) + .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode()) + .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住 .or() .eq(SchBasePoint::getIng_task_code, "")) - .eq(SchBasePoint::getIs_used, true); + .eq(SchBasePoint::getIs_used, true) + .orderByAsc(SchBasePoint::getIn_order_seq) + .orderByAsc(SchBasePoint::getPoint_code); List schBasePoints = pointService.list(lam); return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null; } - - /** - * todo 任务完成设置完成时间为开始固化时间 - */ @Override // @Transactional(rollbackFor = Exception.class) protected void updateStatus(String task_code, TaskStatus status) { @@ -117,8 +114,23 @@ public class LKZYTask extends AbstractTask { if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { throw new BadRequestException("该任务已取消!"); } + // 获取参数 + JSONObject extGroupData = ObjectUtil.isNotEmpty(taskObj.getExt_group_data()) + ? JSONObject.parseObject(taskObj.getExt_group_data()) + : null; + // 载具编码:没有就创建一个 + String vehicle_code = ObjectUtil.isNotEmpty(taskObj.getVehicle_code()) + ? taskObj.getVehicle_code() + : IdUtil.getSnowflake(1, 1).nextIdStr(); +// PdmBdWorkorder workorderCode = null; +// if (extGroupData != null) { +// workorderCode = ObjectUtil.isNotEmpty(extGroupData.getString("workorder_code")) +// ? workorderService.getOne(new LambdaQueryWrapper() +// .eq(PdmBdWorkorder::getWorkorder_code, extGroupData.getString("workorder_code"))) +// : null; +// } String startPoint = taskObj.getPoint_code1(); // 获取起点 - String endPoint = taskObj.getPoint_code2(); // 获取终点 + String endPoint = ObjectUtil.isNotEmpty(taskObj.getPoint_code2()) ? taskObj.getPoint_code2().substring(0, taskObj.getPoint_code2().length() - 2) : "0"; // 获取终点 SchBasePoint startPointObj = pointService.getById(startPoint); SchBasePoint endPointObj = pointService.getById(endPoint); // 根据传来的类型去对任务进行操作 @@ -127,34 +139,63 @@ public class LKZYTask extends AbstractTask { taskObj.setRemark("执行中"); } if (status.equals(TaskStatus.FINISHED)) { // 完成 + // 起点清空 + if (ObjectUtil.isNotEmpty(startPointObj)) { + PointUtils.clearPoint(startPointObj); + } // 终点解锁 endPointObj.setIng_task_code(""); - endPointObj.setVehicle_code(taskObj.getVehicle_code()); - endPointObj.setVehicle_code2(taskObj.getVehicle_code2()); + endPointObj.setVehicle_code(ObjectUtil.isEmpty(endPointObj.getVehicle_code()) ? vehicle_code + "," : endPointObj.getVehicle_code() + vehicle_code + ","); endPointObj.setVehicle_qty(1); - endPointObj.setUpdate_time(DateUtil.now()); pointService.update(endPointObj); - // 起点清空 - startPointObj.setVehicle_code(""); - startPointObj.setVehicle_code2(""); - startPointObj.setIng_task_code(""); - startPointObj.setUpdate_time(DateUtil.now()); - pointService.updateById(startPointObj); + // 要把数据存到组盘表 + //todo 组盘信息 + SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup(); + groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + groupEntity.setCreate_id("2"); + groupEntity.setCreate_name("ACS"); + groupEntity.setCreate_time(DateUtil.now()); +// groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(workorderCode) +// ? workorderCode.getMaterial_id() +// : ""); +// groupEntity.setStanding_time(ObjectUtil.isNotEmpty(workorderCode) +// ? workorderCode.getStanding_time() +// : 0); +// groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(extGroupData) +// ? extGroupData.getBigDecimal("material_qty") +// : BigDecimal.valueOf(0)); +// groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(workorderCode) +// ? workorderCode.getWorkorder_code() +// : ""); + groupEntity.setVehicle_code(vehicle_code); + groupEntity.setVehicle_type(taskObj.getVehicle_type()); + groupEntity.setPoint_code(startPoint); + groupEntity.setPoint_name(startPointObj.getPoint_name()); + groupEntity.setPcsn(DateUtil.format(DateUtil.date(), "yyyyMMdd")); + groupEntity.setInstorage_time(DateUtil.now()); + groupEntity.setTask_code(taskObj.getTask_code()); + groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定 + groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。 + groupEntity.setIs_delete(false); + groupEntity.setMove_way(startPoint); + vehiclematerialgroupService.save(groupEntity); // 任务完成 taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskObj.setGroup_id(groupEntity.getGroup_id()); taskObj.setRemark("任务完成"); + try { + //todo 入库成功后上报mes + } catch (Exception e) { + log.error("原材料入库上报MES失败{}", e.getMessage(), e); + } } if (status.equals(TaskStatus.CANCELED)) { // 取消 // 终点解锁 if (ObjectUtil.isNotEmpty(endPointObj)) { endPointObj.setIng_task_code(""); + //任务取消把原先占用的位置释放 pointService.update(endPointObj); } - // 起点解锁 - if (ObjectUtil.isNotEmpty(startPointObj)) { - startPointObj.setIng_task_code(""); - pointService.update(startPointObj); - } taskObj.setRemark("任务取消"); taskObj.setTask_status(TaskStatus.CANCELED.getCode()); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/ZWJKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/zw/ZWJKTask.java similarity index 97% rename from lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/ZWJKTask.java rename to lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/zw/ZWJKTask.java index 9687ace..7e51b17 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/ZWJKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/zw/ZWJKTask.java @@ -1,4 +1,4 @@ -package org.nl.wms.sch.task_manage.task.tasks; +package org.nl.wms.sch.task_manage.task.tasks.zw; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; @@ -74,7 +74,7 @@ public class ZWJKTask extends AbstractTask { if (ObjectUtil.isEmpty(point)) { task.setRemark("未找到所需点位!"); taskService.update(task); - log.info("冲压下料入库未找到当前符合条件的点位!"); + log.info("折弯叫空未找到当前符合条件的点位!"); continue; } task.setPoint_code2(point.getPoint_code()); @@ -94,7 +94,7 @@ public class ZWJKTask extends AbstractTask { * @return */ private SchBasePoint findNextPoint(String nextReginStr) { - + //todo 判断所需载具类型 String[] reginList = nextReginStr.split(","); LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList)) @@ -108,7 +108,7 @@ public class ZWJKTask extends AbstractTask { List schBasePoints = pointService.list(lam); for (SchBasePoint schBasePoint : schBasePoints) { if (StringUtils.isEmpty(schBasePoint.getIng_task_code()) && schBasePoint.getVehicle_qty() == 0) { - log.info("冲压下料入库找到当前符合条件的点位{}", schBasePoint.getPoint_code()); + log.info("折弯叫空找到当前符合条件的点位{}", schBasePoint.getPoint_code()); return schBasePoint; } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/ZWSLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/zw/ZWSLTask.java similarity index 94% rename from lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/ZWSLTask.java rename to lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/zw/ZWSLTask.java index 3cd0a98..75a9311 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/ZWSLTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/zw/ZWSLTask.java @@ -1,4 +1,4 @@ -package org.nl.wms.sch.task_manage.task.tasks; +package org.nl.wms.sch.task_manage.task.tasks.zw; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; @@ -25,6 +25,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; +import java.util.Arrays; import java.util.List; /** @@ -64,11 +65,10 @@ public class ZWSLTask extends AbstractTask { // 配置信息 SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - //todo task根据请求参数指定终点 for (SchBaseTask task : tasks) { SchBasePoint point = findStartPoint(taskConfig.getStart_region_str()); if (ObjectUtil.isEmpty(point)) { - task.setRemark("未找到所需点位!"); + task.setRemark("折弯上料未找到所需点位!"); taskService.update(task); // 消息通知 log.info("折弯上料未找到所需点位!"); @@ -90,10 +90,12 @@ public class ZWSLTask extends AbstractTask { } } - //查找待分拣物料 todo + //todo 根据组盘信息去查找待折弯物料 private SchBasePoint findStartPoint(String startRegionStr) { + String[] reginList = startRegionStr.split(","); + List regions = Arrays.asList(reginList); LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); - lam.in(SchBasePoint::getRegion_code, startRegionStr) + lam.in(SchBasePoint::getRegion_code, regions) .and(la -> la.isNull(SchBasePoint::getIng_task_code) .or() .eq(SchBasePoint::getIng_task_code, "")) @@ -104,7 +106,7 @@ public class ZWSLTask extends AbstractTask { /** - * todo 任务完成设置完成时间为开始固化时间 + * */ @Override // @Transactional(rollbackFor = Exception.class) @@ -140,6 +142,7 @@ public class ZWSLTask extends AbstractTask { startPointObj.setIng_task_code(""); startPointObj.setUpdate_time(DateUtil.now()); pointService.updateById(startPointObj); + //todo 是否需要组盘信息解绑 // 任务完成 taskObj.setTask_status(TaskStatus.FINISHED.getCode()); taskObj.setRemark("任务完成"); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/ZWXLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/zw/ZWXLTask.java similarity index 98% rename from lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/ZWXLTask.java rename to lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/zw/ZWXLTask.java index d474907..a316fa3 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/ZWXLTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/zw/ZWXLTask.java @@ -1,4 +1,4 @@ -package org.nl.wms.sch.task_manage.task.tasks; +package org.nl.wms.sch.task_manage.task.tasks.zw; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; @@ -155,7 +155,7 @@ public class ZWXLTask extends AbstractTask { endPointObj.setVehicle_qty(1); pointService.update(endPointObj); // 要把数据存到组盘表 -> 改造公共方法,返回id - //todo 组盘表需要关联外部mes晶棒数据,一对多 + //todo 组盘信息修改 SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup(); groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr()); groupEntity.setCreate_id("2");