diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mes/entity/MesBackReceipt.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mes/entity/MesBackReceipt.java new file mode 100644 index 0000000..ab8cfb7 --- /dev/null +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mes/entity/MesBackReceipt.java @@ -0,0 +1,16 @@ +package org.jeecg.modules.wms.api.mes.entity; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author 游杰 + */ +@Data +public class MesBackReceipt { + + private String receiptCode; + private String materialCode; + private BigDecimal qty; +} diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mes/entity/MesBackShipment.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mes/entity/MesBackShipment.java new file mode 100644 index 0000000..cbfe67e --- /dev/null +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mes/entity/MesBackShipment.java @@ -0,0 +1,16 @@ +package org.jeecg.modules.wms.api.mes.entity; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author 游杰 + */ +@Data +public class MesBackShipment { + + private String shipmentCode; + private String materialCode; + private BigDecimal qty; +} diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mes/servuce/impl/MesServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mes/servuce/impl/MesServiceImpl.java index 0d848e5..c7e51f1 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mes/servuce/impl/MesServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mes/servuce/impl/MesServiceImpl.java @@ -1,13 +1,17 @@ package org.jeecg.modules.wms.api.mes.servuce.impl; -import com.aliyun.oss.ServiceException; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +import javax.annotation.Resource; + import org.jeecg.common.api.vo.Result; -import org.jeecg.modules.wms.api.mes.entity.MaterialInfo; -import org.jeecg.modules.wms.api.mes.entity.MesReceiptMaterial; -import org.jeecg.modules.wms.api.mes.entity.MesShipmentDetail; -import org.jeecg.modules.wms.api.mes.entity.MesShipmentMaterial; +import org.jeecg.modules.wms.api.mes.entity.*; import org.jeecg.modules.wms.api.mes.servuce.IMesService; +import org.jeecg.modules.wms.config.address.service.IAddressService; import org.jeecg.modules.wms.receipt.receiptContainerHeader.entity.ReceiptContainerHeader; import org.jeecg.modules.wms.receipt.receiptContainerHeader.service.IReceiptContainerHeaderService; import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptDetail; @@ -28,18 +32,15 @@ import org.jeecg.modules.wms.shipment.shipmentHeader.service.IShipmentHeaderServ import org.jeecg.modules.wms.task.taskHeader.entity.TaskDetail; import org.jeecg.modules.wms.task.taskHeader.entity.TaskHeader; import org.jeecg.modules.wms.task.taskHeader.service.ITaskDetailService; +import org.jeecg.modules.wms.task.taskHeader.service.ITaskHeaderService; import org.jeecg.utils.StringUtils; import org.jeecg.utils.constant.QuantityConstant; +import org.jeecg.utils.http.OkHttpUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import javax.annotation.Resource; -import java.lang.ref.WeakReference; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.stream.Collectors; +import com.alibaba.fastjson.JSON; +import com.aliyun.oss.ServiceException; /** * @author 游杰 @@ -67,6 +68,10 @@ public class MesServiceImpl implements IMesService { private IShipmentContainerHeaderService shipmentContainerHeaderService; @Resource private ITaskDetailService taskDetailService; + @Resource + private IAddressService addressService; + @Resource + private ITaskHeaderService taskHeaderService; /** * 要求入库单详情 必须是不重样的 @@ -214,16 +219,98 @@ public class MesServiceImpl implements IMesService { if (status == QuantityConstant.TASK_STATUS_COMPLETED) { return Result.ok("回传入库信息失败,任务没完成"); } + int backMes = taskHeader.getBackMes(); + if (backMes == QuantityConstant.MES_SEND_OK) { + return Result.ok("回传入库信息失败,信息已经回传过"); + } + List<TaskDetail> taskDetailList = taskDetailService.getTaskDetailListByTaskId(taskId); + List<MesBackReceipt> mesBackReceiptList = new ArrayList<>(); for (TaskDetail taskDetail : taskDetailList) { - + int receiptDetailId = taskDetail.getReceiptDetailId(); + ReceiptDetail receiptDetail = receiptDetailService.getById(receiptDetailId); + if (receiptDetail == null) { + throw new ServiceException("回传入库信息失败,没有找到入库单详情"); + } + String materialCode = receiptDetail.getMaterialCode(); + BigDecimal qty = taskDetail.getQty(); + String receiptCode = receiptDetail.getReceiptCode(); + MesBackReceipt mesBackReceipt = new MesBackReceipt(); + mesBackReceipt.setMaterialCode(materialCode); + mesBackReceipt.setReceiptCode(receiptCode); + mesBackReceipt.setQty(qty); + mesBackReceiptList.add(mesBackReceipt); } - return null; + if (mesBackReceiptList.size() == 0) { + return Result.ok("回传入库信息失败,没有回传信息"); + } + taskHeader.setBackMes(QuantityConstant.MES_SEND_OK); + boolean success = taskHeaderService.updateById(taskHeader); + if (!success) { + throw new ServiceException("回传入库信息失败,更新任务失败"); + } + String url = addressService.getUrlByParam(QuantityConstant.ADDRESS_MES_BACK_RECEIPT); + String jsonParam = JSON.toJSONString(mesBackReceiptList); + System.out.println(jsonParam); + String body = OkHttpUtils.bodypost(url, jsonParam); + if (StringUtils.isEmpty(body)) { + throw new ServiceException("接口地址错误或返回为空"); + } + Result result = JSON.parseObject(body, Result.class); + if (result.getCode() != QuantityConstant.HTTP_OK) { + throw new ServiceException(result.getMessage()); + } + return Result.ok("回传MES入库信息成功"); } @Override @Transactional(rollbackFor = Exception.class) public Result backMesShipment(TaskHeader taskHeader) { - return null; + int status = taskHeader.getStatus(); + int taskId = taskHeader.getId(); + if (status == QuantityConstant.TASK_STATUS_COMPLETED) { + return Result.ok("回传出库信息失败,任务没完成"); + } + int backMes = taskHeader.getBackMes(); + if (backMes == QuantityConstant.MES_SEND_OK) { + return Result.ok("回传出库信息失败,信息已经回传过"); + } + List<TaskDetail> taskDetailList = taskDetailService.getTaskDetailListByTaskId(taskId); + List<MesBackShipment> mesBackShipmentList = new ArrayList<>(); + for (TaskDetail taskDetail : taskDetailList) { + int shipmentDetailId = taskDetail.getShipmentDetailId(); + ShipmentDetail shipmentDetail = shipmentDetailService.getById(shipmentDetailId); + if (shipmentDetail == null) { + throw new ServiceException("回传出库信息失败,没有找到出库单详情"); + } + String materialCode = shipmentDetail.getMaterialCode(); + BigDecimal qty = taskDetail.getQty(); + String shipmentCode = shipmentDetail.getShipmentCode(); + MesBackShipment mesBackShipment = new MesBackShipment(); + mesBackShipment.setShipmentCode(shipmentCode); + mesBackShipment.setQty(qty); + mesBackShipment.setMaterialCode(materialCode); + mesBackShipmentList.add(mesBackShipment); + } + if (mesBackShipmentList.size() == 0) { + return Result.ok("回传出库信息失败,没有回传信息"); + } + taskHeader.setBackMes(QuantityConstant.MES_SEND_OK); + boolean success = taskHeaderService.updateById(taskHeader); + if (!success) { + throw new ServiceException("回传出库信息失败,更新任务失败"); + } + String url = addressService.getUrlByParam(QuantityConstant.ADDRESS_MES_BACK_SHIPMENT); + String jsonParam = JSON.toJSONString(mesBackShipmentList); + System.out.println(jsonParam); + String body = OkHttpUtils.bodypost(url, jsonParam); + if (StringUtils.isEmpty(body)) { + throw new ServiceException("接口地址错误或返回为空"); + } + Result result = JSON.parseObject(body, Result.class); + if (result.getCode() != QuantityConstant.HTTP_OK) { + throw new ServiceException(result.getMessage()); + } + return Result.ok("回传出库信息成功"); } } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/controller/WcsController.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/controller/WcsController.java index e6c9ded..0972a5a 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/controller/WcsController.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/controller/WcsController.java @@ -6,20 +6,16 @@ import javax.servlet.http.HttpServletRequest; import org.jeecg.common.api.vo.Result; import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.modules.wms.api.wcs.entity.ManyEmptyDomain; +import org.jeecg.modules.wms.api.wcs.entity.MaterialInfoEntity; import org.jeecg.modules.wms.api.wcs.entity.TaskFinishEntity; import org.jeecg.modules.wms.api.wcs.entity.WarecellDomain; -import org.jeecg.modules.wms.api.wcs.entity.WcsTask; import org.jeecg.modules.wms.api.wcs.service.WcsService; import org.jeecg.modules.wms.framework.aspectj.lang.annotation.ApiLogger; import org.jeecg.modules.wms.framework.controller.HuahengBaseController; import org.jeecg.modules.wms.task.taskHeader.service.ITaskHeaderService; import org.jeecg.utils.HuahengJwtUtil; import org.jeecg.utils.StringUtils; -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.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import io.swagger.annotations.ApiOperation; @@ -134,4 +130,18 @@ public class WcsController extends HuahengBaseController { }); return result; } + + /** + * 设置物料信息 + * @return + */ + @AutoLog(value = "WCS设置物料信息") + @PostMapping("/setMaterialInfo") + @ApiOperation(value = "WCS设置物料信息", notes = "WCS设置物料信息", httpMethod = "POST") + @ResponseBody + @ApiLogger(apiName = "WCS设置物料信息", from = "WCS") + public Result setMaterialInfo(@RequestBody MaterialInfoEntity materialInfoEntity) { + Result result = wcsService.setMaterialInfo(materialInfoEntity); + return result; + } } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/entity/MaterialInfoEntity.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/entity/MaterialInfoEntity.java new file mode 100644 index 0000000..5869f3d --- /dev/null +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/entity/MaterialInfoEntity.java @@ -0,0 +1,28 @@ +package org.jeecg.modules.wms.api.wcs.entity; + +import lombok.Data; + +@Data +public class MaterialInfoEntity { + + /** + * 任务号 + */ + private int taskNo; + /** + * 重量 + */ + private int weight; + /** + * 长度 + */ + private int length; + /** + * 宽度 + */ + private int width; + /** + * 高度 + */ + private int height; +} diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsService.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsService.java index 219daf0..c42c355 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsService.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsService.java @@ -1,6 +1,7 @@ package org.jeecg.modules.wms.api.wcs.service; import org.jeecg.common.api.vo.Result; +import org.jeecg.modules.wms.api.wcs.entity.MaterialInfoEntity; import org.jeecg.modules.wms.api.wcs.entity.WarecellDomain; import org.jeecg.modules.wms.api.wcs.entity.WcsTask; import org.jeecg.modules.wms.task.taskHeader.entity.TaskHeader; @@ -16,4 +17,10 @@ public interface WcsService { Result wcsTaskAssign(TaskHeader taskHeader); WcsTask switchTaskTypeToWcs(WcsTask wcsTask); + + /** + * 设置物料信息,包括长、宽、高、重量 + */ + Result setMaterialInfo(MaterialInfoEntity materialInfoEntity); + } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java index 3cc6fba..22e4954 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java @@ -7,6 +7,7 @@ import java.util.stream.Collectors; import javax.annotation.Resource; import org.jeecg.common.api.vo.Result; +import org.jeecg.modules.wms.api.wcs.entity.MaterialInfoEntity; import org.jeecg.modules.wms.api.wcs.entity.WarecellDomain; import org.jeecg.modules.wms.api.wcs.entity.WcsTask; import org.jeecg.modules.wms.config.address.service.IAddressService; @@ -303,7 +304,10 @@ public class WcsServiceImpl implements WcsService { } // 移库任务 taskHeader.setPreTaskNo(preTaskNo); - taskHeaderService.updateById(taskHeader); + boolean success = taskHeaderService.updateById(taskHeader); + if (!success) { + return Result.error("更新任务状态失败"); + } return Result.error("先执行移库任务"); } } else { @@ -319,7 +323,10 @@ public class WcsServiceImpl implements WcsService { } } taskHeader.setPreTaskNo(preTaskNo); - taskHeaderService.updateById(taskHeader); + boolean success = taskHeaderService.updateById(taskHeader); + if (!success) { + return Result.error("更新任务状态失败"); + } } } @@ -408,4 +415,22 @@ public class WcsServiceImpl implements WcsService { } return wcsTask; } + + @Override + public Result setMaterialInfo(MaterialInfoEntity materialInfoEntity) { + int taskNo = materialInfoEntity.getTaskNo(); + TaskHeader taskHeader = taskHeaderService.getById(taskNo); + if (taskHeader == null) { + return Result.error("设置物料信息失败,没有找到对应任务"); + } + taskHeader.setLength(materialInfoEntity.getLength()); + taskHeader.setWidth(materialInfoEntity.getWidth()); + taskHeader.setHeight(materialInfoEntity.getHeight()); + taskHeader.setWeight(materialInfoEntity.getWeight()); + boolean success = taskHeaderService.updateById(taskHeader); + if (!success) { + return Result.error("设置物料信息失败,更新任务信息失败"); + } + return Result.ok("设置物料信息成功"); + } } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/material/controller/MaterialController.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/material/controller/MaterialController.java index 5bf476a..f603706 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/material/controller/MaterialController.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/material/controller/MaterialController.java @@ -1,51 +1,33 @@ package org.jeecg.modules.wms.config.material.controller; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.net.URLDecoder; + import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.jeecg.common.api.vo.Result; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.query.QueryGenerator; -import org.jeecg.utils.HuahengJwtUtil; -import org.jeecg.common.util.oConvertUtils; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import lombok.extern.slf4j.Slf4j; - -import org.jeecg.modules.system.entity.SysUser; -import org.jeecg.modules.wms.config.location.entity.Location; import org.jeecg.modules.wms.config.material.entity.Material; +import org.jeecg.modules.wms.config.material.entity.SearchDomain; import org.jeecg.modules.wms.config.material.service.IMaterialService; -import org.jeecg.modules.wms.domain.SearchDomain; +import org.jeecg.utils.HuahengJwtUtil; import org.jeecg.utils.StringUtils; -import org.jeecgframework.poi.excel.ExcelImportUtil; -import org.jeecgframework.poi.excel.def.NormalExcelConstants; -import org.jeecgframework.poi.excel.entity.ExportParams; -import org.jeecgframework.poi.excel.entity.ImportParams; -import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; -import org.jeecg.common.system.base.controller.JeecgController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; -import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.ModelAndView; -import com.alibaba.fastjson.JSON; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import org.jeecg.common.aspect.annotation.AutoLog; +import lombok.extern.slf4j.Slf4j; /** * @Description: 物料管理 diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/domain/SearchDomain.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/material/entity/SearchDomain.java index a72951a..2051a39 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/domain/SearchDomain.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/material/entity/SearchDomain.java @@ -1,4 +1,4 @@ -package org.jeecg.modules.wms.domain; +package org.jeecg.modules.wms.config.material.entity; import lombok.Data; diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/job/MesTask.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/job/MesTask.java new file mode 100644 index 0000000..69b5618 --- /dev/null +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/job/MesTask.java @@ -0,0 +1,80 @@ +package org.jeecg.modules.wms.monitor.job; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.annotation.Resource; + +import org.apache.commons.collections.MapUtils; +import org.jeecg.modules.wms.api.mes.servuce.IMesService; +import org.jeecg.modules.wms.task.taskHeader.entity.TaskHeader; +import org.jeecg.modules.wms.task.taskHeader.service.ITaskHeaderService; +import org.jeecg.utils.constant.QuantityConstant; +import org.quartz.Job; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; + +import lombok.extern.slf4j.Slf4j; + +/** + * @author 游杰 + */ +@Slf4j +public class MesTask implements Job { + + @Resource + private IMesService mesService; + @Resource + private ITaskHeaderService taskHeaderService; + // 并发控制 + Map<String, Boolean> runningTaskMap = new HashMap<>(); + + /** + * 找到完成状态的,没有回传成功的所有任务,然后回传信息给MES + * @param context + * @throws JobExecutionException + */ + @Override + public void execute(JobExecutionContext context) throws JobExecutionException { + String taskKey = "mesBack"; + if (MapUtils.getBoolean(runningTaskMap, taskKey, false)) { + return; + } + try { + runningTaskMap.put(taskKey, true); + LambdaQueryWrapper<TaskHeader> taskHeaderLambdaQueryWrapper = Wrappers.lambdaQuery(); + taskHeaderLambdaQueryWrapper.eq(TaskHeader::getStatus, QuantityConstant.TASK_STATUS_COMPLETED).ne(TaskHeader::getBackMes, QuantityConstant.MES_SEND_OK) + .in(TaskHeader::getTaskType, QuantityConstant.TASK_TYPE_WHOLERECEIPT, QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT); + List<TaskHeader> taskHeaderList = taskHeaderService.list(taskHeaderLambdaQueryWrapper); + for (TaskHeader taskHeader : taskHeaderList) { + try { + taskHeaderService.addMesTryTimes(taskHeader); + mesService.backMesReceipt(taskHeader); + } catch (Exception e) { + e.printStackTrace(); + } + } + + taskHeaderLambdaQueryWrapper = Wrappers.lambdaQuery(); + taskHeaderLambdaQueryWrapper.eq(TaskHeader::getStatus, QuantityConstant.TASK_STATUS_COMPLETED).ne(TaskHeader::getBackMes, QuantityConstant.MES_SEND_OK) + .in(TaskHeader::getTaskType, QuantityConstant.TASK_TYPE_WHOLESHIPMENT, QuantityConstant.TASK_TYPE_SORTINGSHIPMENT); + taskHeaderList = taskHeaderService.list(taskHeaderLambdaQueryWrapper); + for (TaskHeader taskHeader : taskHeaderList) { + try { + taskHeaderService.addMesTryTimes(taskHeader); + mesService.backMesShipment(taskHeader); + } catch (Exception e) { + e.printStackTrace(); + } + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + runningTaskMap.put(taskKey, false); + } + } +} diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/entity/TaskHeader.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/entity/TaskHeader.java index e2ca04e..c8979a4 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/entity/TaskHeader.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/entity/TaskHeader.java @@ -102,7 +102,18 @@ public class TaskHeader implements Serializable { @Excel(name = "目标出入口", width = 15) @ApiModelProperty(value = "目标出入口") private String toPortCode; - @Excel(name = "重量", width = 15) + @ApiModelProperty(value = "生成agv任务") + private Integer sendAgv; + @ApiModelProperty(value = "回传MES信息") + private Integer backMes; + @ApiModelProperty(value = "MES提交次数") + private Integer backMesTimes; + @ApiModelProperty(value = "长度") + private Integer length; + @ApiModelProperty(value = "宽度") + private Integer width; + @ApiModelProperty(value = "高度") + private Integer height; @ApiModelProperty(value = "重量") private Integer weight; /** 备用字段1 */ diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/ITaskHeaderService.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/ITaskHeaderService.java index 361c79a..023add4 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/ITaskHeaderService.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/ITaskHeaderService.java @@ -1,13 +1,13 @@ package org.jeecg.modules.wms.task.taskHeader.service; -import com.baomidou.mybatisplus.extension.service.IService; +import java.io.Serializable; +import java.util.Collection; + import org.jeecg.common.api.vo.Result; import org.jeecg.modules.wms.config.location.entity.Location; import org.jeecg.modules.wms.task.taskHeader.entity.TaskHeader; -import org.springframework.beans.factory.annotation.Autowired; -import java.io.Serializable; -import java.util.Collection; -import java.util.List; + +import com.baomidou.mybatisplus.extension.service.IService; /** * @Description: 任务表 @@ -179,4 +179,6 @@ public interface ITaskHeaderService extends IService<TaskHeader> { */ Result createManyEmptyOut(String containerCode, String toPortCode, String warehouseCode); + Result addMesTryTimes(TaskHeader taskHeader); + } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java index 4731a23..b373577 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java @@ -1,9 +1,15 @@ package org.jeecg.modules.wms.task.taskHeader.service.impl; -import com.aliyun.oss.ServiceException; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import javax.annotation.Resource; + import org.jeecg.common.api.vo.Result; import org.jeecg.modules.wms.api.wcs.service.LocationAllocationService; import org.jeecg.modules.wms.api.wcs.service.WcsService; @@ -15,7 +21,6 @@ import org.jeecg.modules.wms.config.locationHigh.entity.LocationHigh; import org.jeecg.modules.wms.config.locationHigh.service.ILocationHighService; import org.jeecg.modules.wms.config.locationType.entity.LocationType; import org.jeecg.modules.wms.config.locationType.service.ILocationTypeService; -import org.jeecg.modules.wms.config.material.entity.Material; import org.jeecg.modules.wms.config.material.service.IMaterialService; import org.jeecg.modules.wms.config.parameterConfiguration.service.IParameterConfigurationService; import org.jeecg.modules.wms.config.port.entity.Port; @@ -48,16 +53,15 @@ import org.jeecg.modules.wms.task.taskHeader.service.ITaskDetailService; import org.jeecg.modules.wms.task.taskHeader.service.ITaskHeaderService; import org.jeecg.utils.StringUtils; import org.jeecg.utils.constant.QuantityConstant; -import org.springframework.stereotype.Service; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import javax.annotation.Resource; -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.*; -import java.util.stream.Collectors; +import com.aliyun.oss.ServiceException; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; /** * @Description: 任务表 @@ -615,6 +619,18 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea } @Override + public Result addMesTryTimes(TaskHeader taskHeader) { + int mesTryTimes = taskHeader.getBackMesTimes(); + mesTryTimes++; + taskHeader.setBackMesTimes(mesTryTimes); + boolean success = taskHeaderService.updateById(taskHeader); + if (!success) { + return Result.error("MES回传次数增加失败"); + } + return Result.ok("MES回传次数增加成功"); + } + + @Override public TaskHeader getUnCompleteTaskByFromLocationCode(String fromLocationCode, String warehouseCode) { LambdaQueryWrapper<TaskHeader> taskHeaderLambdaQueryWrapper = Wrappers.lambdaQuery(); taskHeaderLambdaQueryWrapper.eq(TaskHeader::getFromLocationCode, fromLocationCode).eq(TaskHeader::getWarehouseCode, warehouseCode).lt(TaskHeader::getStatus, diff --git a/huaheng-wms-core/src/main/java/org/jeecg/utils/constant/QuantityConstant.java b/huaheng-wms-core/src/main/java/org/jeecg/utils/constant/QuantityConstant.java index dfc7198..6237a7a 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/utils/constant/QuantityConstant.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/utils/constant/QuantityConstant.java @@ -64,6 +64,9 @@ public class QuantityConstant { // 过账 public static final Integer RECEIPT_HEADER_COMPLETED = 800; + // 回传失败 + public static final Integer RECEIPT_HEADER_RETURN_ERROR = 850; + // 回传 public static final Integer RECEIPT_HEADER_RETURN = 900; @@ -96,6 +99,9 @@ public class QuantityConstant { // 过账 public static final Integer SHIPMENT_HEADER_COMPLETED = 800; + // 回传失败 + public static final Integer SHIPMENT_HEADER_RETURN_ERROR = 850; + // 回传 public static final Integer SHIPMENT_HEADER_RETURN = 900; @@ -395,12 +401,14 @@ public class QuantityConstant { // WCS任务更新 public static final String ADDRESS_AGV_TASK_UPDATE = "AGV_TASK_UPDATE"; - // ERP - // 回传ERP入库单 public static final String ADDRESS_ERP_BACK_RECEIPT = "ERP_BACK_RECEIPT"; // 回传ERP出库单 public static final String ADDRESS_ERP_BACK_SHIPMENT = "ERP_BACK_SHIPMENT"; + // 回传MES入库单 + public static final String ADDRESS_MES_BACK_RECEIPT = "MES_BACK_RECEIPT"; + // 回传ERP出库单 + public static final String ADDRESS_MES_BACK_SHIPMENT = "MES_BACK_SHIPMENT"; public static final String PLATFORM_CODING = "赋码系统"; public static final String PLATFORM_ERP = "ERP"; @@ -408,6 +416,15 @@ public class QuantityConstant { // good public static final String QUALITY_GOOD = "good"; + // 发送AGV任务成功 + public static final int AGV_SEND_OK = 1; + // 发送AGV任务异常 + public static final int AGV_SEND_ERROR = 2; + // 回传MES成功 + public static final int MES_SEND_OK = 1; + // 回传MES异常 + public static final int MES_SEND_ERROR = 2; + public static final int STATION_IN = 1; public static final int STATION_OUT = 2; public static final int STATION_PICK = 3;