|
@@ -1,23 +1,24 @@
|
|
|
package com.fjhx.mes.service.production.impl;
|
|
|
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
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.common.enums.PushBusinessTypeEnum;
|
|
|
import com.fjhx.common.utils.Assert;
|
|
|
+import com.fjhx.file.utils.ObsFileUtil;
|
|
|
import com.fjhx.item.entity.product.po.ProductInfo;
|
|
|
import com.fjhx.item.service.product.ProductInfoService;
|
|
|
import com.fjhx.mes.entity.production.dto.ProductionTaskDetailDto;
|
|
|
import com.fjhx.mes.entity.production.dto.ProductionTaskDetailSelectDto;
|
|
|
import com.fjhx.mes.entity.production.po.*;
|
|
|
+import com.fjhx.mes.entity.production.vo.ProductionTaskDetailRecordVo;
|
|
|
import com.fjhx.mes.entity.production.vo.ProductionTaskDetailVo;
|
|
|
import com.fjhx.mes.entity.work.po.WorkOrder;
|
|
|
import com.fjhx.mes.entity.work.po.WorkOrderProductionProcesses;
|
|
|
import com.fjhx.mes.entity.work.vo.WorkOrderVo;
|
|
|
import com.fjhx.mes.mapper.production.ProductionTaskDetailMapper;
|
|
|
-import com.fjhx.mes.service.applicable.ApplicableProductsService;
|
|
|
import com.fjhx.mes.service.production.*;
|
|
|
-import com.fjhx.mes.service.technology.TechnologyService;
|
|
|
import com.fjhx.mes.service.work.WorkOrderProductionProcessesService;
|
|
|
import com.fjhx.mes.service.work.WorkOrderService;
|
|
|
import com.fjhx.socket.core.PushTypeEnum;
|
|
@@ -36,10 +37,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Objects;
|
|
|
+import java.util.*;
|
|
|
import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -65,10 +63,6 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
|
|
|
@Autowired
|
|
|
private WorkOrderProductionProcessesService workOrderProductionProcessesService;
|
|
|
@Autowired
|
|
|
- private ApplicableProductsService applicableProductsService;
|
|
|
- @Autowired
|
|
|
- private TechnologyService technologyService;
|
|
|
- @Autowired
|
|
|
private StockWaitService stockWaitService;
|
|
|
@Autowired
|
|
|
private StockWaitDetailsService stockWaitDetailsService;
|
|
@@ -133,6 +127,7 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
|
|
|
//获取工序id列表
|
|
|
List<Long> productionProcessesIds = records.stream().map(ProductionTaskDetail::getProductionProcessesId).collect(Collectors.toList());
|
|
|
productionProcessesIds.addAll(records.stream().map(ProductionTaskDetail::getNextProductionProcessesId).collect(Collectors.toList()));
|
|
|
+ productionProcessesIds.addAll(records.stream().map(ProductionTaskDetail::getPreviousProcessesId).collect(Collectors.toList()));
|
|
|
//获取基本工序map
|
|
|
Map<Long, String> stringMap = productionProcessesService.mapKV(ProductionProcesses::getId, ProductionProcesses::getName,
|
|
|
q -> q.in(ProductionProcesses::getId, productionProcessesIds));
|
|
@@ -214,6 +209,9 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
|
|
|
productionTaskDetailRecord.setReceivedTime(productionTaskDetail.getReceivedTime());
|
|
|
productionTaskDetailRecordService.save(productionTaskDetailRecord);
|
|
|
|
|
|
+ //保存附件
|
|
|
+ ObsFileUtil.saveFile(productionTaskDetailDto.getFileList(),productionTaskDetailRecord.getId());
|
|
|
+
|
|
|
//推送消息给下一工序的用户有单可以抢了
|
|
|
Long nextProductionProcessesId = productionTaskDetail.getNextProductionProcessesId();
|
|
|
List<Long> userIds = productionTaskProcessesDetailService.listObject(ProductionTaskProcessesDetail::getUserId, q -> q
|
|
@@ -227,8 +225,8 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
|
|
|
* 完工入库
|
|
|
*/
|
|
|
@Override
|
|
|
- public void productStorage(Long id) {
|
|
|
- ProductionTaskDetail productionTaskDetail = getById(id);
|
|
|
+ public void productStorage(ProductionTaskDetailDto productionTaskDetailDto) {
|
|
|
+ ProductionTaskDetail productionTaskDetail = getById(productionTaskDetailDto.getId());
|
|
|
if (ObjectUtil.isEmpty(productionTaskDetail)) {
|
|
|
throw new ServiceException("未查询到任务明细信息");
|
|
|
}
|
|
@@ -247,6 +245,9 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
|
|
|
productionTaskDetailRecord.setReceivedTime(productionTaskDetail.getReceivedTime());
|
|
|
productionTaskDetailRecordService.save(productionTaskDetailRecord);
|
|
|
|
|
|
+ //保存附件
|
|
|
+ ObsFileUtil.saveFile(productionTaskDetailDto.getFileList(),productionTaskDetailRecord.getId());
|
|
|
+
|
|
|
StockWait stockWait = new StockWait();
|
|
|
stockWait.setType(1);//入库
|
|
|
stockWait.setStatus(0);//待入库
|
|
@@ -425,4 +426,46 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
|
|
|
return page;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 生产任务明细
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public ProductionTaskDetail detail(Long id) {
|
|
|
+ ProductionTaskDetail productionTaskDetail = this.getById(id);
|
|
|
+ ProductionTask productionTask = productionTaskService.getById(productionTaskDetail.getProductionTaskId());
|
|
|
+ ProductionPlan productionPlan = productionPlanService.getById(productionTask.getProductionPlanId());
|
|
|
+ WorkOrder workOrder = workOrderService.getById(productionPlan.getWorkOrderId());
|
|
|
+
|
|
|
+ List<Long> processesIds = Arrays.asList(productionTaskDetail.getPreviousProcessesId(),
|
|
|
+ productionTaskDetail.getProductionProcessesId(),
|
|
|
+ productionTaskDetail.getNextProductionProcessesId()
|
|
|
+ );
|
|
|
+
|
|
|
+ Map<Long,String> productionProcessesMap;
|
|
|
+ if (Objects.equals(workOrder.getIsCustomized(),1)){
|
|
|
+ //定制
|
|
|
+ productionProcessesMap = workOrderProductionProcessesService.mapKV(WorkOrderProductionProcesses::getId,
|
|
|
+ WorkOrderProductionProcesses::getName, q -> q.in(WorkOrderProductionProcesses::getId, processesIds));
|
|
|
+ }else {
|
|
|
+ //非定制
|
|
|
+ productionProcessesMap = productionProcessesService.mapKV(ProductionProcesses::getId, ProductionProcesses::getName,
|
|
|
+ q -> q.in(ProductionProcesses::getId, processesIds));
|
|
|
+ }
|
|
|
+
|
|
|
+ ProductionTaskDetailVo productionTaskDetailVo = BeanUtil.copyProperties(productionTaskDetail, ProductionTaskDetailVo.class);
|
|
|
+
|
|
|
+ productionTaskDetailVo.setProductionProcessesName(productionProcessesMap.get(productionTaskDetail.getProductionProcessesId()));
|
|
|
+ productionTaskDetailVo.setNextProductionProcessesName(productionProcessesMap.get(productionTaskDetail.getNextProductionProcessesId()));
|
|
|
+ productionTaskDetailVo.setPreviousProcessesName(productionProcessesMap.get(productionTaskDetail.getPreviousProcessesId()));
|
|
|
+
|
|
|
+ List<ProductionTaskDetailRecord> productionTaskDetailRecordList = productionTaskDetailRecordService.list(q -> q
|
|
|
+ .eq(ProductionTaskDetailRecord::getProductionTaskDetailId, id)
|
|
|
+ .orderByDesc(ProductionTaskDetailRecord::getCreateTime)
|
|
|
+ );
|
|
|
+ List<ProductionTaskDetailRecordVo> productionTaskDetailRecordVos = BeanUtil.copyToList(productionTaskDetailRecordList, ProductionTaskDetailRecordVo.class);
|
|
|
+ productionTaskDetailVo.setProductionTaskDetailRecordList(productionTaskDetailRecordVos);
|
|
|
+
|
|
|
+ return productionTaskDetailVo;
|
|
|
+ }
|
|
|
+
|
|
|
}
|