|
@@ -26,16 +26,22 @@ 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.task.po.TaskProgress;
|
|
|
import com.fjhx.mes.entity.technology.po.Technology;
|
|
|
+import com.fjhx.mes.entity.technology.po.TechnologyProcessLine;
|
|
|
import com.fjhx.mes.entity.work.po.WorkOrder;
|
|
|
import com.fjhx.mes.entity.work.po.WorkOrderBom;
|
|
|
+import com.fjhx.mes.entity.work.po.WorkOrderProcessLine;
|
|
|
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.task.TaskProgressService;
|
|
|
+import com.fjhx.mes.service.technology.TechnologyProcessLineService;
|
|
|
import com.fjhx.mes.service.technology.TechnologyService;
|
|
|
import com.fjhx.mes.service.work.WorkOrderBomService;
|
|
|
+import com.fjhx.mes.service.work.WorkOrderProcessLineService;
|
|
|
import com.fjhx.mes.service.work.WorkOrderProductionProcessesService;
|
|
|
import com.fjhx.mes.service.work.WorkOrderService;
|
|
|
import com.fjhx.socket.core.PushTypeEnum;
|
|
@@ -55,6 +61,7 @@ import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
|
import com.ruoyi.common.utils.wrapper.SqlField;
|
|
|
import com.ruoyi.system.utils.UserUtil;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.factory.annotation.Qualifier;
|
|
|
import org.springframework.context.event.EventListener;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
@@ -103,6 +110,12 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
|
|
|
private CustomerService customerService;
|
|
|
@Autowired
|
|
|
private WorkOrderBomService workOrderBomService;
|
|
|
+ @Autowired
|
|
|
+ private TaskProgressService taskProgressService;
|
|
|
+ @Autowired
|
|
|
+ private WorkOrderProcessLineService workOrderProcessLineService;
|
|
|
+ @Autowired
|
|
|
+ private TechnologyProcessLineService technologyProcessLineService;
|
|
|
|
|
|
@Override
|
|
|
public Page<ProductionTaskDetailVo> getPage(ProductionTaskDetailSelectDto dto) {
|
|
@@ -114,9 +127,11 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
|
|
|
public Page<ProductionTaskDetailVo> circulationPage(ProductionTaskDetailSelectDto dto) {
|
|
|
IWrapper<ProductionTaskDetail> wrapper = getWrapper();
|
|
|
//过滤负责人为自己的任务
|
|
|
- wrapper.eq("ptd", ProductionTaskDetail::getPersonLiableId, SecurityUtils.getUserId());
|
|
|
- //过滤未在流转的记录
|
|
|
- wrapper.eq("ptd", ProductionTaskDetail::getCirculationStatus, 0);
|
|
|
+ wrapper.eq("tp.person_liable_id", SecurityUtils.getUserId());
|
|
|
+ //过滤进行中的数据
|
|
|
+ wrapper.eq("tp.status",1);
|
|
|
+// //过滤未在流转的记录
|
|
|
+// wrapper.eq("ptd", ProductionTaskDetail::getCirculationStatus, 0);
|
|
|
//过滤未完成的记录
|
|
|
wrapper.eq("ptd", ProductionTaskDetail::getFinishStatus, 0);
|
|
|
return pageCom(wrapper, dto);
|
|
@@ -133,14 +148,14 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
|
|
|
}
|
|
|
|
|
|
wrapper.orderByDesc("ptd", ProductionTaskDetail::getId);
|
|
|
- wrapper.groupBy("ptd.id");
|
|
|
+// wrapper.groupBy("ptd.id");
|
|
|
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);
|
|
|
+// UserUtil.assignmentNickName(records, ProductionTaskDetailVo::getCirculationUserId, ProductionTaskDetailVo::setCirculationUserName);
|
|
|
|
|
|
//赋值产品名
|
|
|
productInfoService.attributeAssign(records, ProductionTaskDetailVo::getProductId, (item, productInfo) -> {
|
|
@@ -157,10 +172,10 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
|
|
|
List<Long> workIds = workOrderByProductionTask.stream().map(WorkOrderVo::getId).collect(Collectors.toList());
|
|
|
|
|
|
//获取工序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
|
|
|
+ List<Long> productionProcessesIds = records.stream().map(ProductionTaskDetailVo::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));
|
|
|
//获取定制工序map
|
|
@@ -172,19 +187,19 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
|
|
|
if ("1".equals(workOrderVo.getIsCustomized())) {
|
|
|
//如果是定制
|
|
|
String name = workOrderProductionPMap.get(record.getProductionProcessesId());
|
|
|
- String nextName = workOrderProductionPMap.get(record.getNextProductionProcessesId());
|
|
|
- String previousName = workOrderProductionPMap.get(record.getPreviousProcessesId());
|
|
|
+// String nextName = workOrderProductionPMap.get(record.getNextProductionProcessesId());
|
|
|
+// String previousName = workOrderProductionPMap.get(record.getPreviousProcessesId());
|
|
|
record.setProductionProcessesName(name);
|
|
|
- record.setNextProductionProcessesName(nextName);
|
|
|
- record.setPreviousProcessesName(previousName);
|
|
|
+// record.setNextProductionProcessesName(nextName);
|
|
|
+// record.setPreviousProcessesName(previousName);
|
|
|
} else {
|
|
|
//不是定制
|
|
|
String name = stringMap.get(record.getProductionProcessesId());
|
|
|
- String nextName = stringMap.get(record.getNextProductionProcessesId());
|
|
|
- String previousName = stringMap.get(record.getPreviousProcessesId());
|
|
|
+// String nextName = stringMap.get(record.getNextProductionProcessesId());
|
|
|
+// String previousName = stringMap.get(record.getPreviousProcessesId());
|
|
|
record.setProductionProcessesName(name);
|
|
|
- record.setNextProductionProcessesName(nextName);
|
|
|
- record.setPreviousProcessesName(previousName);
|
|
|
+// record.setNextProductionProcessesName(nextName);
|
|
|
+// record.setPreviousProcessesName(previousName);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -203,52 +218,156 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
|
|
|
public synchronized void circulation(ProductionTaskDetailDto dto) {
|
|
|
ProductionTaskDetail productionTaskDetail = this.getById(dto.getId());
|
|
|
|
|
|
- if (Objects.equals(productionTaskDetail.getCirculationStatus(), 1)) {
|
|
|
+ Long taskProgressId = dto.getTaskProgressId();
|
|
|
+ TaskProgress taskProgress = taskProgressService.getById(taskProgressId);
|
|
|
+
|
|
|
+ if (Objects.equals(taskProgress.getStatus(), 2)) {
|
|
|
throw new ServiceException("该任务已被提交,请重试或刷新!");
|
|
|
}
|
|
|
|
|
|
+ //修改状态为已完成
|
|
|
+ taskProgress.setStatus(2);
|
|
|
+ taskProgressService.updateById(taskProgress);
|
|
|
+
|
|
|
//创建任务明细记录
|
|
|
ProductionTaskDetailRecord productionTaskDetailRecord = new ProductionTaskDetailRecord();
|
|
|
productionTaskDetailRecord.setProductionTaskDetailId(productionTaskDetail.getId());
|
|
|
- productionTaskDetailRecord.setProductionProcessesId(productionTaskDetail.getProductionProcessesId());
|
|
|
+ productionTaskDetailRecord.setProductionProcessesId(taskProgress.getProcessesId());
|
|
|
productionTaskDetailRecord.setPersonLiableId(SecurityUtils.getUserId());
|
|
|
- productionTaskDetailRecord.setReceivedTime(productionTaskDetail.getReceivedTime());
|
|
|
+ productionTaskDetailRecord.setReceivedTime(taskProgress.getReceivedTime());
|
|
|
productionTaskDetailRecordService.save(productionTaskDetailRecord);
|
|
|
|
|
|
- //修改流转状态
|
|
|
- productionTaskDetail.setCirculationStatus(1);
|
|
|
- //赋值流转人id
|
|
|
- productionTaskDetail.setCirculationUserId(SecurityUtils.getUserId());
|
|
|
-
|
|
|
- //赋值上一道工序 为当前工序
|
|
|
- productionTaskDetail.setPreviousProcessesId(productionTaskDetail.getProductionProcessesId());
|
|
|
-
|
|
|
- //将下一工序赋值到当前工序
|
|
|
- productionTaskDetail.setProductionProcessesId(productionTaskDetail.getNextProductionProcessesId());
|
|
|
- //清空下一工序
|
|
|
- productionTaskDetail.setNextProductionProcessesId(-1l);
|
|
|
- //查找下一工序相关信息 如果有则赋值
|
|
|
- ProductionTask productionTask = productionTaskService.getById(productionTaskDetail.getProductionTaskId());
|
|
|
- ProductionPlan productionPlan = productionPlanService.getById(productionTask.getProductionPlanId());
|
|
|
- WorkOrder workOrder = workOrderService.getById(productionPlan.getWorkOrderId());
|
|
|
- List<WorkOrderProductionProcesses> productionProcessesList = workOrderService.getProductionProcessesList(workOrder);
|
|
|
- //赋值下一工序id
|
|
|
- for (int i = 0; i < productionProcessesList.size(); i++) {
|
|
|
- WorkOrderProductionProcesses wopp = productionProcessesList.get(i);
|
|
|
- if (wopp.getId().equals(productionTaskDetail.getProductionProcessesId())) {
|
|
|
- //默认赋值空 如果有下一节点赋值下一节点id
|
|
|
- if ((i + 1) < productionProcessesList.size()) {
|
|
|
- WorkOrderProductionProcesses nextProductionProcesses = productionProcessesList.get(i + 1);
|
|
|
- productionTaskDetail.setNextProductionProcessesId(nextProductionProcesses.getId());
|
|
|
- break;
|
|
|
+ //检查下一工序信息
|
|
|
+ List<Long> nextProcessIdList = new ArrayList<>();
|
|
|
+ Long workOrderId = productionTaskDetail.getWorkOrderId();
|
|
|
+ WorkOrder workOrder = workOrderService.getById(workOrderId);
|
|
|
+ if(Objects.equals(workOrder.getIsCustomized(),"1")){
|
|
|
+ //定制
|
|
|
+
|
|
|
+ //获取父节点id
|
|
|
+ List<Long> longs = workOrderProcessLineService.listObject(WorkOrderProcessLine::getSourceProcessesId, q -> q
|
|
|
+ .eq(WorkOrderProcessLine::getWorkOrderId, workOrderId)
|
|
|
+ .eq(WorkOrderProcessLine::getTargetProcessesId, taskProgress.getProcessesId())
|
|
|
+ );
|
|
|
+ //获取同级节点
|
|
|
+ List<Long> longs1 = workOrderProcessLineService.listObject(WorkOrderProcessLine::getTargetProcessesId, q -> q
|
|
|
+ .eq(WorkOrderProcessLine::getWorkOrderId, workOrderId)
|
|
|
+ .in(WorkOrderProcessLine::getSourceProcessesId, longs)
|
|
|
+ );
|
|
|
+ //检查同级节点是否完成
|
|
|
+ long count = taskProgressService.count(q -> q
|
|
|
+ .eq(TaskProgress::getProductionTaskDetailId, dto.getId())
|
|
|
+ .in(TaskProgress::getProcessesId, longs1)
|
|
|
+ .ne(TaskProgress::getStatus, 2)
|
|
|
+ );
|
|
|
+ if(count==0){
|
|
|
+ //统计节点已经完成,生成下级节点的任务
|
|
|
+ List<Long> longs2 = workOrderProcessLineService.listObject(WorkOrderProcessLine::getTargetProcessesId, q -> q
|
|
|
+ .eq(WorkOrderProcessLine::getWorkOrderId, workOrderId)
|
|
|
+ .eq(WorkOrderProcessLine::getSourceProcessesId, taskProgress.getProcessesId())
|
|
|
+ .ne(WorkOrderProcessLine::getTargetProcessesId, 99)
|
|
|
+ );
|
|
|
+ if(ObjectUtil.isEmpty(longs2)){
|
|
|
+ //完工入库
|
|
|
+ productStorage(dto);
|
|
|
+ }else{
|
|
|
+ //生成下一节点任务信息
|
|
|
+ List<TaskProgress> taskProgressList = new ArrayList<>();
|
|
|
+ for (Long aLong : longs2) {
|
|
|
+ TaskProgress taskProgress1 = new TaskProgress();
|
|
|
+ taskProgress1.setProductionTaskDetailId(productionTaskDetail.getId());
|
|
|
+ taskProgress1.setProcessesId(aLong);
|
|
|
+ taskProgress1.setStatus(0);
|
|
|
+ taskProgressList.add(taskProgress1);
|
|
|
+ nextProcessIdList.add(aLong);
|
|
|
+ }
|
|
|
+ taskProgressService.saveBatch(taskProgressList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ //非定制
|
|
|
+ ApplicableProducts applicableProducts = applicableProductsService.getOne(q -> q
|
|
|
+ .eq(ApplicableProducts::getProductId, productionTaskDetail.getProductId())
|
|
|
+ );
|
|
|
+ Long technologyId = applicableProducts.getTechnologyId();
|
|
|
+
|
|
|
+ //获取父节点id
|
|
|
+ List<Long> longs = technologyProcessLineService.listObject(TechnologyProcessLine::getSourceProcessesId, q -> q
|
|
|
+ .eq(TechnologyProcessLine::getTechnologyId, technologyId)
|
|
|
+ .eq(TechnologyProcessLine::getTargetProcessesId, taskProgress.getProcessesId())
|
|
|
+ );
|
|
|
+ //获取同级节点
|
|
|
+ List<Long> longs1 = technologyProcessLineService.listObject(TechnologyProcessLine::getTargetProcessesId, q -> q
|
|
|
+ .eq(TechnologyProcessLine::getTechnologyId, technologyId)
|
|
|
+ .in(TechnologyProcessLine::getSourceProcessesId, longs)
|
|
|
+ );
|
|
|
+ //检查同级节点是否完成
|
|
|
+ long count = taskProgressService.count(q -> q
|
|
|
+ .eq(TaskProgress::getProductionTaskDetailId, dto.getId())
|
|
|
+ .in(TaskProgress::getProcessesId, longs1)
|
|
|
+ .ne(TaskProgress::getStatus, 2)
|
|
|
+ );
|
|
|
+ if(count==0){
|
|
|
+ //统计节点已经完成,生成下级节点的任务
|
|
|
+ List<Long> longs2 = technologyProcessLineService.listObject(TechnologyProcessLine::getTargetProcessesId, q -> q
|
|
|
+ .eq(TechnologyProcessLine::getTechnologyId, technologyId)
|
|
|
+ .eq(TechnologyProcessLine::getSourceProcessesId, taskProgress.getProcessesId())
|
|
|
+ .ne(TechnologyProcessLine::getTargetProcessesId, 99)
|
|
|
+ );
|
|
|
+ if(ObjectUtil.isEmpty(longs2)){
|
|
|
+ //完工入库
|
|
|
+ productStorage(dto);
|
|
|
+ }else{
|
|
|
+ //生成下一节点任务信息
|
|
|
+ List<TaskProgress> taskProgressList = new ArrayList<>();
|
|
|
+ for (Long aLong : longs2) {
|
|
|
+ TaskProgress taskProgress1 = new TaskProgress();
|
|
|
+ taskProgress1.setProductionTaskDetailId(productionTaskDetail.getId());
|
|
|
+ taskProgress1.setProcessesId(aLong);
|
|
|
+ taskProgress1.setStatus(0);
|
|
|
+ taskProgressList.add(taskProgress1);
|
|
|
+ nextProcessIdList.add(aLong);
|
|
|
+ }
|
|
|
+ taskProgressService.saveBatch(taskProgressList);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- //设置当前工序状态未开始
|
|
|
- productionTaskDetail.setProcessesStatus(0);
|
|
|
- //清空负责人
|
|
|
- productionTaskDetail.setPersonLiableId(-1L);
|
|
|
+
|
|
|
+// //修改流转状态
|
|
|
+// productionTaskDetail.setCirculationStatus(1);
|
|
|
+// //赋值流转人id
|
|
|
+// productionTaskDetail.setCirculationUserId(SecurityUtils.getUserId());
|
|
|
+//
|
|
|
+// //赋值上一道工序 为当前工序
|
|
|
+// productionTaskDetail.setPreviousProcessesId(productionTaskDetail.getProductionProcessesId());
|
|
|
+//
|
|
|
+// //将下一工序赋值到当前工序
|
|
|
+// productionTaskDetail.setProductionProcessesId(productionTaskDetail.getNextProductionProcessesId());
|
|
|
+// //清空下一工序
|
|
|
+// productionTaskDetail.setNextProductionProcessesId(-1l);
|
|
|
+// //查找下一工序相关信息 如果有则赋值
|
|
|
+// ProductionTask productionTask = productionTaskService.getById(productionTaskDetail.getProductionTaskId());
|
|
|
+// ProductionPlan productionPlan = productionPlanService.getById(productionTask.getProductionPlanId());
|
|
|
+// WorkOrder workOrder = workOrderService.getById(productionPlan.getWorkOrderId());
|
|
|
+// List<WorkOrderProductionProcesses> productionProcessesList = workOrderService.getProductionProcessesList(workOrder);
|
|
|
+// //赋值下一工序id
|
|
|
+// for (int i = 0; i < productionProcessesList.size(); i++) {
|
|
|
+// WorkOrderProductionProcesses wopp = productionProcessesList.get(i);
|
|
|
+// if (wopp.getId().equals(productionTaskDetail.getProductionProcessesId())) {
|
|
|
+// //默认赋值空 如果有下一节点赋值下一节点id
|
|
|
+// if ((i + 1) < productionProcessesList.size()) {
|
|
|
+// WorkOrderProductionProcesses nextProductionProcesses = productionProcessesList.get(i + 1);
|
|
|
+// productionTaskDetail.setNextProductionProcessesId(nextProductionProcesses.getId());
|
|
|
+// break;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// //设置当前工序状态未开始
|
|
|
+// productionTaskDetail.setProcessesStatus(0);
|
|
|
+// //清空负责人
|
|
|
+// productionTaskDetail.setPersonLiableId(-1L);
|
|
|
|
|
|
this.updateById(productionTaskDetail);
|
|
|
|
|
@@ -256,12 +375,14 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
|
|
|
ObsFileUtil.saveFile(dto.getFileList(), productionTaskDetailRecord.getId());
|
|
|
|
|
|
//推送消息给下一工序的用户有单可以抢了
|
|
|
- Long nextProductionProcessesId = productionTaskDetail.getNextProductionProcessesId();
|
|
|
- List<Long> userIds = productionTaskProcessesDetailService.listObject(ProductionTaskProcessesDetail::getUserId, q -> q
|
|
|
- .eq(ProductionTaskProcessesDetail::getProductionProcessesId, nextProductionProcessesId)
|
|
|
- .eq(ProductionTaskProcessesDetail::getProductionTaskId, productionTaskDetail.getProductionTaskId())
|
|
|
- );
|
|
|
- WebSocketPush.byUsers(PushTypeEnum.MESSAGE, userIds, "您有新的任务可接收!", PushBusinessTypeEnum.NEW_TASK.getType());
|
|
|
+ if(ObjectUtil.isNotEmpty(nextProcessIdList)) {
|
|
|
+// Long nextProductionProcessesId = productionTaskDetail.getNextProductionProcessesId();
|
|
|
+ List<Long> userIds = productionTaskProcessesDetailService.listObject(ProductionTaskProcessesDetail::getUserId, q -> q
|
|
|
+ .in(ProductionTaskProcessesDetail::getProductionProcessesId, nextProcessIdList)
|
|
|
+ .eq(ProductionTaskProcessesDetail::getProductionTaskId, productionTaskDetail.getProductionTaskId())
|
|
|
+ );
|
|
|
+ WebSocketPush.byUsers(PushTypeEnum.MESSAGE, userIds, "您有新的任务可接收!", PushBusinessTypeEnum.NEW_TASK.getType());
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -269,12 +390,15 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
|
|
|
*/
|
|
|
@Override
|
|
|
@DSTransactional
|
|
|
- public synchronized void productStorage(ProductionTaskDetailDto productionTaskDetailDto) {
|
|
|
- ProductionTaskDetail productionTaskDetail = getById(productionTaskDetailDto.getId());
|
|
|
+ public synchronized void productStorage(ProductionTaskDetailDto dto) {
|
|
|
+ ProductionTaskDetail productionTaskDetail = getById(dto.getId());
|
|
|
if (ObjectUtil.isEmpty(productionTaskDetail)) {
|
|
|
throw new ServiceException("未查询到任务明细信息");
|
|
|
}
|
|
|
|
|
|
+ Long taskProgressId = dto.getTaskProgressId();
|
|
|
+ TaskProgress taskProgress = taskProgressService.getById(taskProgressId);
|
|
|
+
|
|
|
if (Objects.equals(productionTaskDetail.getFinishStatus(), 1)) {
|
|
|
throw new ServiceException("该任务已完工入库,请重试或刷新!");
|
|
|
}
|
|
@@ -282,16 +406,18 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
|
|
|
//创建任务明细记录
|
|
|
ProductionTaskDetailRecord productionTaskDetailRecord = new ProductionTaskDetailRecord();
|
|
|
productionTaskDetailRecord.setProductionTaskDetailId(productionTaskDetail.getId());
|
|
|
- productionTaskDetailRecord.setProductionProcessesId(productionTaskDetail.getProductionProcessesId());
|
|
|
+ productionTaskDetailRecord.setProductionProcessesId(taskProgress.getProcessesId());
|
|
|
productionTaskDetailRecord.setPersonLiableId(SecurityUtils.getUserId());
|
|
|
- productionTaskDetailRecord.setReceivedTime(productionTaskDetail.getReceivedTime());
|
|
|
+ productionTaskDetailRecord.setReceivedTime(taskProgress.getReceivedTime());
|
|
|
productionTaskDetailRecordService.save(productionTaskDetailRecord);
|
|
|
|
|
|
productionTaskDetail.setFinishStatus(1);//标记为完成
|
|
|
productionTaskDetail.setFinishTime(new Date());//记录完成时间
|
|
|
|
|
|
//设置当前工序状态完成
|
|
|
- productionTaskDetail.setProcessesStatus(3);
|
|
|
+// productionTaskDetail.setProcessesStatus(3);
|
|
|
+ taskProgress.setStatus(2);
|
|
|
+ taskProgressService.updateById(taskProgress);
|
|
|
|
|
|
//修改状态未入库中
|
|
|
productionTaskDetail.setStockStatus(TaskDetailsStockStatus.IN_STOCK_ING.getDetailType());
|
|
@@ -299,7 +425,7 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
|
|
|
this.updateById(productionTaskDetail);
|
|
|
|
|
|
//保存附件
|
|
|
- ObsFileUtil.saveFile(productionTaskDetailDto.getFileList(), productionTaskDetailRecord.getId());
|
|
|
+ ObsFileUtil.saveFile(dto.getFileList(), productionTaskDetailRecord.getId());
|
|
|
|
|
|
StockWait stockWait = new StockWait();
|
|
|
stockWait.setType(1);//入库
|
|
@@ -331,8 +457,10 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
|
|
|
|
|
|
//过滤工序用户列表里有自己的数据
|
|
|
wrapper.eq("ptpd.user_id", SecurityUtils.getUserId());
|
|
|
+ //过滤未开始的数据
|
|
|
+ wrapper.eq("tp.status",0);
|
|
|
//过滤正在流转中的数据
|
|
|
- wrapper.eq("ptd", ProductionTaskDetail::getCirculationStatus, 1);
|
|
|
+// wrapper.eq("ptd", ProductionTaskDetail::getCirculationStatus, 1);
|
|
|
//过滤未完工的数据
|
|
|
wrapper.eq("ptd", ProductionTaskDetail::getFinishStatus, 0);
|
|
|
|
|
@@ -345,23 +473,30 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
|
|
|
@Override
|
|
|
@DSTransactional
|
|
|
public void receive(ProductionTaskDetailDto dto) {
|
|
|
- ProductionTaskDetail productionTaskDetail = getById(dto.getId());
|
|
|
+// ProductionTaskDetail productionTaskDetail = getById(dto.getId());
|
|
|
|
|
|
- if (Objects.equals(0, productionTaskDetail.getCirculationStatus())) {
|
|
|
+ TaskProgress taskProgress = taskProgressService.getById(dto.getTaskProgressId());
|
|
|
+
|
|
|
+ if (!Objects.equals(0, taskProgress.getStatus())) {
|
|
|
throw new ServiceException("该任务已被他人接收,接收失败");
|
|
|
}
|
|
|
|
|
|
- //修改流转状态
|
|
|
- productionTaskDetail.setCirculationStatus(0);
|
|
|
- //将负责人赋值为自己
|
|
|
- productionTaskDetail.setPersonLiableId(SecurityUtils.getUserId());
|
|
|
- //赋值接收时间
|
|
|
- productionTaskDetail.setReceivedTime(new Date());
|
|
|
+ taskProgress.setStatus(1);
|
|
|
+ taskProgress.setReceivedTime(new Date());
|
|
|
+ taskProgress.setPersonLiableId(SecurityUtils.getUserId());
|
|
|
+ taskProgressService.updateById(taskProgress);
|
|
|
+//
|
|
|
+// //修改流转状态
|
|
|
+// productionTaskDetail.setCirculationStatus(0);
|
|
|
+// //将负责人赋值为自己
|
|
|
+// productionTaskDetail.setPersonLiableId(SecurityUtils.getUserId());
|
|
|
+// //赋值接收时间
|
|
|
+// productionTaskDetail.setReceivedTime(new Date());
|
|
|
|
|
|
//设置当前工序状态进行中
|
|
|
- productionTaskDetail.setProcessesStatus(1);
|
|
|
+// productionTaskDetail.setProcessesStatus(1);
|
|
|
|
|
|
- this.updateById(productionTaskDetail);
|
|
|
+// this.updateById(productionTaskDetail);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -370,41 +505,42 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
|
|
|
@Override
|
|
|
@DSTransactional
|
|
|
public void rejection(ProductionTaskDetailDto productionTaskDetailDto) {
|
|
|
- ProductionTaskDetail productionTaskDetail = this.getById(productionTaskDetailDto.getId());
|
|
|
- //取消流转状态
|
|
|
- productionTaskDetail.setCirculationStatus(0);
|
|
|
-
|
|
|
- //回滚工序信息
|
|
|
- productionTaskDetail.setNextProductionProcessesId(productionTaskDetail.getProductionProcessesId());
|
|
|
- productionTaskDetail.setProductionProcessesId(productionTaskDetail.getPreviousProcessesId());
|
|
|
-
|
|
|
- //清空上一工序
|
|
|
- productionTaskDetail.setPreviousProcessesId(-1l);
|
|
|
- //查找下一工序相关信息 如果有则赋值
|
|
|
- ProductionTask productionTask = productionTaskService.getById(productionTaskDetail.getProductionTaskId());
|
|
|
- ProductionPlan productionPlan = productionPlanService.getById(productionTask.getProductionPlanId());
|
|
|
- WorkOrder workOrder = workOrderService.getById(productionPlan.getWorkOrderId());
|
|
|
- List<WorkOrderProductionProcesses> productionProcessesList = workOrderService.getProductionProcessesList(workOrder);
|
|
|
- //赋值上一工序id
|
|
|
- for (int i = 0; i < productionProcessesList.size(); i++) {
|
|
|
- WorkOrderProductionProcesses wopp = productionProcessesList.get(i);
|
|
|
- if (wopp.getId().equals(productionTaskDetail.getProductionProcessesId())) {
|
|
|
- //默认赋值空 如果有下一节点赋值下一节点id
|
|
|
- if ((i - 1) >= 0) {
|
|
|
- WorkOrderProductionProcesses nextProductionProcesses = productionProcessesList.get(i - 1);
|
|
|
- productionTaskDetail.setPreviousProcessesId(nextProductionProcesses.getId());
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- //设置当前工序状态驳回
|
|
|
- productionTaskDetail.setProcessesStatus(2);
|
|
|
-
|
|
|
- //回滚负责人信息
|
|
|
- productionTaskDetail.setPersonLiableId(productionTaskDetail.getCirculationUserId());
|
|
|
-
|
|
|
- this.updateById(productionTaskDetail);
|
|
|
+ throw new ServiceException("功能异常请联系管理员");
|
|
|
+// ProductionTaskDetail productionTaskDetail = this.getById(productionTaskDetailDto.getId());
|
|
|
+// //取消流转状态
|
|
|
+// productionTaskDetail.setCirculationStatus(0);
|
|
|
+//
|
|
|
+// //回滚工序信息
|
|
|
+// productionTaskDetail.setNextProductionProcessesId(productionTaskDetail.getProductionProcessesId());
|
|
|
+// productionTaskDetail.setProductionProcessesId(productionTaskDetail.getPreviousProcessesId());
|
|
|
+//
|
|
|
+// //清空上一工序
|
|
|
+// productionTaskDetail.setPreviousProcessesId(-1l);
|
|
|
+// //查找下一工序相关信息 如果有则赋值
|
|
|
+// ProductionTask productionTask = productionTaskService.getById(productionTaskDetail.getProductionTaskId());
|
|
|
+// ProductionPlan productionPlan = productionPlanService.getById(productionTask.getProductionPlanId());
|
|
|
+// WorkOrder workOrder = workOrderService.getById(productionPlan.getWorkOrderId());
|
|
|
+// List<WorkOrderProductionProcesses> productionProcessesList = workOrderService.getProductionProcessesList(workOrder);
|
|
|
+// //赋值上一工序id
|
|
|
+// for (int i = 0; i < productionProcessesList.size(); i++) {
|
|
|
+// WorkOrderProductionProcesses wopp = productionProcessesList.get(i);
|
|
|
+// if (wopp.getId().equals(productionTaskDetail.getProductionProcessesId())) {
|
|
|
+// //默认赋值空 如果有下一节点赋值下一节点id
|
|
|
+// if ((i - 1) >= 0) {
|
|
|
+// WorkOrderProductionProcesses nextProductionProcesses = productionProcessesList.get(i - 1);
|
|
|
+// productionTaskDetail.setPreviousProcessesId(nextProductionProcesses.getId());
|
|
|
+// break;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// //设置当前工序状态驳回
|
|
|
+// productionTaskDetail.setProcessesStatus(2);
|
|
|
+//
|
|
|
+// //回滚负责人信息
|
|
|
+// productionTaskDetail.setPersonLiableId(productionTaskDetail.getCirculationUserId());
|
|
|
+//
|
|
|
+// this.updateById(productionTaskDetail);
|
|
|
}
|
|
|
|
|
|
|
|
@@ -475,12 +611,17 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
|
|
|
@Override
|
|
|
public Long haveTaskCount(ProductionTaskDetailDto dto) {
|
|
|
//获取负责人为当前用户 工序为某一工序 未在流转(进行中) 未完成 的任务计数
|
|
|
- return this.count(q -> q
|
|
|
- .eq(ProductionTaskDetail::getPersonLiableId, SecurityUtils.getUserId())
|
|
|
- .eq(ObjectUtil.isNotEmpty(dto.getProductionProcessesId()), ProductionTaskDetail::getProductionProcessesId, dto.getProductionProcessesId())
|
|
|
- .eq(ProductionTaskDetail::getCirculationStatus, 0)
|
|
|
- .eq(ProductionTaskDetail::getFinishStatus, 0)
|
|
|
+ return taskProgressService.count(q->q
|
|
|
+ .eq(TaskProgress::getPersonLiableId, SecurityUtils.getUserId())
|
|
|
+ .eq(ObjectUtil.isNotEmpty(dto.getProductionProcessesId()), TaskProgress::getProcessesId, dto.getProductionProcessesId())
|
|
|
+ .eq(TaskProgress::getStatus, 1)
|
|
|
);
|
|
|
+// return this.count(q -> q
|
|
|
+// .eq(ProductionTaskDetail::getPersonLiableId, SecurityUtils.getUserId())
|
|
|
+// .eq(ObjectUtil.isNotEmpty(dto.getProductionProcessesId()), ProductionTaskDetail::getProductionProcessesId, dto.getProductionProcessesId())
|
|
|
+// .eq(ProductionTaskDetail::getCirculationStatus, 0)
|
|
|
+// .eq(ProductionTaskDetail::getFinishStatus, 0)
|
|
|
+// );
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -492,15 +633,20 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
|
|
|
ProductionTaskDetail productionTaskDetail = getById(dto.getId());
|
|
|
Assert.notEmpty(productionTaskDetail, "查询不到该任务信息");
|
|
|
|
|
|
- //修改流转状态
|
|
|
- productionTaskDetail.setCirculationStatus(1);
|
|
|
- //将负责人清空
|
|
|
- productionTaskDetail.setPersonLiableId(-1L);
|
|
|
-
|
|
|
- //设置当前工序状态驳回
|
|
|
- productionTaskDetail.setProcessesStatus(0);
|
|
|
-
|
|
|
- this.updateById(productionTaskDetail);
|
|
|
+ TaskProgress taskProgress = taskProgressService.getById(dto.getTaskProgressId());
|
|
|
+ taskProgress.setStatus(0);
|
|
|
+ taskProgress.setPersonLiableId(-1L);
|
|
|
+ taskProgressService.updateById(taskProgress);
|
|
|
+
|
|
|
+// //修改流转状态
|
|
|
+// productionTaskDetail.setCirculationStatus(1);
|
|
|
+// //将负责人清空
|
|
|
+// productionTaskDetail.setPersonLiableId(-1L);
|
|
|
+//
|
|
|
+// //设置当前工序状态驳回
|
|
|
+// productionTaskDetail.setProcessesStatus(0);
|
|
|
+//
|
|
|
+// this.updateById(productionTaskDetail);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -619,10 +765,10 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
|
|
|
ProductionPlan productionPlan = productionPlanService.getById(productionTask.getProductionPlanId());
|
|
|
WorkOrder workOrder = workOrderService.getById(productionPlan.getWorkOrderId());
|
|
|
|
|
|
- List<Long> processesIds = Arrays.asList(productionTaskDetailVo.getPreviousProcessesId(),
|
|
|
- productionTaskDetailVo.getProductionProcessesId(),
|
|
|
- productionTaskDetailVo.getNextProductionProcessesId()
|
|
|
- );
|
|
|
+// List<Long> processesIds = Arrays.asList(productionTaskDetailVo.getPreviousProcessesId(),
|
|
|
+// productionTaskDetailVo.getProductionProcessesId(),
|
|
|
+// productionTaskDetailVo.getNextProductionProcessesId()
|
|
|
+// );
|
|
|
|
|
|
//获取工序列表
|
|
|
List<WorkOrderProductionProcesses> productionProcessesList = workOrderService.getProductionProcessesList(workOrder);
|
|
@@ -637,8 +783,8 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
|
|
|
}
|
|
|
|
|
|
productionTaskDetailVo.setProductionProcessesName(productionProcessesMap.get(productionTaskDetailVo.getProductionProcessesId()));
|
|
|
- productionTaskDetailVo.setNextProductionProcessesName(productionProcessesMap.get(productionTaskDetailVo.getNextProductionProcessesId()));
|
|
|
- productionTaskDetailVo.setPreviousProcessesName(productionProcessesMap.get(productionTaskDetailVo.getPreviousProcessesId()));
|
|
|
+// productionTaskDetailVo.setNextProductionProcessesName(productionProcessesMap.get(productionTaskDetailVo.getNextProductionProcessesId()));
|
|
|
+// productionTaskDetailVo.setPreviousProcessesName(productionProcessesMap.get(productionTaskDetailVo.getPreviousProcessesId()));
|
|
|
|
|
|
//赋值工序提交记录
|
|
|
List<ProductionTaskDetailRecord> productionTaskDetailRecordList = productionTaskDetailRecordService.list(q -> q
|
|
@@ -658,15 +804,15 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
|
|
|
productionTaskDetailVo.setProductionTaskDetailRecordList(productionTaskDetailRecordVos);
|
|
|
|
|
|
|
|
|
- //赋值上一工序流转记录Id
|
|
|
- List<Long> previousProcessesRecordIds = productionTaskDetailRecordService.listObject(ProductionTaskDetailRecord::getId, q -> q
|
|
|
- .eq(ProductionTaskDetailRecord::getProductionTaskDetailId, id)
|
|
|
- .eq(ProductionTaskDetailRecord::getProductionProcessesId, productionTaskDetailVo.getPreviousProcessesId())
|
|
|
- .orderByDesc(ProductionTaskDetailRecord::getCreateTime)
|
|
|
- );
|
|
|
- if (ObjectUtil.isNotEmpty(previousProcessesRecordIds)) {
|
|
|
- productionTaskDetailVo.setPreviousProcessesRecordId(previousProcessesRecordIds.get(0));
|
|
|
- }
|
|
|
+// //赋值上一工序流转记录Id
|
|
|
+// List<Long> previousProcessesRecordIds = productionTaskDetailRecordService.listObject(ProductionTaskDetailRecord::getId, q -> q
|
|
|
+// .eq(ProductionTaskDetailRecord::getProductionTaskDetailId, id)
|
|
|
+// .eq(ProductionTaskDetailRecord::getProductionProcessesId, productionTaskDetailVo.getPreviousProcessesId())
|
|
|
+// .orderByDesc(ProductionTaskDetailRecord::getCreateTime)
|
|
|
+// );
|
|
|
+// if (ObjectUtil.isNotEmpty(previousProcessesRecordIds)) {
|
|
|
+// productionTaskDetailVo.setPreviousProcessesRecordId(previousProcessesRecordIds.get(0));
|
|
|
+// }
|
|
|
|
|
|
|
|
|
return productionTaskDetailVo;
|