交接作业单任务下发

This commit is contained in:
zhou-hongcheng
2026-01-30 17:51:44 +08:00
parent 7644dc8fc5
commit caf926f503
9 changed files with 182 additions and 2 deletions
@@ -2,11 +2,13 @@ package com.mhd.wms.application.service.handoverTaskOrder;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.mhd.common.core.domain.po.UserPo;
import com.mhd.common.core.exception.ServiceException; import com.mhd.common.core.exception.ServiceException;
import com.mhd.common.core.utils.DateUtils; import com.mhd.common.core.utils.DateUtils;
import com.mhd.common.core.web.domain.AjaxResult; import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.common.security.utils.SecurityUtils; import com.mhd.common.security.utils.SecurityUtils;
import com.mhd.system.api.SystemServiceFeign; import com.mhd.system.api.SystemServiceFeign;
import com.mhd.system.api.UserServiceFeign;
import com.mhd.system.api.domain.PlatformFeignPO; import com.mhd.system.api.domain.PlatformFeignPO;
import com.mhd.system.api.domain.PlatformUseTimeFeignPO; import com.mhd.system.api.domain.PlatformUseTimeFeignPO;
import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO; import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO;
@@ -15,6 +17,7 @@ import com.mhd.system.api.model.LoginUser;
import com.mhd.wms.domain.handoverTaskOrder.repository.po.HandoverTaskOrderPO; import com.mhd.wms.domain.handoverTaskOrder.repository.po.HandoverTaskOrderPO;
import com.mhd.wms.domain.handoverTaskOrder.repository.todo.HandoverTaskOrderDO; import com.mhd.wms.domain.handoverTaskOrder.repository.todo.HandoverTaskOrderDO;
import com.mhd.wms.domain.handoverTaskOrder.service.HandoverTaskOrderDomainService; import com.mhd.wms.domain.handoverTaskOrder.service.HandoverTaskOrderDomainService;
import com.mhd.wms.domain.shiftManage.repository.todo.ShiftManageDO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -36,6 +39,9 @@ public class HandoverTaskOrderApplicationService {
@Autowired @Autowired
private SystemServiceFeign systemServiceFeign; private SystemServiceFeign systemServiceFeign;
@Autowired
private UserServiceFeign userServiceFeign;
/** /**
* 分页查询交接作业单列表 * 分页查询交接作业单列表
@@ -148,4 +154,23 @@ public class HandoverTaskOrderApplicationService {
} }
} }
public boolean taskDistribution(HandoverTaskOrderDO handoverTaskOrderDO) {
// 设置作业员信息
operatorsParam(handoverTaskOrderDO);
return handoverTaskOrderDomainService.taskDistribution(handoverTaskOrderDO);
}
/**
* @description 封装作业人员信息
* @param handoverTaskOrderDO
*/
private void operatorsParam(HandoverTaskOrderDO handoverTaskOrderDO){
AjaxResult ajaxResult = userServiceFeign.getInfo(handoverTaskOrderDO.getOperatorsBy());
if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
throw new ServiceException("获取作业人员信息失败");
}
UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class);
handoverTaskOrderDO.setOperatorsName(userPo.getUserName());
}
} }
@@ -56,8 +56,8 @@ public class DeliveTaskDO extends BaseVOEntity {
@Excel(name = "仓库名称") @Excel(name = "仓库名称")
private String warehouseName; private String warehouseName;
@ApiModelProperty("任务类型 0-无 1-收货 2-上架 3-拣货 4-复核 5-移位 6-盘点") @ApiModelProperty("任务类型 0-无 1-收货 2-上架 3-拣货 4-复核 5-移位 6-盘点 7-交接作业单")
@Excel(name = "任务类型 0-无 1-收货 2-上架 3-拣货 4-复核 5-移位 6-盘点") @Excel(name = "任务类型 0-无 1-收货 2-上架 3-拣货 4-复核 5-移位 6-盘点 7-交接作业单")
private Integer taskType; private Integer taskType;
@ApiModelProperty("任务状态 0-未接收 1-已接收 2-已拒绝 3-已完成 4-已关闭") @ApiModelProperty("任务状态 0-未接收 1-已接收 2-已拒绝 3-已完成 4-已关闭")
@@ -125,5 +125,13 @@ public class HandoverTaskOrder extends BaseVOEntity {
@Excel(name = "备注") @Excel(name = "备注")
private String remark; private String remark;
@ApiModelProperty("任务是否下发: 1-是 2-否")
@Excel(name = "任务是否下发: 1-是 2-否")
private Integer taskDistribution;
@ApiModelProperty("任务下发时间")
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "任务下发时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date taskDistributionTime;
} }
@@ -40,4 +40,6 @@ public interface IHandoverTaskOrderService extends IService<HandoverTaskOrder>
* 查询交接作业单 * 查询交接作业单
*/ */
public HandoverTaskOrderPO getInfo(Long outTaskOrderId); public HandoverTaskOrderPO getInfo(Long outTaskOrderId);
boolean taskDistribution(HandoverTaskOrderDO handoverTaskOrderDO);
} }
@@ -1,16 +1,22 @@
package com.mhd.wms.domain.handoverTaskOrder.repository.persistence; package com.mhd.wms.domain.handoverTaskOrder.repository.persistence;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mhd.common.security.utils.SecurityUtils;
import com.mhd.system.api.model.LoginUser;
import com.mhd.wms.domain.handoverTaskOrder.entity.HandoverTaskOrder; import com.mhd.wms.domain.handoverTaskOrder.entity.HandoverTaskOrder;
import com.mhd.wms.domain.handoverTaskOrder.repository.facade.IHandoverTaskOrderService; import com.mhd.wms.domain.handoverTaskOrder.repository.facade.IHandoverTaskOrderService;
import com.mhd.wms.domain.handoverTaskOrder.repository.mapper.HandoverTaskOrderMapper; import com.mhd.wms.domain.handoverTaskOrder.repository.mapper.HandoverTaskOrderMapper;
import com.mhd.wms.domain.handoverTaskOrder.repository.po.HandoverTaskOrderPO; import com.mhd.wms.domain.handoverTaskOrder.repository.po.HandoverTaskOrderPO;
import com.mhd.wms.domain.handoverTaskOrder.repository.todo.HandoverTaskOrderDO; import com.mhd.wms.domain.handoverTaskOrder.repository.todo.HandoverTaskOrderDO;
import com.mhd.wms.domain.shiftManage.entity.ShiftManage;
import com.mhd.wms.domain.shiftManage.repository.todo.ShiftManageDO;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
@@ -78,4 +84,19 @@ public class HandoverTaskOrderImpl extends ServiceImpl<HandoverTaskOrderMapper,
BeanUtils.copyProperties(handoverTaskOrder,handoverTaskOrderPO); BeanUtils.copyProperties(handoverTaskOrder,handoverTaskOrderPO);
return handoverTaskOrderPO; return handoverTaskOrderPO;
} }
@Override
public boolean taskDistribution(HandoverTaskOrderDO handoverTaskOrderDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
HandoverTaskOrder handoverTaskOrder = new HandoverTaskOrder();
handoverTaskOrder.setTaskDistribution(1);
handoverTaskOrder.setTaskDistributionTime(new Date());
handoverTaskOrder.setUpdateBy(loginUser.getUserid());
handoverTaskOrder.setUpdateByName(loginUser.getUsername());
handoverTaskOrder.setUpdateTime(new Date());
int i = handoverTaskOrderMapper.update(handoverTaskOrder, new QueryWrapper<HandoverTaskOrder>().lambda()
.in(HandoverTaskOrder::getHandoverTaskOrderId, handoverTaskOrderDO.getHandoverTaskOrderIds()));
return i > 0;
}
} }
@@ -131,4 +131,12 @@ public class HandoverTaskOrderDO extends BaseVOEntity {
@ApiModelProperty("交接作业单id") @ApiModelProperty("交接作业单id")
private List<Long> handoverTaskOrderIds; private List<Long> handoverTaskOrderIds;
@ApiModelProperty("作业人用户ID")
@Excel(name = "作业人用户ID")
private Long operatorsBy;
@ApiModelProperty("作业人姓名")
@Excel(name = "作业人姓名")
private String operatorsName;
} }
@@ -1,10 +1,15 @@
package com.mhd.wms.domain.handoverTaskOrder.service; package com.mhd.wms.domain.handoverTaskOrder.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.mhd.common.core.exception.ServiceException;
import com.mhd.common.core.utils.OrderSequence;
import com.mhd.common.core.utils.bean.BeanUtils; import com.mhd.common.core.utils.bean.BeanUtils;
import com.mhd.common.security.utils.SecurityUtils; import com.mhd.common.security.utils.SecurityUtils;
import com.mhd.system.api.model.LoginUser; import com.mhd.system.api.model.LoginUser;
import com.mhd.wms.domain.deliveTask.repository.facade.IDeliveTaskService;
import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO;
import com.mhd.wms.domain.handoverTaskOrder.entity.HandoverTaskOrder; import com.mhd.wms.domain.handoverTaskOrder.entity.HandoverTaskOrder;
import com.mhd.wms.domain.handoverTaskOrder.repository.facade.IHandoverTaskOrderService; import com.mhd.wms.domain.handoverTaskOrder.repository.facade.IHandoverTaskOrderService;
import com.mhd.wms.domain.handoverTaskOrder.repository.po.HandoverTaskOrderPO; import com.mhd.wms.domain.handoverTaskOrder.repository.po.HandoverTaskOrderPO;
@@ -15,14 +20,19 @@ import com.mhd.wms.domain.materialInventory.entity.MaterialInventory;
import com.mhd.wms.domain.materialInventory.repository.mapper.MaterialInventoryMapper; import com.mhd.wms.domain.materialInventory.repository.mapper.MaterialInventoryMapper;
import com.mhd.wms.domain.outMaterialDetail.entity.OutMaterialDetail; import com.mhd.wms.domain.outMaterialDetail.entity.OutMaterialDetail;
import com.mhd.wms.domain.outMaterialDetail.repository.mapper.OutMaterialDetailMapper; import com.mhd.wms.domain.outMaterialDetail.repository.mapper.OutMaterialDetailMapper;
import com.mhd.wms.domain.shiftManage.repository.po.ShiftManagePO;
import com.mhd.wms.domain.shiftManage.repository.todo.ShiftManageDO;
import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder; import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder;
import com.mhd.wms.domain.stockOutOrder.repository.mapper.StockOutOrderMapper; import com.mhd.wms.domain.stockOutOrder.repository.mapper.StockOutOrderMapper;
import com.mhd.wms.domain.stockOutOrder.repository.po.StockOutOrderPO; import com.mhd.wms.domain.stockOutOrder.repository.po.StockOutOrderPO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@@ -46,6 +56,8 @@ public class HandoverTaskOrderDomainService {
private InventoryAdjustmentRecordMapper inventoryAdjustmentRecordMapper; private InventoryAdjustmentRecordMapper inventoryAdjustmentRecordMapper;
@Autowired @Autowired
private StockOutOrderMapper stockOutOrderMapper; private StockOutOrderMapper stockOutOrderMapper;
@Autowired
private IDeliveTaskService deliveTaskService;
/** /**
@@ -225,4 +237,88 @@ public class HandoverTaskOrderDomainService {
} }
} }
} }
/**
* @description 任务下发
*/
@Transactional(rollbackFor = Exception.class)
public boolean taskDistribution(HandoverTaskOrderDO handoverTaskOrderDO) {
List<HandoverTaskOrder> handoverTaskOrders = handoverTaskOrderService.list(new LambdaQueryWrapper<HandoverTaskOrder>()
.in(HandoverTaskOrder::getHandoverTaskOrderId, handoverTaskOrderDO.getHandoverTaskOrderIds())
.eq(HandoverTaskOrder::getTaskDistribution, 2)
);
if (CollectionUtils.isEmpty(handoverTaskOrders)) {
throw new ServiceException("作业单不存在或已下发,请重新选择");
}
//移位生成下发任务
genDeliveTask(handoverTaskOrders, handoverTaskOrderDO);
return handoverTaskOrderService.taskDistribution(handoverTaskOrderDO);
}
private void genDeliveTask(List<HandoverTaskOrder> handoverTaskOrders, HandoverTaskOrderDO handoverTaskOrderDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
List<DeliveTaskDO> deliveTaskDOList = new ArrayList<>();
for (HandoverTaskOrder handoverTaskOrder : handoverTaskOrders) {
DeliveTaskDO deliveTaskDO = new DeliveTaskDO();
deliveTaskDO.setOrganizationId(loginUser.getUserPo().getOrganizationId());
deliveTaskDO.setOrganizationName(loginUser.getUserPo().getOrganizationName());
deliveTaskDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
deliveTaskDO.setTaskNumber(OrderSequence.getOrderCode("RW"));
deliveTaskDO.setTrackingNumber(handoverTaskOrder.getTaskNumber());
deliveTaskDO.setWarehouseId(handoverTaskOrder.getWarehouseId());
deliveTaskDO.setWarehouseCode(handoverTaskOrder.getWarehouseCode());
deliveTaskDO.setWarehouseName(handoverTaskOrder.getWarehouseName());
deliveTaskDO.setTaskType(7);
deliveTaskDO.setTaskDistribution(1);
deliveTaskDO.setTaskDistributionId(loginUser.getUserid());
deliveTaskDO.setTaskDistributionName(loginUser.getUsername());
deliveTaskDO.setTaskDistributionTime(new Date());
deliveTaskDO.setOperatorsBy(handoverTaskOrderDO.getOperatorsBy());
deliveTaskDO.setOperatorsName(handoverTaskOrderDO.getOperatorsName());
deliveTaskDO.setCreateBy(loginUser.getUserid());
deliveTaskDO.setCreateByName(loginUser.getUsername());
deliveTaskDO.setCreateTime(new Date());
deliveTaskDOList.add(deliveTaskDO);
}
}
/**
* @description 移位生成任务下发
* @author ZhouGY
* @date 2024/7/27 15:23
* @param shiftManagePOList
* @param shiftManageDO
*/
@Transactional(rollbackFor = Exception.class)
public void genDeliveTask(List<ShiftManagePO> shiftManagePOList, ShiftManageDO shiftManageDO){
LoginUser loginUser = SecurityUtils.getLoginUser();
List<DeliveTaskDO> deliveTaskDOList = new ArrayList<>();
for (ShiftManagePO shiftManagePO : shiftManagePOList){
DeliveTaskDO deliveTaskDO = new DeliveTaskDO();
deliveTaskDO.setOrganizationId(loginUser.getUserPo().getOrganizationId());
deliveTaskDO.setOrganizationName(loginUser.getUserPo().getOrganizationName());
deliveTaskDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
deliveTaskDO.setTaskNumber(OrderSequence.getOrderCode("RW"));
deliveTaskDO.setTrackingNumber(shiftManagePO.getShiftNumber());
deliveTaskDO.setWarehouseId(shiftManagePO.getWarehouseId());
deliveTaskDO.setWarehouseCode(shiftManagePO.getWarehouseCode());
deliveTaskDO.setWarehouseName(shiftManagePO.getWarehouseName());
deliveTaskDO.setTaskType(5);
deliveTaskDO.setTaskDistribution(1);
deliveTaskDO.setTaskDistributionId(loginUser.getUserid());
deliveTaskDO.setTaskDistributionName(loginUser.getUsername());
deliveTaskDO.setTaskDistributionTime(new Date());
deliveTaskDO.setOperatorsBy(shiftManageDO.getOperatorsBy());
deliveTaskDO.setOperatorsName(shiftManageDO.getOperatorsName());
deliveTaskDO.setCreateBy(loginUser.getUserid());
deliveTaskDO.setCreateByName(loginUser.getUsername());
deliveTaskDO.setCreateTime(new Date());
deliveTaskDOList.add(deliveTaskDO);
}
deliveTaskService.batchInsert(deliveTaskDOList);
}
} }
@@ -131,4 +131,12 @@ public class HandoverTaskOrderDTO extends BaseVOEntity {
@ApiModelProperty("交接作业单id") @ApiModelProperty("交接作业单id")
private List<Long> handoverTaskOrderIds; private List<Long> handoverTaskOrderIds;
@ApiModelProperty("作业人用户ID")
@Excel(name = "作业人用户ID")
private Long operatorsBy;
@ApiModelProperty("作业人姓名")
@Excel(name = "作业人姓名")
private String operatorsName;
} }
@@ -6,8 +6,10 @@ import com.mhd.common.core.web.page.TableDataInfo;
import com.mhd.wms.application.service.handoverTaskOrder.HandoverTaskOrderApplicationService; import com.mhd.wms.application.service.handoverTaskOrder.HandoverTaskOrderApplicationService;
import com.mhd.wms.domain.handoverTaskOrder.repository.po.HandoverTaskOrderPO; import com.mhd.wms.domain.handoverTaskOrder.repository.po.HandoverTaskOrderPO;
import com.mhd.wms.domain.handoverTaskOrder.repository.todo.HandoverTaskOrderDO; import com.mhd.wms.domain.handoverTaskOrder.repository.todo.HandoverTaskOrderDO;
import com.mhd.wms.domain.shiftManage.repository.todo.ShiftManageDO;
import com.mhd.wms.interfaces.assember.handoverTaskOrder.HandoverTaskOrderAssembler; import com.mhd.wms.interfaces.assember.handoverTaskOrder.HandoverTaskOrderAssembler;
import com.mhd.wms.interfaces.dto.handoverTaskOrder.HandoverTaskOrderDTO; import com.mhd.wms.interfaces.dto.handoverTaskOrder.HandoverTaskOrderDTO;
import com.mhd.wms.interfaces.dto.shiftManage.ShiftManageDTO;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -70,6 +72,16 @@ public class HandoverTaskOrderApi extends BaseController {
return toAjax(handoverTaskOrderApplicationService.delete(outTaskOrderIds)); return toAjax(handoverTaskOrderApplicationService.delete(outTaskOrderIds));
} }
/**
* 任务下发
*/
@ApiOperation("任务下发")
@PostMapping(value = "/taskDistribution")
public AjaxResult taskDistribution(@RequestBody HandoverTaskOrderDTO handoverTaskOrderDTO) {
HandoverTaskOrderDO handoverTaskOrderDO = handoverTaskOrderAssembler.toDO(handoverTaskOrderDTO);
return AjaxResult.success(handoverTaskOrderApplicationService.taskDistribution(handoverTaskOrderDO));
}
/** /**
* 获取交接作业单详细信息 * 获取交接作业单详细信息
*/ */