Bläddra i källkod

任务流转,任务接收

yzc 2 år sedan
förälder
incheckning
532ed16a29

+ 27 - 1
hx-mes/src/main/java/com/fjhx/mes/controller/production/ProductionTaskDetailController.java

@@ -33,6 +33,14 @@ public class ProductionTaskDetailController {
     }
 
     /**
+     * 生产任务明细分页
+     */
+    @PostMapping("/circulationPage")
+    public Page<ProductionTaskDetailVo> circulationPage(@RequestBody ProductionTaskDetailSelectDto dto) {
+        return productionTaskDetailService.circulationPage(dto);
+    }
+
+    /**
      * 生产任务流转
      */
     @PostMapping("/circulation")
@@ -41,13 +49,23 @@ public class ProductionTaskDetailController {
     }
 
     /**
-     * 生产任务完工入库
+     * 生产任务流转完工入库
      */
     @PostMapping("/productStorage")
     public void productStorage(@RequestBody ProductionTaskDetailDto productionTaskDetailDto) {
         productionTaskDetailService.productStorage(productionTaskDetailDto.getId());
     }
 
+
+
+    /**
+     * 生产任务接收分页
+     */
+    @PostMapping("/receivePage")
+    public Page<ProductionTaskDetailVo> receivePage(@RequestBody ProductionTaskDetailSelectDto dto) {
+        return productionTaskDetailService.receivePage(dto);
+    }
+
     /**
      * 生产任务接收
      */
@@ -56,4 +74,12 @@ public class ProductionTaskDetailController {
         productionTaskDetailService.receive(productionTaskDetailDto);
     }
 
+    /**
+     * 生产任务拒绝接收
+     */
+    @PostMapping("/rejection")
+    public void rejection(@RequestBody ProductionTaskDetailDto productionTaskDetailDto) {
+        productionTaskDetailService.rejection(productionTaskDetailDto);
+    }
+
 }

+ 4 - 3
hx-mes/src/main/java/com/fjhx/mes/entity/production/po/ProductionTaskDetail.java

@@ -1,17 +1,18 @@
 package com.fjhx.mes.entity.production.po;
 
-import com.ruoyi.common.core.domain.BasePo;
 import com.baomidou.mybatisplus.annotation.TableName;
-import java.util.Date;
+import com.ruoyi.common.core.domain.BasePo;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.Date;
+
 /**
  * <p>
  * 生产任务明细
  * </p>
  *
- * @author 
+ * @author
  * @since 2023-05-17
  */
 @Getter

+ 5 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/production/vo/ProductionTaskDetailVo.java

@@ -33,4 +33,9 @@ public class ProductionTaskDetailVo extends ProductionTaskDetail {
      */
     private String cumulativeTime;
 
+    /**
+     * 流转人名称
+     */
+    private String circulationUserName;
+
 }

+ 24 - 0
hx-mes/src/main/java/com/fjhx/mes/service/production/ProductionTaskDetailService.java

@@ -23,9 +23,33 @@ public interface ProductionTaskDetailService extends BaseService<ProductionTaskD
      */
     Page<ProductionTaskDetailVo> getPage(ProductionTaskDetailSelectDto dto);
 
+    /**
+     * 生产任务流转分页
+     */
+    Page<ProductionTaskDetailVo> circulationPage(ProductionTaskDetailSelectDto dto);
+
+    /**
+     * 生产任务流转
+     */
     void circulation(ProductionTaskDetailDto productionTaskDetailDto);
 
+    /**
+     * 生产任务流转入库
+     */
     void productStorage(Long id);
 
+    /**
+     * 生产任务接收分页
+     */
+    Page<ProductionTaskDetailVo> receivePage(ProductionTaskDetailSelectDto dto);
+
+    /**
+     * 生产任务接收
+     */
     void receive(ProductionTaskDetailDto productionTaskDetailDto);
+
+    /**
+     * 生产任务拒绝接收
+     */
+    void rejection(ProductionTaskDetailDto productionTaskDetailDto);
 }

+ 84 - 18
hx-mes/src/main/java/com/fjhx/mes/service/production/impl/ProductionTaskDetailServiceImpl.java

@@ -3,6 +3,7 @@ package com.fjhx.mes.service.production.impl;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.mes.entity.applicable.po.ApplicableProducts;
 import com.fjhx.mes.entity.production.dto.ProductionTaskDetailDto;
