零件进程管理

This commit is contained in:
z 2026-01-07 09:35:49 +08:00
parent c60a522230
commit 605dbfd5ca
18 changed files with 1767 additions and 171 deletions

View File

@ -1,5 +1,6 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.plansubdetail; package com.chanko.yunxi.mes.module.heli.controller.admin.plansubdetail;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO;
import com.chanko.yunxi.mes.module.heli.service.plansub.PlanSubService; import com.chanko.yunxi.mes.module.heli.service.plansub.PlanSubService;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -159,4 +160,29 @@ public class PlanSubDetailController {
public CommonResult<List<PlanSubDetailDO>> getList(@Valid PlanSubDetailPageReqVO pageReqVO) { public CommonResult<List<PlanSubDetailDO>> getList(@Valid PlanSubDetailPageReqVO pageReqVO) {
return success( planSubDetailService.getList(pageReqVO)); return success( planSubDetailService.getList(pageReqVO));
} }
@GetMapping("/getList1")
@PreAuthorize("@ss.hasPermission('heli:plan-sub-detail:query')")
public CommonResult<List<PlanSubDetailDO>> getList1(@Valid PlanSubDetailPageReqVO pageReqVO) {
return success( planSubDetailService.getList1(pageReqVO));
}
@GetMapping("/getList2")
@PreAuthorize("@ss.hasPermission('heli:plan-sub-detail:query')")
public CommonResult<List<TaskDispatchDetailDO>> getList2(@Valid PlanSubDetailPageReqVO pageReqVO) {
return success( planSubDetailService.getList2(pageReqVO));
}
@GetMapping("/getList3")
@PreAuthorize("@ss.hasPermission('heli:plan-sub-detail:query')")
public CommonResult<List<TaskDispatchDetailDO>> getList3(@Valid PlanSubDetailPageReqVO pageReqVO) {
return success( planSubDetailService.getList3(pageReqVO));
}
@GetMapping("/getList4")
@PreAuthorize("@ss.hasPermission('heli:plan-sub-detail:query')")
public CommonResult<List<TaskDispatchDetailDO>> getList4(@Valid PlanSubDetailPageReqVO pageReqVO) {
return success( planSubDetailService.getList4(pageReqVO));
}
@GetMapping("/getList5")
@PreAuthorize("@ss.hasPermission('heli:plan-sub-detail:query')")
public CommonResult<List<TaskDispatchDetailDO>> getList5(@Valid PlanSubDetailPageReqVO pageReqVO) {
return success( planSubDetailService.getList5(pageReqVO));
}
} }

View File

@ -122,11 +122,13 @@ public class ProjectOrderController {
} }
} }
} }
Set<String> nameSimSet = new HashSet<>(); if (ObjectUtil.isNotEmpty(operateReqVO.getProjectOrderSubs())){
for (ProjectOrderSubDO projectOrderSub : operateReqVO.getProjectOrderSubs()) { Set<String> nameSimSet = new HashSet<>();
String nameSim = projectOrderSub.getNameSim(); for (ProjectOrderSubDO projectOrderSub : operateReqVO.getProjectOrderSubs()) {
if (!nameSimSet.add(nameSim)) { String nameSim = projectOrderSub.getNameSim();
return CommonResult.error(400,"该项目下子项目简码不能重复,请确认!"); if (!nameSimSet.add(nameSim)) {
return CommonResult.error(400,"该项目下子项目简码不能重复,请确认!");
}
} }
} }
projectOrderService.operateProjectOrder(operateReqVO); projectOrderService.operateProjectOrder(operateReqVO);
@ -146,7 +148,7 @@ public class ProjectOrderController {
orderYsService.createOrUpdate(operateReqVO); orderYsService.createOrUpdate(operateReqVO);
// 订单批准时创建或者更新生产计划数据 // 订单批准时创建或者更新生产计划数据
crossOrderManager.generatePlan(operateReqVO.getId()); crossOrderManager.generatePlan(operateReqVO.getId());
// projectOrderService.createProjectOrderSnapshot(operateReqVO); // projectOrderService.createProjectOrderSnapshot(operateReqVO);
break; break;
case TERMINATE: case TERMINATE:
orderYsService.delete(operateReqVO); orderYsService.delete(operateReqVO);

View File

@ -1,6 +1,8 @@
package com.chanko.yunxi.mes.module.heli.dal.dataobject.plansubdetail; package com.chanko.yunxi.mes.module.heli.dal.dataobject.plansubdetail;
import lombok.*; import lombok.*;
import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -115,6 +117,14 @@ public class PlanSubDetailDO extends BaseDO {
//生产进度 //生产进度
@TableField(exist = false) @TableField(exist = false)
private String productionSchedule; private String productionSchedule;
@TableField(exist = false)
private String type;
@TableField(exist = false)
private BigDecimal workHours;
@TableField(exist = false)
private String percentage;
@TableField(exist = false)
private String PercentageFlag;
@TableField(exist = false)
private Date time;
} }

View File

@ -3,6 +3,7 @@ package com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO; import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO;
import io.swagger.v3.oas.models.security.SecurityScheme; import io.swagger.v3.oas.models.security.SecurityScheme;
import kotlin.jvm.internal.Lambda;
import lombok.*; import lombok.*;
import org.apache.poi.hpsf.Date; import org.apache.poi.hpsf.Date;
@ -261,4 +262,20 @@ public class TaskDispatchDetailDO extends BaseDO {
private Integer receivingStatus; private Integer receivingStatus;
@TableField(exist = false) @TableField(exist = false)
private Integer mplanStatus; private Integer mplanStatus;
@TableField(exist = false)
private String partsProcurement;
@TableField(exist = false)
private String receiving;
@TableField(exist = false)
private String receivingFlag;
@TableField(exist = false)
private LocalDateTime receivingTime;
@TableField(exist = false)
private String percentage;
@TableField(exist = false)
private String report;
@TableField(exist = false)
private String reportFlag;
@TableField(exist = false)
private String finishedProduct;
} }

View File

@ -316,10 +316,10 @@ public interface PlanSubMapper extends BaseMapperX<PlanSubDO> {
query.eq(ProjectOrderSubDO::getDeleted,0); query.eq(ProjectOrderSubDO::getDeleted,0);
query.eq(CustomerDO::getDeleted,0); query.eq(CustomerDO::getDeleted,0);
query.eq(PlanDO::getDeleted,0); query.eq(PlanDO::getDeleted,0);
query.eq(ObjectUtil.isNotEmpty(pageReqVO.getProjectCode()), ProjectOrderDO::getCode, pageReqVO.getProjectCode()); query.like(ObjectUtil.isNotEmpty(pageReqVO.getProjectCode()), ProjectOrderDO::getCode, pageReqVO.getProjectCode());
query.eq(ObjectUtil.isNotEmpty(pageReqVO.getProjectName()), ProjectOrderDO::getProjectName, pageReqVO.getProjectName()); query.like(ObjectUtil.isNotEmpty(pageReqVO.getProjectName()), ProjectOrderDO::getProjectName, pageReqVO.getProjectName());
query.eq(ObjectUtil.isNotEmpty(pageReqVO.getProjectSubName()), ProjectOrderSubDO::getName, pageReqVO.getProjectSubName()); query.like(ObjectUtil.isNotEmpty(pageReqVO.getProjectSubName()), ProjectOrderSubDO::getName, pageReqVO.getProjectSubName());
query.eq(ObjectUtil.isNotEmpty(pageReqVO.getCustomerName()), CustomerDO::getName, pageReqVO.getCustomerName()); query.like(ObjectUtil.isNotEmpty(pageReqVO.getCustomerName()), CustomerDO::getName, pageReqVO.getCustomerName());
query.orderByAsc(ProjectOrderDO::getCode); query.orderByAsc(ProjectOrderDO::getCode);
return selectPage(pageReqVO, query); return selectPage(pageReqVO, query);
} }

