|
@@ -3,6 +3,7 @@ package com.fjhx.mes.service.production.impl;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
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.item.service.product.ProductInfoService;
|
|
import com.fjhx.mes.entity.applicable.po.ApplicableProducts;
|
|
import com.fjhx.mes.entity.applicable.po.ApplicableProducts;
|
|
import com.fjhx.mes.entity.production.dto.ProductionTaskDetailDto;
|
|
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.obs.services.internal.ServiceException;
|
|
import com.ruoyi.common.utils.SecurityUtils;
|
|
import com.ruoyi.common.utils.SecurityUtils;
|
|
import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
|
|
+import com.ruoyi.system.utils.UserUtil;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
@@ -74,11 +76,40 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
|
|
@Override
|
|
@Override
|
|
public Page<ProductionTaskDetailVo> getPage(ProductionTaskDetailSelectDto dto) {
|
|
public Page<ProductionTaskDetailVo> getPage(ProductionTaskDetailSelectDto dto) {
|
|
IWrapper<ProductionTaskDetail> wrapper = getWrapper();
|
|
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::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);
|
|
wrapper.orderByDesc("ptd", ProductionTaskDetail::getId);
|
|
Page<ProductionTaskDetailVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
|
|
Page<ProductionTaskDetailVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
|
|
List<ProductionTaskDetailVo> records = page.getRecords();
|
|
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) -> {
|
|
productInfoService.attributeAssign(records, ProductionTaskDetailVo::getProductId, (item, productInfo) -> {
|
|
item.setProductName(productInfo.getName());
|
|
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());
|
|
List<Long> productionTaskIds = records.stream().map(ProductionTaskDetail::getProductionTaskId).collect(Collectors.toList());
|
|
IWrapper<ProductionTaskDetail> wrapper1 = IWrapper.getWrapper();
|
|
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);
|
|
List<WorkOrderVo> workOrderByProductionTask = baseMapper.getWorkOrderByProductionTask(wrapper1);
|
|
Map<Long, WorkOrderVo> WorkOrderMap = workOrderByProductionTask.stream().collect(Collectors.toMap(WorkOrderVo::getProductionTaskId, Function.identity()));
|
|
Map<Long, WorkOrderVo> WorkOrderMap = workOrderByProductionTask.stream().collect(Collectors.toMap(WorkOrderVo::getProductionTaskId, Function.identity()));
|
|
List<Long> workIds = workOrderByProductionTask.stream().map(WorkOrderVo::getId).collect(Collectors.toList());
|
|
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) {
|
|
for (ProductionTaskDetailVo record : records) {
|
|
WorkOrderVo workOrderVo = WorkOrderMap.get(record.getProductionTaskId());
|
|
WorkOrderVo workOrderVo = WorkOrderMap.get(record.getProductionTaskId());
|
|
- if("1".equals(workOrderVo.getIsCustomized())){
|
|
|
|
|
|
+ if ("1".equals(workOrderVo.getIsCustomized())) {
|
|
//如果是定制
|
|
//如果是定制
|
|
String name = workOrderProductionPMap.get(record.getProductionProcessesId());
|
|
String name = workOrderProductionPMap.get(record.getProductionProcessesId());
|
|
String nextName = workOrderProductionPMap.get(record.getNextProductionProcessesId());
|
|
String nextName = workOrderProductionPMap.get(record.getNextProductionProcessesId());
|
|
record.setProductionProcessesName(name);
|
|
record.setProductionProcessesName(name);
|
|
record.setNextProductionProcessesName(nextName);
|
|
record.setNextProductionProcessesName(nextName);
|
|
- }else{
|
|
|
|
|
|
+ } else {
|
|
//不是定制
|
|
//不是定制
|
|
String name = stringMap.get(record.getProductionProcessesId());
|
|
String name = stringMap.get(record.getProductionProcessesId());
|
|
String nextName = stringMap.get(record.getNextProductionProcessesId());
|
|
String nextName = stringMap.get(record.getNextProductionProcessesId());
|
|
@@ -117,6 +149,7 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
|
|
record.setNextProductionProcessesName(nextName);
|
|
record.setNextProductionProcessesName(nextName);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
return page;
|
|
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
|
|
@Override
|
|
public void receive(ProductionTaskDetailDto productionTaskDetailDto) {
|
|
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
|
|
//将负责人赋值为接收人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());
|
|
ProductionPlan productionPlan = productionPlanService.getById(productionTask.getProductionPlanId());
|
|
WorkOrder workOrder = workOrderService.getById(productionPlan.getWorkOrderId());
|
|
WorkOrder workOrder = workOrderService.getById(productionPlan.getWorkOrderId());
|
|
if ("1".equals(workOrder.getIsCustomized())) {
|
|
if ("1".equals(workOrder.getIsCustomized())) {
|
|
@@ -188,12 +241,12 @@ public class ProductionTaskDetailServiceImpl extends ServiceImpl<ProductionTaskD
|
|
//赋值下一工序id
|
|
//赋值下一工序id
|
|
for (int i = 0; i < workOrderProductionProcesses.size(); i++) {
|
|
for (int i = 0; i < workOrderProductionProcesses.size(); i++) {
|
|
WorkOrderProductionProcesses wopp = workOrderProductionProcesses.get(i);
|
|
WorkOrderProductionProcesses wopp = workOrderProductionProcesses.get(i);
|
|
- if (wopp.getId().equals(productionTaskDetailDto.getProductionProcessesId())) {
|
|
|
|
|
|
+ if (wopp.getId().equals(productionTaskDetail.getProductionProcessesId())) {
|
|
//默认赋值空 如果有下一节点赋值下一节点id
|
|
//默认赋值空 如果有下一节点赋值下一节点id
|
|
- productionTaskDetailDto.setNextProductionProcessesId(null);
|
|
|
|
if ((i + 1) < workOrderProductionProcesses.size()) {
|
|
if ((i + 1) < workOrderProductionProcesses.size()) {
|
|
WorkOrderProductionProcesses nextProductionProcesses = workOrderProductionProcesses.get(i + 1);
|
|
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(",");
|
|
String[] split = processRoute.split(",");
|
|
//赋值下一工序id
|
|
//赋值下一工序id
|
|
for (int i = 0; i < split.length; i++) {
|
|
for (int i = 0; i < split.length; i++) {
|
|
- if (split[i].equals(productionTaskDetailDto.getProductionProcessesId())) {
|
|
|
|
|
|
+ if (Long.parseLong(split[i])==productionTaskDetail.getProductionProcessesId()) {
|
|
//默认赋值空 如果有下一节点赋值下一节点id
|
|
//默认赋值空 如果有下一节点赋值下一节点id
|
|
- productionTaskDetailDto.setNextProductionProcessesId(null);
|
|
|
|
if ((i + 1) < split.length) {
|
|
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 productionTaskDetailRecord = new ProductionTaskDetailRecord();
|
|
- productionTaskDetailRecord.setProductionTaskDetailId(productionTaskDetailDto.getId());
|
|
|
|
- productionTaskDetailRecord.setProductionProcessesId(productionTaskDetailDto.getProductionProcessesId());
|
|
|
|
|
|
+ productionTaskDetailRecord.setProductionTaskDetailId(productionTaskDetail.getId());
|
|
|
|
+ productionTaskDetailRecord.setProductionProcessesId(productionTaskDetail.getProductionProcessesId());
|
|
productionTaskDetailRecord.setPersonLiableId(SecurityUtils.getUserId());
|
|
productionTaskDetailRecord.setPersonLiableId(SecurityUtils.getUserId());
|
|
productionTaskDetailRecordService.save(productionTaskDetailRecord);
|
|
productionTaskDetailRecordService.save(productionTaskDetailRecord);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 任务接收拒绝
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public void rejection(ProductionTaskDetailDto productionTaskDetailDto) {
|
|
|
|
+ //取消流转状态
|
|
|
|
+ productionTaskDetailDto.setCirculationStatus(0);
|
|
|
|
+ //将接收人赋值为空
|
|
|
|
+ productionTaskDetailDto.setReceivedUserId(-1l);
|
|
|
|
+ this.updateById(productionTaskDetailDto);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
}
|
|
}
|