@@ -27,6 +28,7 @@ import com.fjhx.wms.service.stock.StockWaitService;
 import com.obs.services.internal.ServiceException;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.ruoyi.system.utils.UserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -74,11 +76,40 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
     @Override
     public Page<ProductionTaskDetailVo> getPage(ProductionTaskDetailSelectDto dto) {
         IWrapper<ProductionTaskDetail> wrapper = getWrapper();
+        return pageCom(wrapper, dto);
+    }
+
+    @Override
+    public Page<ProductionTaskDetailVo> circulationPage(ProductionTaskDetailSelectDto dto) {
+        IWrapper<ProductionTaskDetail> wrapper = getWrapper();
         //过滤负责人为自己的任务
         wrapper.eq(ProductionTaskDetail::getPersonLiableId, SecurityUtils.getUserId());
+        //过滤未在流转的记录
+        wrapper.eq(ProductionTaskDetail::getCirculationStatus,0);
+        //过滤未完成的记录
+        wrapper.eq(ProductionTaskDetail::getFinishStatus,0);
+        return pageCom(wrapper, dto);
+    }
+
+    /**
+     * 分页公共方法
+     */
+    Page<ProductionTaskDetailVo> pageCom(IWrapper<ProductionTaskDetail> wrapper, ProductionTaskDetailSelectDto dto) {
+        //关键字搜索
+        if (ObjectUtil.isNotEmpty(dto.getKeyword())){
+            List<Long> productIds = productInfoService.listObject(ProductInfo::getId, q -> q.like(ProductInfo::getName, dto.getKeyword()));
+            wrapper.and(q->q.in(ProductionTaskDetail::getProductId,productIds).or().like(ProductionTaskDetail::getProductSn,dto.getKeyword()));
+        }
+
         wrapper.orderByDesc("ptd", ProductionTaskDetail::getId);
         Page<ProductionTaskDetailVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<ProductionTaskDetailVo> records = page.getRecords();
+        if(ObjectUtil.isEmpty(records)){
+            return new Page<>();
+        }
+        //赋值流转人名称
+        UserUtil.assignmentNickName(records, ProductionTaskDetailVo::getCirculationUserId, ProductionTaskDetailVo::setCirculationUserName);
+
         //赋值产品名
         productInfoService.attributeAssign(records, ProductionTaskDetailVo::getProductId, (item, productInfo) -> {
             item.setProductName(productInfo.getName());
@@ -86,7 +117,8 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
         //赋值当前工序名 目标工序名
         List<Long> productionTaskIds = records.stream().map(ProductionTaskDetail::getProductionTaskId).collect(Collectors.toList());
         IWrapper<ProductionTaskDetail> wrapper1 = IWrapper.getWrapper();
-        wrapper1.in("pt",ProductionTaskDetail::getId,productionTaskIds);
+        wrapper1.in("pt", ProductionTaskDetail::getId, productionTaskIds);
+        wrapper1.groupBy("wo.id");
         List<WorkOrderVo> workOrderByProductionTask = baseMapper.getWorkOrderByProductionTask(wrapper1);
         Map<Long, WorkOrderVo> WorkOrderMap = workOrderByProductionTask.stream().collect(Collectors.toMap(WorkOrderVo::getProductionTaskId, Function.identity()));
         List<Long> workIds = workOrderByProductionTask.stream().map(WorkOrderVo::getId).collect(Collectors.toList());
@@ -103,13 +135,13 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
 
         for (ProductionTaskDetailVo record : records) {
             WorkOrderVo workOrderVo = WorkOrderMap.get(record.getProductionTaskId());
-            if("1".equals(workOrderVo.getIsCustomized())){
+            if ("1".equals(workOrderVo.getIsCustomized())) {
                 //如果是定制
                 String name = workOrderProductionPMap.get(record.getProductionProcessesId());
                 String nextName = workOrderProductionPMap.get(record.getNextProductionProcessesId());
                 record.setProductionProcessesName(name);
                 record.setNextProductionProcessesName(nextName);
-            }else{
+            } else {
                 //不是定制
                 String name = stringMap.get(record.getProductionProcessesId());
                 String nextName = stringMap.get(record.getNextProductionProcessesId());
@@ -117,6 +149,7 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
                 record.setNextProductionProcessesName(nextName);
             }
         }
+
         return page;
     }
 
@@ -162,19 +195,39 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
     }
 
     /**
-     * 任务流转接收
+     * 任务接收分页
+     */
+    @Override
+    public Page<ProductionTaskDetailVo> receivePage(ProductionTaskDetailSelectDto dto) {
+        IWrapper<ProductionTaskDetail> wrapper = getWrapper();
+        //过滤接收人为自己的任务
+        wrapper.eq(ProductionTaskDetail::getReceivedUserId, SecurityUtils.getUserId());
+        return pageCom(wrapper, dto);
+    }
+
+    /**
+     * 任务接收
      */
     @Override
     public void receive(ProductionTaskDetailDto productionTaskDetailDto) {
+        ProductionTaskDetail productionTaskDetail = getById(productionTaskDetailDto.getId());
+
         //修改流转状态
-        productionTaskDetailDto.setCirculationStatus(0);
+        productionTaskDetail.setCirculationStatus(0);
         //将下一工序赋值到当前工序
-        productionTaskDetailDto.setProductionProcessesId(productionTaskDetailDto.getNextProductionProcessesId());
+        productionTaskDetail.setProductionProcessesId(productionTaskDetail.getNextProductionProcessesId());
         //将负责人赋值为接收人id
-        productionTaskDetailDto.setPersonLiableId(SecurityUtils.getUserId());
+        productionTaskDetail.setPersonLiableId(SecurityUtils.getUserId());
+        //清空接收人
+        productionTaskDetail.setReceivedUserId(-1l);
+
+        //清空下一工序
+        productionTaskDetail.setNextProductionProcessesId(-1l);
 
-        //赋值下一工序相关信息
-        ProductionTask productionTask = productionTaskService.getById(productionTaskDetailDto.getProductionTaskId());
+
+
+        //查找下一工序相关信息 如果有则赋值
+        ProductionTask productionTask = productionTaskService.getById(productionTaskDetail.getProductionTaskId());
         ProductionPlan productionPlan = productionPlanService.getById(productionTask.getProductionPlanId());
         WorkOrder workOrder = workOrderService.getById(productionPlan.getWorkOrderId());
         if ("1".equals(workOrder.getIsCustomized())) {
@@ -188,12 +241,12 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
             //赋值下一工序id
             for (int i = 0; i < workOrderProductionProcesses.size(); i++) {
                 WorkOrderProductionProcesses wopp = workOrderProductionProcesses.get(i);
-                if (wopp.getId().equals(productionTaskDetailDto.getProductionProcessesId())) {
+                if (wopp.getId().equals(productionTaskDetail.getProductionProcessesId())) {
                     //默认赋值空 如果有下一节点赋值下一节点id
-                    productionTaskDetailDto.setNextProductionProcessesId(null);
                     if ((i + 1) < workOrderProductionProcesses.size()) {
                         WorkOrderProductionProcesses nextProductionProcesses = workOrderProductionProcesses.get(i + 1);
-                        productionTaskDetailDto.setNextProductionProcessesId(nextProductionProcesses.getId());
+                        productionTaskDetail.setNextProductionProcessesId(nextProductionProcesses.getId());
+                        break;
                     }
                 }
             }
@@ -213,24 +266,37 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
             String[] split = processRoute.split(",");
             //赋值下一工序id
             for (int i = 0; i < split.length; i++) {
-                if (split[i].equals(productionTaskDetailDto.getProductionProcessesId())) {
+                if (Long.parseLong(split[i])==productionTaskDetail.getProductionProcessesId()) {
                     //默认赋值空 如果有下一节点赋值下一节点id
-                    productionTaskDetailDto.setNextProductionProcessesId(null);
                     if ((i + 1) < split.length) {
-                        productionTaskDetailDto.setNextProductionProcessesId(Long.parseLong(split[i + 1]));
+                        productionTaskDetail.setNextProductionProcessesId(Long.parseLong(split[i + 1]));
+                        break;
                     }
                 }
             }
         }
 
-        this.updateById(productionTaskDetailDto);
+        this.updateById(productionTaskDetail);
 
         //创建任务明细记录
         ProductionTaskDetailRecord productionTaskDetailRecord = new ProductionTaskDetailRecord();
-        productionTaskDetailRecord.setProductionTaskDetailId(productionTaskDetailDto.getId());
-        productionTaskDetailRecord.setProductionProcessesId(productionTaskDetailDto.getProductionProcessesId());
+        productionTaskDetailRecord.setProductionTaskDetailId(productionTaskDetail.getId());
+        productionTaskDetailRecord.setProductionProcessesId(productionTaskDetail.getProductionProcessesId());
         productionTaskDetailRecord.setPersonLiableId(SecurityUtils.getUserId());
         productionTaskDetailRecordService.save(productionTaskDetailRecord);
     }
 
+    /**
+     * 任务接收拒绝
+     */
+    @Override
+    public void rejection(ProductionTaskDetailDto productionTaskDetailDto) {
+        //取消流转状态
+        productionTaskDetailDto.setCirculationStatus(0);
+        //将接收人赋值为空
+        productionTaskDetailDto.setReceivedUserId(-1l);
+        this.updateById(productionTaskDetailDto);
+    }
+
+
 }