View File

@ -18,9 +18,11 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* 工艺设计 Mapper * 工艺设计 Mapper
@ -395,4 +397,11 @@ public interface ProcessDesignMapper extends BaseMapperX<ProcessDesignDO> {
} }
@Delete("delete from pro_process_design where project_id = #{id}") @Delete("delete from pro_process_design where project_id = #{id}")
void deleteOrderId(@Param("id") Long id); void deleteOrderId(@Param("id") Long id);
@Select("SELECT pd.* FROM pro_process_design pd " +
"INNER JOIN project_plan_sub_detail psd ON psd.project_sub_id = pd.project_sub_id " +
"AND psd.sub_type = pd.process_design_type " +
"WHERE pd.project_sub_id = #{projectSubId} " +
"AND pd.process_design_type IN ('BLUEPRINT_3D', 'BLUEPRINT_2D', 'BLUEPRINT_WORKBLANK')")
List<ProcessDesignDO> selectWithDetailExists(@Param("projectSubId") Long projectSubId);
} }

View File

@ -904,7 +904,15 @@ public interface TaskDispatchDetailMapper extends BaseMapperX<TaskDispatchDetail
MPJLambdaWrapper<TaskDispatchDetailDO> query = new MPJLambdaWrapper<>(); MPJLambdaWrapper<TaskDispatchDetailDO> query = new MPJLambdaWrapper<>();
query.selectAll(TaskDispatchDetailDO.class) query.selectAll(TaskDispatchDetailDO.class)
.select("a.bom_detail_id as bomDetailId") .select("a.bom_detail_id as bomDetailId")
.leftJoin(TaskDispatchDO.class,"a",TaskDispatchDO::getId,TaskDispatchDetailDO::getDispatchId); .select("b.material_name as materialName","c.name as projectSubName")
.select("d.name as procedureName","u.nickname as ownerName")
.leftJoin(TaskDispatchDO.class,"a",TaskDispatchDO::getId,TaskDispatchDetailDO::getDispatchId)
.leftJoin(ProcessBomDetailDO.class,"b",ProcessBomDetailDO::getId,TaskDispatchDO::getBomDetailId)
.leftJoin(ProjectOrderSubDO.class,"c",ProjectOrderSubDO::getId,TaskDispatchDO::getProjectSubId)
.leftJoin(ProcedureDO.class,"d",ProcedureDO::getId,TaskDispatchDetailDO::getProcedureId)
.leftJoin(AdminUserDO.class,"u",AdminUserDO::getId,TaskDispatchDetailDO::getOwner)
.orderByAsc(ProcessBomDetailDO::getMaterialName)
.orderByAsc(TaskDispatchDO::getCode);
query.eq(TaskDispatchDO::getProjectSubId,projectSubId); query.eq(TaskDispatchDO::getProjectSubId,projectSubId);
query.eq(TaskDispatchDO::getDispatchType,"PRODUCTION"); query.eq(TaskDispatchDO::getDispatchType,"PRODUCTION");
query.eq(ObjectUtil.isNotEmpty(checkYn),TaskDispatchDetailDO::getCheckYn,checkYn); query.eq(ObjectUtil.isNotEmpty(checkYn),TaskDispatchDetailDO::getCheckYn,checkYn);
@ -916,7 +924,13 @@ public interface TaskDispatchDetailMapper extends BaseMapperX<TaskDispatchDetail
MPJLambdaWrapper<TaskDispatchDetailDO> query = new MPJLambdaWrapper<>(); MPJLambdaWrapper<TaskDispatchDetailDO> query = new MPJLambdaWrapper<>();
query.selectAll(TaskDispatchDetailDO.class) query.selectAll(TaskDispatchDetailDO.class)
.select("a.bom_detail_id as bomDetailId") .select("a.bom_detail_id as bomDetailId")
.leftJoin(TaskDispatchDO.class,"a",TaskDispatchDO::getId,TaskDispatchDetailDO::getDispatchId); .select("d.name as procedureName","c.name as projectSubName")
.leftJoin(TaskDispatchDO.class,"a",TaskDispatchDO::getId,TaskDispatchDetailDO::getDispatchId)
.leftJoin(ProjectOrderSubDO.class,"c",ProjectOrderSubDO::getId,TaskDispatchDO::getProjectSubId)
.leftJoin(ProcedureDO.class,"d",ProcedureDO::getId,TaskDispatchDetailDO::getProcedureId)
.groupBy(TaskDispatchDetailDO::getId)
.orderByAsc(ProjectOrderSubDO::getName)
.orderByAsc(ProcedureDO::getName);
query.eq(TaskDispatchDO::getProjectSubId,projectSubId); query.eq(TaskDispatchDO::getProjectSubId,projectSubId);
query.eq(TaskDispatchDO::getDispatchType,"ASSEMBLE"); query.eq(TaskDispatchDO::getDispatchType,"ASSEMBLE");
return selectList(query); return selectList(query);

View File

@ -230,4 +230,13 @@ public interface TaskDispatchMapper extends BaseMapperX<TaskDispatchDO> {
@Delete("delete from pro_task_dispatch where project_id=#{id}") @Delete("delete from pro_task_dispatch where project_id=#{id}")
void deleteOrderId(@Param("id") Long id); void deleteOrderId(@Param("id") Long id);
default List<TaskDispatchDO> selectByIds(List<Long> ids){
MPJLambdaWrapper<TaskDispatchDO> query = new MPJLambdaWrapper<>();
query.selectAll(TaskDispatchDO.class)
.select("a.craft_content as craftContent")
.leftJoin(PlanDO.class, "a", PlanDO::getId, TaskDispatchDO::getPlanId)
.in(TaskDispatchDO::getId, ids);
return selectList(query);
}
} }

View File

@ -54,6 +54,7 @@ import org.checkerframework.checker.units.qual.C;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -385,6 +386,7 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
} }
@Override @Override
@Transactional
public Boolean approval(Long id) { public Boolean approval(Long id) {
PurchaseOrderMakeDO orderMakeDO = purchaseOrderMakeMapper.selectById(id); PurchaseOrderMakeDO orderMakeDO = purchaseOrderMakeMapper.selectById(id);
if (orderMakeDO.getStatus() != 1) throw exception(new ErrorCode(400, "该单据状态非待审核,请刷新界面!")); if (orderMakeDO.getStatus() != 1) throw exception(new ErrorCode(400, "该单据状态非待审核,请刷新界面!"));
@ -402,7 +404,7 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
materialPlanBoom.setMplanStatus(2); materialPlanBoom.setMplanStatus(2);
materialPlanBoomMapper.updateById(materialPlanBoom); materialPlanBoomMapper.updateById(materialPlanBoom);
}); });
List<PurchaseOrderMakeDetailDO> list = purchaseOrderMakeDetailMapper.selectList("project_purchase_order_make_id", id); List<PurchaseOrderMakeDetailDO> list = purchaseOrderMakeDetailMapper.selectList("purchase_order_id", id);
List<Long> ids = list.stream().map(PurchaseOrderMakeDetailDO::getId).collect(Collectors.toList()); List<Long> ids = list.stream().map(PurchaseOrderMakeDetailDO::getId).collect(Collectors.toList());
if (ObjectUtil.isNotEmpty(ids)){ if (ObjectUtil.isNotEmpty(ids)){
LambdaUpdateWrapper<PurchaseOrderMakeDetailDO> updateWrapper = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<PurchaseOrderMakeDetailDO> updateWrapper = new LambdaUpdateWrapper<>();
@ -656,6 +658,15 @@ if (ObjectUtil.isNotEmpty(materialDO)){
public Boolean approvals(List<PurchaseOrderMakeDetailDO> list) { public Boolean approvals(List<PurchaseOrderMakeDetailDO> list) {
if (ObjectUtil.isNotEmpty( list)){ if (ObjectUtil.isNotEmpty( list)){
List<Long> ids = list.stream().map(PurchaseOrderMakeDetailDO::getId).collect(Collectors.toList()); List<Long> ids = list.stream().map(PurchaseOrderMakeDetailDO::getId).collect(Collectors.toList());
List<Long> orderIds = list.stream().map(PurchaseOrderMakeDetailDO::getPurchaseOrderId).collect(Collectors.toList());
if (ObjectUtil.isNotEmpty(orderIds)){
LambdaUpdateWrapper<PurchaseOrderMakeDO> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.in(PurchaseOrderMakeDO::getId, orderIds);
updateWrapper.set(PurchaseOrderMakeDO::getStatus,2);
updateWrapper.set(PurchaseOrderMakeDO::getAuditTime, LocalDateTime.now());
updateWrapper.set(PurchaseOrderMakeDO::getAuditor, getLoginUser().getId());
purchaseOrderMakeMapper.update(updateWrapper);
}
LambdaQueryWrapper<PurchaseOrderMakeDetailDO> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<PurchaseOrderMakeDetailDO> wrapper = new LambdaQueryWrapper<>();
wrapper.in(PurchaseOrderMakeDetailDO::getId, ids); wrapper.in(PurchaseOrderMakeDetailDO::getId, ids);
wrapper.ne(PurchaseOrderMakeDetailDO::getStatus,1); wrapper.ne(PurchaseOrderMakeDetailDO::getStatus,1);

View File

@ -3,6 +3,7 @@ package com.chanko.yunxi.mes.module.heli.service.plan;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.smallbun.screw.core.util.CollectionUtils; import cn.smallbun.screw.core.util.CollectionUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.chanko.yunxi.mes.framework.common.exception.ErrorCode; import com.chanko.yunxi.mes.framework.common.exception.ErrorCode;
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
@ -74,6 +75,7 @@ import java.util.stream.Collectors;
import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.PROJECT_PLAN; import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.PROJECT_PLAN;
import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.PROJECT_PLAN_TASK; import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.PROJECT_PLAN_TASK;
import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.OWNER_NOT_EXISTS;
import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.PLAN_NOT_EXISTS; import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.PLAN_NOT_EXISTS;
/** /**
@ -436,18 +438,22 @@ public class PlanServiceImpl implements PlanService {
LocalDateTime dateAsLocalDateTime = processDesignProgressDO.getEndTime().toInstant() LocalDateTime dateAsLocalDateTime = processDesignProgressDO.getEndTime().toInstant()
.atZone(ZoneId.systemDefault()) .atZone(ZoneId.systemDefault())
.toLocalDateTime(); .toLocalDateTime();
if (dateAsLocalDateTime.isAfter(processDesignDO.getCraftEndDate())) { if (ObjectUtil.isNotEmpty(planSubDO.getCraftEndDate())){
if (dateAsLocalDateTime.isAfter(planSubDO.getCraftEndDate())) {
planDO.setProcessFlag("1"); planDO.setProcessFlag("1");
} else { } else {
planDO.setProcessFlag("0"); planDO.setProcessFlag("0");
} }
}
} }
} else { } else {
if (now.isAfter(processDesignDO.getCraftEndDate())) { if (ObjectUtil.isNotEmpty(planSubDO.getCraftEndDate())){
if (now.isAfter(planSubDO.getCraftEndDate())) {
planDO.setProcessFlag("1"); planDO.setProcessFlag("1");
} else { } else {
planDO.setProcessFlag("0"); planDO.setProcessFlag("0");
} }
}
Long l = processDesignProgressMapper.selectCount(new LambdaQueryWrapper<ProcessDesignProgressDO>().eq(ProcessDesignProgressDO::getProcessDesignId, processDesignDO.getId())); Long l = processDesignProgressMapper.selectCount(new LambdaQueryWrapper<ProcessDesignProgressDO>().eq(ProcessDesignProgressDO::getProcessDesignId, processDesignDO.getId()));
if (l > 0) { if (l > 0) {
planDO.setProcessProgress("执行中"); planDO.setProcessProgress("执行中");
@ -482,7 +488,7 @@ public class PlanServiceImpl implements PlanService {
List<PurchaseOrderMakeDetailDO> purchaseOrderMakeDetailDOS = queryPurchaseOrderMakeDetails(subDO); List<PurchaseOrderMakeDetailDO> purchaseOrderMakeDetailDOS = queryPurchaseOrderMakeDetails(subDO);
// 判断所有采购订单是否都已完成 // 判断所有采购订单是否都已完成
boolean allCompleted = isAllPurchaseOrdersCompleted(purchaseOrderNoDetailDOS); boolean allCompleted = isAllPurchaseOrdersCompleted(purchaseOrderNoDetailDOS,detailDOS);
if (allCompleted) { if (allCompleted) {
subDO.setOutsourcingTasks(TASK_COMPLETED); subDO.setOutsourcingTasks(TASK_COMPLETED);
@ -529,7 +535,7 @@ public class PlanServiceImpl implements PlanService {
List<TaskDispatchDetailDO> dispatchDetailDOList = taskDispatchDetailMapper List<TaskDispatchDetailDO> dispatchDetailDOList = taskDispatchDetailMapper
.outSourceTask(subDO.getProjectSubId(), "N","0"); .outSourceTask(subDO.getProjectSubId(), "N","0");
//2.查询过程检报工信息 //2.查询过程检报工信息
List<PgMasterLineDO> processInspectionReports = queryProcessInspectionReports(dispatchDetailDOS); List<PgMasterLineDO> processInspectionReports = queryProcessInspectionReports(dispatchDetailDOList);
boolean isSameSizeAndNotEmpty = isSameSizeAndNotEmpty(dispatchDetailDOList, processInspectionReports); boolean isSameSizeAndNotEmpty = isSameSizeAndNotEmpty(dispatchDetailDOList, processInspectionReports);
if (isSameSizeAndNotEmpty){ if (isSameSizeAndNotEmpty){
subDO.setProcessInspection(TASK_COMPLETED); subDO.setProcessInspection(TASK_COMPLETED);
@ -570,16 +576,14 @@ public class PlanServiceImpl implements PlanService {
if (CollectionUtils.isEmpty(taskReportDOS)) { if (CollectionUtils.isEmpty(taskReportDOS)) {
if (CollectionUtils.isNotEmpty(dispatchDetailDOS)){ if (CollectionUtils.isNotEmpty(dispatchDetailDOS)){
subDO.setAssemblyTask(TASK_NOT_STARTED); subDO.setAssemblyTask(TASK_NOT_STARTED);
return;
} }
}else {
BigDecimal dispatchAmount = calculateDispatchAmount(dispatchDetailDOS);
BigDecimal reportedAmount = calculateReportedAmount(taskReportDOS);
int percentage = calculatePercentage(reportedAmount, dispatchAmount);
subDO.setAssemblyTask(String.format(TASK_STARTED_FORMAT, percentage));
subDO.setAssemblyTaskFlag(TASK_FLAG_NORMAL);
} }
BigDecimal dispatchAmount = calculateDispatchAmount(dispatchDetailDOS);
BigDecimal reportedAmount = calculateReportedAmount(taskReportDOS);
int percentage = calculatePercentage(reportedAmount, dispatchAmount);
subDO.setAssemblyTask(String.format(TASK_STARTED_FORMAT, percentage));
subDO.setAssemblyTaskFlag(TASK_FLAG_NORMAL);
} }
/** /**
* 处理进行中的任务状态 * 处理进行中的任务状态
@ -590,17 +594,17 @@ public class PlanServiceImpl implements PlanService {
if (CollectionUtils.isEmpty(taskReportDOS)) { if (CollectionUtils.isEmpty(taskReportDOS)) {
if (CollectionUtils.isNotEmpty(dispatchDetailDOS)){ if (CollectionUtils.isNotEmpty(dispatchDetailDOS)){
subDO.setProcessingTask(TASK_NOT_STARTED); subDO.setProcessInspection(TASK_NOT_STARTED);
return;
} }
}else {
BigDecimal dispatchAmount = calculateDispatchAmount(dispatchDetailDOS);
BigDecimal reportedAmount = calculateAmount(taskReportDOS);
int percentage = calculatePercentage(reportedAmount, dispatchAmount);
subDO.setProcessInspection(String.format(TASK_STARTED_FORMAT, percentage));
subDO.setProcessInspectionFlag(TASK_FLAG_NORMAL);
} }
BigDecimal dispatchAmount = calculateDispatchAmount(dispatchDetailDOS);
BigDecimal reportedAmount = calculateAmount(taskReportDOS);
int percentage = calculatePercentage(reportedAmount, dispatchAmount);
subDO.setProcessingTask(String.format(TASK_STARTED_FORMAT, percentage));
subDO.setProcessingTaskFlag(TASK_FLAG_NORMAL);
} }
/** /**
* 判断两个集合大小相等且都不为空 * 判断两个集合大小相等且都不为空
@ -680,16 +684,15 @@ public boolean isSameSizeAndNotEmpty(Collection<?> list1, Collection<?> list2)
if (CollectionUtils.isEmpty(taskReportDOS)) { if (CollectionUtils.isEmpty(taskReportDOS)) {
if (CollectionUtils.isNotEmpty(dispatchDetailDOS)){ if (CollectionUtils.isNotEmpty(dispatchDetailDOS)){
subDO.setProcessingTask(TASK_NOT_STARTED); subDO.setProcessingTask(TASK_NOT_STARTED);
return;
} }
}else {
BigDecimal dispatchAmount = calculateDispatchAmount(dispatchDetailDOS);
BigDecimal reportedAmount = calculateReportedAmount(taskReportDOS);
int percentage = calculatePercentage(reportedAmount, dispatchAmount);
subDO.setProcessingTask(String.format(TASK_STARTED_FORMAT, percentage));
subDO.setProcessingTaskFlag(TASK_FLAG_NORMAL);
} }
BigDecimal dispatchAmount = calculateDispatchAmount(dispatchDetailDOS);
BigDecimal reportedAmount = calculateReportedAmount(taskReportDOS);
int percentage = calculatePercentage(reportedAmount, dispatchAmount);
subDO.setProcessingTask(String.format(TASK_STARTED_FORMAT, percentage));
subDO.setProcessingTaskFlag(TASK_FLAG_NORMAL);
} }
/** /**
* 处理装配任务时间逻辑 * 处理装配任务时间逻辑
@ -830,13 +833,13 @@ private List<PurchaseOrderNoDetailDO> queryPurchaseOrderDetails(PlanSubDO subDO)
} }
// 判断所有采购订单是否完成 // 判断所有采购订单是否完成
private boolean isAllPurchaseOrdersCompleted(List<PurchaseOrderNoDetailDO> purchaseOrderNoDetailDOS) { private boolean isAllPurchaseOrdersCompleted(List<PurchaseOrderNoDetailDO> purchaseOrderNoDetailDOS,List<TaskDispatchDetailDO> taskDispatchDetailDOS) {
if (CollectionUtils.isEmpty(purchaseOrderNoDetailDOS)) { if (CollectionUtils.isEmpty(purchaseOrderNoDetailDOS)) {
return false; return false;
} }
return purchaseOrderNoDetailDOS.stream() return purchaseOrderNoDetailDOS.stream()
.filter(Objects::nonNull) .filter(Objects::nonNull)
.allMatch(item -> item.getReceivingStatus() == 3); .allMatch(item -> item.getReceivingStatus() == 3) && taskDispatchDetailDOS.size()==purchaseOrderNoDetailDOS.size();
} }
// 计算已收货的采购数量 // 计算已收货的采购数量
@ -910,11 +913,7 @@ private List<PurchaseOrderNoDetailDO> queryPurchaseOrderDetails(PlanSubDO subDO)
* 查询已完成的工艺设计 * 查询已完成的工艺设计
*/ */
private List<ProcessDesignDO> getCompletedProcessDesigns(Long projectSubId) { private List<ProcessDesignDO> getCompletedProcessDesigns(Long projectSubId) {
LambdaQueryWrapper<ProcessDesignDO> queryWrapper = new LambdaQueryWrapper<>(); return processDesignMapper.selectWithDetailExists(projectSubId);
queryWrapper.eq(ProcessDesignDO::getProjectSubId, projectSubId);
queryWrapper.in(ProcessDesignDO::getProcessDesignType, "BLUEPRINT_3D","BLUEPRINT_2D","BLUEPRINT_WORKBLANK");
queryWrapper.eq(ProcessDesignDO::getIsOverProcess, "1");
return processDesignMapper.selectList(queryWrapper);
} }
/** /**
@ -929,10 +928,15 @@ private List<PurchaseOrderNoDetailDO> queryPurchaseOrderDetails(PlanSubDO subDO)
} }
/** /**
* 检查是否有足够的已完成设计>=3 * 检查设计是否完成
*/ */
private boolean hasEnoughCompletedDesigns(List<ProcessDesignDO> processDesigns) { private boolean hasEnoughCompletedDesigns(List<ProcessDesignDO> processDesigns) {
return ObjectUtil.isNotEmpty(processDesigns) && processDesigns.size() >= 3; if (CollectionUtils.isEmpty(processDesigns)) {
return false;
}
return processDesigns.stream()
.filter(Objects::nonNull)
.allMatch(item -> item.getIsOverProcess() ==1);
} }
/** /**
@ -967,8 +971,8 @@ private List<PurchaseOrderNoDetailDO> queryPurchaseOrderDetails(PlanSubDO subDO)
PlanSubDetailDO latestTwoDimPlan, PlanSubDetailDO latestTwoDimPlan,
LocalDateTime now) { LocalDateTime now) {
if (ObjectUtil.isEmpty(processDesigns)) { if (ObjectUtil.isEmpty(processDesigns)) {
subDO.setDesignTask("未开始"); subDO.setDesignTask("");
return;
} }
List<Long> processDesignIds = processDesigns.stream() List<Long> processDesignIds = processDesigns.stream()
@ -978,31 +982,30 @@ private List<PurchaseOrderNoDetailDO> queryPurchaseOrderDetails(PlanSubDO subDO)
// 获取工艺设计进度列表 // 获取工艺设计进度列表
List<ProcessDesignProgressDO> progressList = getProcessDesignProgressList(processDesignIds); List<ProcessDesignProgressDO> progressList = getProcessDesignProgressList(processDesignIds);
if (ObjectUtil.isEmpty(progressList)) { if (ObjectUtil.isEmpty(progressList)&&ObjectUtil.isNotEmpty(latestTwoDimPlan)) {
subDO.setDesignTask("未开始"); subDO.setDesignTask("未开始");
return;
} }
if (ObjectUtil.isNotEmpty(progressList)) {
// 计算总工时和当前工时 // 计算总工时和当前工时
BigDecimal totalWorkTime = calculateTotalWorkTime(progressList); BigDecimal totalWorkTime = calculateTotalWorkTime(progressList);
BigDecimal currentTime = calculateCurrentTime(subDO); BigDecimal currentTime = calculateCurrentTime(subDO);
currentTime = currentTime.multiply(new BigDecimal("8")); currentTime = currentTime.multiply(new BigDecimal("8"));
// 计算完成百分比 // 计算完成百分比
Integer percentage = calculatePercentage( totalWorkTime,currentTime); Integer percentage = calculatePercentage(totalWorkTime, currentTime);
// 设置设计任务状态 // 设置设计任务状态
subDO.setDesignTask(String.format("已开始(%d%%)", percentage)); subDO.setDesignTask(String.format("已开始(%d%%)", percentage));
subDO.setDesignTaskFlag("0"); subDO.setDesignTaskFlag("0");
}
// 检查是否超期 // 检查是否超期
ProcessDesignProgressDO latestProgress = getLatestProgress(processDesignIds); if (
if (ObjectUtil.isNotEmpty(latestProgress) &&
ObjectUtil.isNotEmpty(latestTwoDimPlan) && ObjectUtil.isNotEmpty(latestTwoDimPlan) &&
now.isAfter(latestTwoDimPlan.getTwoDimDate())) { now.isAfter(latestTwoDimPlan.getTwoDimDate())) {
subDO.setDesignTaskFlag("1"); subDO.setDesignTaskFlag("1");
} }
} }
/** /**
* 获取最新的工艺设计进度 * 获取最新的工艺设计进度
*/ */

View File

@ -8,6 +8,7 @@ import com.chanko.yunxi.mes.module.heli.controller.admin.plansubdetail.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plansubdetail.PlanSubDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.plansubdetail.PlanSubDetailDO;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam; import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO;
/** /**
* 生产计划子项目设计时间明细 Service 接口 * 生产计划子项目设计时间明细 Service 接口
@ -70,4 +71,14 @@ public interface PlanSubDetailService {
CommonResult overlap(PlanSubDetailSaveReqVO updateReqVO); CommonResult overlap(PlanSubDetailSaveReqVO updateReqVO);
List<PlanSubDetailDO> getList(PlanSubDetailPageReqVO pageReqVO); List<PlanSubDetailDO> getList(PlanSubDetailPageReqVO pageReqVO);
List<PlanSubDetailDO> getList1(PlanSubDetailPageReqVO pageReqVO);
List<TaskDispatchDetailDO> getList2(PlanSubDetailPageReqVO pageReqVO);
List<TaskDispatchDetailDO> getList3(PlanSubDetailPageReqVO pageReqVO);
List<TaskDispatchDetailDO> getList4(PlanSubDetailPageReqVO pageReqVO);
List<TaskDispatchDetailDO> getList5(PlanSubDetailPageReqVO pageReqVO);
} }

View File

@ -1054,7 +1054,7 @@ public class TaskDispatchServiceImpl implements TaskDispatchService {
// bdgzsomthingMapper.updateById(bdgzsomthingDO); // bdgzsomthingMapper.updateById(bdgzsomthingDO);
// } // }
// } // }
if (taskDispatchDO.getDispatchType().equals("PRODUCTION") && taskDispatchDetailDO.getTestYn().equals("N")){ if (taskDispatchDO.getDispatchType().equals("PRODUCTION") && taskDispatchDetailDO.getTestYn().equals("N")&&taskDispatchDetailDO.getCheckYn().equals("0")){
pgMasterService.insertPgList(planDO.getId(),planDO.getProjectId(),taskDispatchDO.getBomDetailId(),taskDispatchDetailDO); pgMasterService.insertPgList(planDO.getId(),planDO.getProjectId(),taskDispatchDO.getBomDetailId(),taskDispatchDetailDO);
} }
// if (taskDispatchDO.getDispatchType().equals("PRODUCTION") && isBomDetailProductionOver){ // if (taskDispatchDO.getDispatchType().equals("PRODUCTION") && isBomDetailProductionOver){

View File

@ -44,10 +44,10 @@ public class TaskReportServiceImpl implements TaskReportService {
public CommonResult<Boolean> updateTaskReport(TaskReportSaveReqVO updateReqVO) { public CommonResult<Boolean> updateTaskReport(TaskReportSaveReqVO updateReqVO) {
// 校验存在 // 校验存在
validateTaskReportExists(updateReqVO.getId()); validateTaskReportExists(updateReqVO.getId());
TaskDispatchDetailDO taskDispatchDetailDO = taskDispatchDetailMapper.selectById(updateReqVO.getDispatchDetailId()); // TaskDispatchDetailDO taskDispatchDetailDO = taskDispatchDetailMapper.selectById(updateReqVO.getDispatchDetailId());
if (ObjectUtil.isNotEmpty(taskDispatchDetailDO)){ // if (ObjectUtil.isNotEmpty(taskDispatchDetailDO)){
if (taskDispatchDetailDO.getProcedureStatus() == 2) return CommonResult.error(400,"该派工单已报工完成,不允许修改!"); // if (taskDispatchDetailDO.getProcedureStatus() == 2) return CommonResult.error(400,"该派工单已报工完成,不允许修改!");
} // }
// 更新 // 更新
TaskReportDO updateObj = BeanUtils.toBean(updateReqVO, TaskReportDO.class); TaskReportDO updateObj = BeanUtils.toBean(updateReqVO, TaskReportDO.class);
taskReportMapper.updateById(updateObj); taskReportMapper.updateById(updateObj);

View File

@ -109,17 +109,17 @@ public class AdminAuthServiceImpl implements AdminAuthService {
// 使用账号密码进行登录 // 使用账号密码进行登录
AdminUserDO user = authenticate(reqVO.getUsername(), reqVO.getPassword()); AdminUserDO user = authenticate(reqVO.getUsername(), reqVO.getPassword());
String openId = getOpenid(reqVO.getCode()); // String openId = getOpenid(reqVO.getCode());
//判断如果openId为空时需要获取并更新openId // //判断如果openId为空时需要获取并更新openId
if(user.getOpenId()==null){ // if(user.getOpenId()==null){
user.setOpenId(openId); // user.setOpenId(openId);
//更新openID // //更新openID
userMapper.updateById(user); // userMapper.updateById(user);
}else if(!user.getOpenId().equals(openId)){ // }else if(!user.getOpenId().equals(openId)){
user.setOpenId(openId); // user.setOpenId(openId);
//更新openID // //更新openID
userMapper.updateById(user); // userMapper.updateById(user);
} // }
// 如果 socialType 非空说明需要绑定社交用户 // 如果 socialType 非空说明需要绑定社交用户

View File

@ -82,3 +82,18 @@ export const overlap = async (data: PlanSubDetailVO) => {
export const getList = async (params) => { export const getList = async (params) => {
return await request.get({ url: `/heli/plan-sub-detail/getList`, params }) return await request.get({ url: `/heli/plan-sub-detail/getList`, params })
} }
export const getList1 = async (params) => {
return await request.get({ url: `/heli/plan-sub-detail/getList1`, params })
}
export const getList2 = async (params) => {
return await request.get({ url: `/heli/plan-sub-detail/getList2`, params })
}
export const getList3 = async (params) => {
return await request.get({ url: `/heli/plan-sub-detail/getList3`, params })
}
export const getList4 = async (params) => {
return await request.get({ url: `/heli/plan-sub-detail/getList4`, params })
}
export const getList5 = async (params) => {
return await request.get({ url: `/heli/plan-sub-detail/getList5`, params })
}

View File

@ -7,20 +7,25 @@
<template #header> <template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">子项目信息</span> <div class="hl-card-info-icona"></div><span class="hl-card-info-text">子项目信息</span>
<label style="display: inline-flex; align-items: center; margin-left: 40px;"> <label style="display: inline-flex; align-items: center; margin-left: 40px;">
<el-checkbox class="large-checkbox" v-model="formData.flag" style="order: 1;" /> <el-checkbox class="large-checkbox" v-model="formData.flag" style="order: 1;" @change="change"/>
<span style="order: 2; margin-left: 10px;">不显示已完成</span> <span style="order: 2; margin-left: 10px;">不显示已完成</span>
</label> </label>
</template> </template>
</el-card> </el-card>
<ContentWrap> <ContentWrap>
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" class="hl-table" height="300" border :cell-class-name="cellClassName"> <el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" class="hl-table" height="250" border @row-click="rowClick" :cell-class-name="cellClassName5">
<el-table-column type="index" width="100" fixed label="序号" align="center" /> <el-table-column type="index" width="100" fixed label="序号" align="center" />
<el-table-column label="子项目名称" align="center" prop="projectSubName" /> <el-table-column label="子项目名称" align="center" prop="projectSubName" />
<el-table-column label="任务" align="center" prop="designTask" /> <el-table-column label="任务" align="center" prop="subType" />
<el-table-column label="预计开始时间" align="center" prop="outsourcingTasks" :formatter="dateFormatter2" /> <el-table-column label="预计开始时间" align="center" prop="startTwoDimDate" :formatter="dateFormatter2" />
<el-table-column label="预计结束时间" align="center" prop="processingTask" :formatter="dateFormatter2" /> <el-table-column label="预计结束时间" align="center" prop="twoDimDate" :formatter="dateFormatter2" />
<el-table-column label="工单状态" align="center" prop="processInspection" /> <el-table-column label="工单状态" align="center" prop="status" />
<el-table-column label="生产进度" align="center" prop="assemblyTask" /> <el-table-column label="生产进度" align="center" prop="productionSchedule" >
<template #default="scope">
<el-progress :percentage="scope.row.productionSchedule" />
</template>
</el-table-column>
</el-table> </el-table>
</ContentWrap> </ContentWrap>
@ -31,18 +36,85 @@
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">工单信息</span> <div class="hl-card-info-icona"></div><span class="hl-card-info-text">工单信息</span>
</template> </template>
</el-card> </el-card>
<ContentWrap v-if="type=='设计'"> <ContentWrap v-if="type=='sheji'">
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" class="hl-table" height="500" border :cell-class-name="cellClassName"> <el-table :data="list1" :show-overflow-tooltip="true" class="hl-table" height="500" border :cell-class-name="cellClassName">
<el-table-column type="index" width="100" fixed label="序号" align="center" /> <el-table-column type="index" width="100" fixed label="序号" align="center" />
<el-table-column label="子项目名称" align="center" prop="projectSubName" /> <el-table-column label="子项目名称" align="center" prop="name" />
<el-table-column label="任务" align="center" prop="designTask" /> <el-table-column label="工艺设计" align="center" prop="type" />
<el-table-column label="预计开始时间" align="center" prop="outsourcingTasks" /> <el-table-column label="预计开始时间" align="center" prop="startTwoDimDate" :formatter="dateFormatter2"/>
<el-table-column label="预计结束时间" align="center" prop="processingTask" /> <el-table-column label="预计结束时间" align="center" prop="twoDimDate" :formatter="dateFormatter2"/>
<el-table-column label="工单状态" align="center" prop="processInspection" /> <el-table-column label="预计工时(H)" align="center" prop="designNum" />
<el-table-column label="生产进度" align="center" prop="assemblyTask" /> <el-table-column label="实际工时(H)" align="center" prop="workHours" />
<el-table-column label="负责人" align="center" prop="twoDimOwnerName" />
<el-table-column label="最后报工时间" align="center" prop="time" :formatter="dateFormatter2"/>
<el-table-column label="完工" align="center" prop="percentage" />
<el-table-column label="任务状态" align="center" prop="status" />
</el-table> </el-table>
</ContentWrap> </ContentWrap>
<ContentWrap v-if="type=='waixei'">
<el-table :data="list2" :show-overflow-tooltip="true" class="hl-table" height="500" border :cell-class-name="cellClassName1">
<el-table-column type="index" width="100" fixed label="序号" align="center" />
<el-table-column label="子项目名称" align="center" prop="projectSubName" />
<el-table-column label="零件名称" align="center" prop="materialName" />
<el-table-column label="工序" align="center" prop="procedureName" />
<el-table-column label="要求完成日期" align="center" prop="endTime" :formatter="dateFormatter2"/>
<el-table-column label="负责人" align="center" prop="ownerName" />
<el-table-column label="收货日期" align="center" prop="receivingTime" :formatter="dateFormatter2"/>
<el-table-column label="零件采购" align="center" prop="partsProcurement" />
<el-table-column label="派工单状态" align="center" prop="receiving" />
</el-table>
</ContentWrap>
<ContentWrap v-if="type=='jiagong'">
<el-table :data="list3" :show-overflow-tooltip="true" class="hl-table" height="500" border :cell-class-name="cellClassName2">
<el-table-column type="index" width="100" fixed label="序号" align="center" />
<el-table-column label="子项目名称" align="center" prop="projectSubName" />
<el-table-column label="零件名称" align="center" prop="materialName" />
<el-table-column label="工序" align="center" prop="procedureName" />
<el-table-column label="预计开始时间" align="center" prop="startTime" :formatter="dateFormatter2"/>
<el-table-column label="预计结束时间" align="center" prop="endTime" :formatter="dateFormatter2"/>
<el-table-column label="负责人" align="center" prop="ownerName" />
<el-table-column label="预计工时(天)" align="center" prop="workTime" />
<el-table-column label="实际工时(天)" align="center" prop="workingHour" />
<el-table-column label="报工进度(%)" align="center" prop="percentage" />
<el-table-column label="派工单状态" align="center" prop="report" />
<el-table-column label="是否过程检" align="center" prop="checkYn" >
<template #default="scope">
{{scope.row.checkYn=='0'?"是":"否"}}
</template>
</el-table-column>
</el-table>
</ContentWrap>
<ContentWrap v-if="type=='guochengjian'">
<el-table :data="list4" :show-overflow-tooltip="true" class="hl-table" height="500" border :cell-class-name="cellClassName3">
<el-table-column type="index" width="100" fixed label="序号" align="center" />
<el-table-column label="子项目名称" align="center" prop="projectSubName" />
<el-table-column label="零件名称" align="center" prop="materialName" />
<el-table-column label="工序" align="center" prop="procedureName" />
<el-table-column label="是否过程检" align="center" prop="checkYn" >
<template #default="scope">
{{scope.row.checkYn=='0'?"是":"否"}}
</template>
</el-table-column>
<el-table-column label="过程检状态" align="center" prop="report" />
<el-table-column label="负责人" align="center" prop="ownerName" />
</el-table>
</ContentWrap>
<ContentWrap v-if="type=='zhuangpei'">
<el-table :data="list5" :show-overflow-tooltip="true" class="hl-table" height="500" border :cell-class-name="cellClassName4">
<el-table-column type="index" width="100" fixed label="序号" align="center" />
<el-table-column label="子项目名称" align="center" prop="projectSubName" />
<el-table-column label="工序" align="center" prop="procedureName" />
<el-table-column label="预计开始时间" align="center" prop="startTime" :formatter="dateFormatter2"/>
<el-table-column label="预计结束时间" align="center" prop="endTime" :formatter="dateFormatter2"/>
<el-table-column label="负责人" align="center" prop="ownerName" />
<el-table-column label="预计工时(天)" align="center" prop="workTime" />
<el-table-column label="实际工时(天)" align="center" prop="workingHour" />
<el-table-column label="报工进度(%)" align="center" prop="percentage" />
<el-table-column label="派工单状态" align="center" prop="report" />
<el-table-column label="成品检" align="center" prop="finishedProduct" />
</el-table>
</ContentWrap>
<div class="text-center hl-footer"> <div class="text-center hl-footer">
<el-button @click="() => router.back()" size="large"> </el-button> <el-button @click="() => router.back()" size="large"> </el-button>
</div> </div>
@ -62,8 +134,13 @@ const { query } = useRoute()
const router = useRouter() const router = useRouter()
const reload = inject('reload') const reload = inject('reload')
const formLoading = ref(false) // 12 const formLoading = ref(false) // 12
const list = ref([]) // const list = ref([])
const type = ref('sheji') const list1 = ref([]) //
const list2 = ref([]) //
const list3 = ref([]) //
const list4 = ref([]) //
const list5 = ref([]) //
const type = ref('')
const formData = reactive({ const formData = reactive({
id:undefined, id:undefined,
projectSubId:undefined, projectSubId:undefined,
@ -73,13 +150,97 @@ const formData = reactive({
onMounted(async () => { onMounted(async () => {
console.log(query) console.log(query)
formData.projectSubId = query.projectSubId formData.projectSubId = query.projectSubId
}) getList()
const queryParams = reactive({
projectSubId:formData.projectSubId
})
if (list.value){
const hasDesignTask = list.value.some(item => item.subType === "设计任务");
if (hasDesignTask){
list1.value= await PlansubdetailApi.getList1(queryParams)
type.value='sheji'
}
}
})
const change = (val) => {
getList()
}
/** 处理某一行的点击 */
const rowClick = async (row) => {
console.log(row);
const queryParams = reactive({
projectSubId:formData.projectSubId,
})
type.value=''
if (row.subType=='设计任务'){
list1.value= await PlansubdetailApi.getList1(queryParams)
if (list1.value.length>0){
type.value='sheji'
}
}else if (row.subType=='外协任务'){
list2.value= await PlansubdetailApi.getList2(queryParams)
if (list2.value.length>0){
type.value='waixei'
}
}else if (row.subType=='加工任务'){
list3.value= await PlansubdetailApi.getList3(queryParams)
if (list3.value.length>0){
type.value='jiagong'
}
}else if (row.subType=='过程检任务'){
list4.value= await PlansubdetailApi.getList4(queryParams)
if (list4.value.length>0){
type.value='guochengjian'
}
}else{
list5.value= await PlansubdetailApi.getList5(queryParams)
if (list5.value.length>0){
type.value='zhuangpei'
}
}
}
const cellClassName = ({ row,column }) => {
if (column.label === '任务状态' && row.statusFlag) {
return row.statusFlag === '1' ? 'warning-row1' : row.statusFlag === '0' ?'warning-row2':"";
}
}
const cellClassName1 = ({ row,column }) => {
if (column.label === '派工单状态' && row.receivingFlag) {
return row.receivingFlag === '1' ? 'warning-row1' :"";
}
}
const cellClassName2 = ({ row,column }) => {
if (column.label === '派工单状态' && row.reportFlag) {
return row.reportFlag === '1' ? 'warning-row1' :"";
}
}
const cellClassName3 = ({ row,column }) => {
if (column.label === '过程检状态' && row.reportFlag) {
return row.reportFlag === '1' ? 'warning-row1' :"";
}
}
const cellClassName4 = ({ row,column }) => {
if (column.label === '派工单状态' && row.reportFlag) {
return row.reportFlag === '1' ? 'warning-row1' :"";
}
}
const cellClassName5 = ({ row,column }) => {
if (column.label === '工单状态' && row.statusFlag) {
return row.statusFlag === '1' ? 'warning-row1' : row.statusFlag === '0' ?'warning-row2':"";
}
}
/** 查询设计列表 */ /** 查询设计列表 */
const getList = async () => { const getList = async () => {
loading.value = true loading.value = true
try { try {
const data = await PlansubdetailApi.getPartProcess(formData) const queryParams = reactive({
projectSubId:formData.projectSubId,
flag:formData.flag==true?"0":"1"
})
const data = await PlansubdetailApi.getList(queryParams)
list.value = data list.value = data
} finally { } finally {
loading.value = false loading.value = false
@ -94,6 +255,12 @@ const getList = async () => {
border: solid 1px orange; border: solid 1px orange;
outline: solid 1px orange; outline: solid 1px orange;
} }
.warning-row1 {
background-color:#F08080 !important;
}
.warning-row2 {
background-color: #1E90FF !important; /* 道奇蓝 */
}
.large-checkbox { .large-checkbox {
transform: scale(1.5); /* 方法1使用scale放大 */ transform: scale(1.5); /* 方法1使用scale放大 */
/* 或者 */ /* 或者 */

View File

@ -73,9 +73,10 @@
placeholder="工艺结束日期" /> placeholder="工艺结束日期" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8" >
<el-form-item label="工艺进度" prop="processProgress"> <el-form-item label="工艺进度" prop="processProgress" >
<el-input class="!w-265px" placeholder="工艺进度" v-model="formData.processProgress" disabled /> <el-input class=" !w-265px" :class="{ 'red-background': formData.processFlag == '1' }" placeholder="工艺进度" v-model="formData.processProgress" disabled
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -155,11 +156,16 @@ const formData = ref({
projectEndTime:undefined, projectEndTime:undefined,
projectProgress:undefined, projectProgress:undefined,
craftEndDate:undefined, craftEndDate:undefined,
processProgress:undefined processProgress:undefined,
processFlag:undefined
}) })
const queryFormRef = ref() // const queryFormRef = ref() //
/** 查询列表 */ /** 查询列表 */
const getList = async () => { const getList = async () => {
if ((queryParams.projectCode==null||queryParams.projectCode=='')&&(queryParams.projectSubName==null||queryParams.projectSubName=='')&&(queryParams.projectName==null ||queryParams.projectName=='')) {
message.error("必须输入查询条件查询")
return
}
loading.value = true loading.value = true
try { try {
const data = await PlanApi.getPartProcess(queryParams) const data = await PlanApi.getPartProcess(queryParams)
@ -173,22 +179,19 @@ const getList = async () => {
const cellClassName = ({ row,column }) => { const cellClassName = ({ row,column }) => {
if (column.label === '设计任务' && row.designTaskFlag) { if (column.label === '设计任务' && row.designTaskFlag) {
return row.designTaskFlag === '1' ? 'warning-row1' : 'warning-row2'; return row.designTaskFlag === '1' ? 'warning-row1' :row.designTaskFlag === '0' ? 'warning-row2':"";
} }
if (column.label === '外协任务' && row.outsourcingTasksFlag) { if (column.label === '外协任务' && row.outsourcingTasksFlag) {
return row.outsourcingTasksFlag === '1' ? 'warning-row1' : 'warning-row2'; return row.outsourcingTasksFlag === '1' ? 'warning-row1' :row.outsourcingTasksFlag === '0' ? 'warning-row2':"";
} }
if (column.label === '加工任务' && row.processingTaskFlag) { if (column.label === '加工任务' && row.processingTaskFlag) {
return row.processingTaskFlag === '1' ? 'warning-row1' : 'warning-row2'; return row.processingTaskFlag === '1' ? 'warning-row1' : row.processingTaskFlag === '0' ?'warning-row2':"";
} }
if (column.label === '过程检任务' && row.processInspectionFlag) { if (column.label === '过程检任务' && row.processInspectionFlag) {
return row.processInspectionFlag === '1' ? 'warning-row1' : 'warning-row2'; return row.processInspectionFlag === '1' ? 'warning-row1' : row.processInspectionFlag === '0' ? 'warning-row2':"";
} }
if (column.label === '装配任务' && row.assemblyTaskFlag) { if (column.label === '装配任务' && row.assemblyTaskFlag) {
console.log(row.assemblyTaskFlag) return row.assemblyTaskFlag === '1' ? 'warning-row1' : row.assemblyTaskFlag === '0' ?'warning-row2':"";
console.log(row.assemblyTaskFlag === '1')
console.log(row.assemblyTaskFlag === '1' ? 'warning-row1' : 'warning-row2')
return row.assemblyTaskFlag === '1' ? 'warning-row1' : 'warning-row2';
} }
// return ''; // return '';
} }
@ -196,7 +199,7 @@ const cellClassName = ({ row,column }) => {
const handleQuery = () => { const handleQuery = () => {
queryParams.pageNo = 1 queryParams.pageNo = 1
getList() getList();
} }
/** 重置按钮操作 */ /** 重置按钮操作 */
@ -236,18 +239,16 @@ window.addEventListener('beforeunload', () => {
routeParamsCache.set(routeValue.value, plainParams); routeParamsCache.set(routeValue.value, plainParams);
}); });
</script> </script>
<style > <style scoped>
.el-dropdown-link {
cursor: pointer; :deep(.warning-row1) {
margin: 5px;
color: var(--el-color-primary);
display: flex;
align-items: center;
}
.warning-row1 {
background-color:#F08080 !important; background-color:#F08080 !important;
} }
.warning-row2 { :deep(.warning-row2) {
background-color: #1E90FF !important; /* 道奇蓝 */ background-color: #1E90FF !important; /* 道奇蓝 */
} }
.red-background :deep(.el-input__wrapper) {
background-color: #F08080 !important;
}
</style> </style>