工作台接口开发

liweidong
李涛 2 months ago
parent b27ba100aa
commit 2bfdf99a95
  1. 213
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/WorkPlanDto.java
  2. 87
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/MesMakeRecVO.java
  3. 21
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PrMakeRecController.java
  4. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/RbProduceManageController.java
  5. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.java
  6. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.xml
  7. 56
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MakeRecMapper.xml
  8. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java
  9. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMakeRecService.java
  10. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java
  11. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java
  12. 398
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MakeRecServiceImpl.java
  13. 25
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java

@ -1,10 +1,12 @@
package org.springblade.desk.produce.pojo.dto; package org.springblade.desk.produce.pojo.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import org.springblade.desk.order.pojo.entity.YieldOrder; import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.produce.pojo.entity.WorkOrder; import org.springblade.desk.produce.pojo.entity.WorkOrder;
import org.springblade.desk.produce.pojo.entity.WorkPlan; import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.pojo.enums.WorkOrderEnum;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
@ -15,151 +17,154 @@ import java.util.Date;
* @author lyj * @author lyj
* @date 2022-11-01 10:16 * @date 2022-11-01 10:16
*/ */
@Builder
@Data @Data
public class WorkPlanDto implements Serializable { public class WorkPlanDto implements Serializable {
/** @Schema(description = "下级B号")
* 下级B号
*/
private String nextRoam; private String nextRoam;
/**
* 生产单号 @Schema(description = "生产单号")
*/
private String yoCode; private String yoCode;
/**
* 计划单号 @Schema(description = "计划单号")
*/
private String poCode; private String poCode;
/**
* 零件号 @Schema(description = "零件号")
*/
private String partCode; private String partCode;
/**
* 产品型号 @Schema(description = "产品型号")
*/
private String productType; private String productType;
/**
* 名称 @Schema(description = "名称")
*/
private String partName; private String partName;
/**
* 镀种 @Schema(description = "镀种")
*/
private String plate; private String plate;
/**
* 生产标识 @Schema(description = "生产标识")
*/
private String prodIdent; private String prodIdent;
/**
* 使用部门 @Schema(description = "使用部门")
*/
private String useDept; private String useDept;
/**
* 面积 @Schema(description = "面积(㎡)")
*/
private Double poArea; private Double poArea;
/**
* 需求交期 @Schema(description = "需求交期")
*/
private Date demandDate; private Date demandDate;
/**
* 计划员 @Schema(description = "计划员")
*/
private String planUser; private String planUser;
/**
* 计划下达时间 @Schema(description = "下级B号")
*/
private Date releaseDate; private Date releaseDate;
/**
* 一级工艺线路 @Schema(description = "一级工艺线路")
*/
private String primaryCraft; private String primaryCraft;
/** @Schema(description = "路线卡号")
* 路线卡号
*/
private String cardNo; private String cardNo;
/**
* 批次号 @Schema(description = "批次号")
*/
private String batchNo; private String batchNo;
/**
* 订单编号 @Schema(description = "订单编号")
*/
private String woCode; private String woCode;
/**
* 加工数量 @Schema(description = "加工数量")
*/
private Double makeQty; private Double makeQty;
/**
* 未报工数量 @Schema(description = "未报工数量")
*/
private Double notWorkQty; private Double notWorkQty;
/**
* 已报工数量 @Schema(description = "已报工数量")
*/
private Double workQty; private Double workQty;
/**
* 报废 @Schema(description = "报废")
*/
private Double scrapQty; private Double scrapQty;
/**
* 计划完工日期 @Schema(description = "计划完工日期")
*/ private String planEndDate;
private Date planEndDate;
/** @Schema(description = "计划开始日期")
* 已入库数量 private String planStartDate;
*/
@Schema(description = "已入库数量")
private Double inventoryQty; private Double inventoryQty;
/**
* 已入库数量 @Schema(description = "已入库数量")
*/
private Double notInQty; private Double notInQty;
/**
* 运行状态 @Schema(description = "运行状态")
*/
public String runStatusTitle; public String runStatusTitle;
/**
* 工序状态 @Schema(description = "工序状态")
*/ public Integer status;
public Short status;
/** @Schema(description = "优先级")
* 优先级
*/
public String priorityTitle; public String priorityTitle;
/**
* 领料状态 @Schema(description = "领料状态")
*/
public String pickingStatusTitle; public String pickingStatusTitle;
/**
* 是否绑定挂次号 @Schema(description = "是否绑定挂次号")
*/
public Boolean isBinging; public Boolean isBinging;
/** @Schema(description = "当前工序")
* 当前工序
*/
public Long currentWpId; public Long currentWpId;
public Long wpId; public Long wpId;
@Schema(description = "当前工序内容")
public String currentWpTitle; public String currentWpTitle;
@Schema(description = "当前工序班组")
public String currentMakeTeam; public String currentMakeTeam;
/** @Schema(description = "上序内容")
* 上序
*/
public String frontWpTitle; public String frontWpTitle;
@Schema(description = "上序班组")
public String frontMakeTeam; public String frontMakeTeam;
/**
* 下序
*/
public String nextWpTitle;
public String nextMakeTeam;
private YieldOrder yieldOrder; @Schema(description = "下序内容")
public String nextWpTitle;
private WorkOrder workOrder; @Schema(description = "下序班组")
public String nextMakeTeam;
private WorkPlan workPlan; public WorkPlanDto(YieldOrder yo, WorkOrder wo, WorkPlan currentWP,Boolean isBinging) {
this.nextRoam = yo.getRoamNoNext();
this.yoCode = yo.getYoCode();
this.poCode = yo.getYpCode();
this.partCode = yo.getPartCode();
this.productType = yo.getProductType();
this.partName = yo.getPartName();
this.plate = yo.getPlate();
this.prodIdent = yo.getProductIdent();
this.useDept = yo.getUseDept();
this.poArea = yo.getYpArea();
this.demandDate = yo.getDemandDate();
this.planUser = yo.getPlanUser();
this.releaseDate = yo.getReleaseDate();
this.primaryCraft = yo.getPrimaryCraft();
this.cardNo = wo.getCardNo();
this.batchNo = wo.getBatchNo();
this.woCode = wo.getWoCode();
this.makeQty = currentWP.getQualifiedQty();
this.notWorkQty = currentWP.getQualifiedQty() - currentWP.getWorkQty() - currentWP.getScrapQty();
this.workQty = currentWP.getWorkQty();
this.scrapQty = currentWP.getScrapQty();
this.planStartDate = wo.getPlanStartDate();
this.planEndDate = wo.getPlanEndDate();
this.inventoryQty = wo.getInventoryQty();
this.notInQty = wo.getMakeQty() - wo.getInventoryQty();
this.runStatusTitle = WorkOrderEnum.getName(wo.getRunStatus());
this.priorityTitle = WorkOrder.priorityMap.get(wo.getPriority());
this.pickingStatusTitle = WorkOrder.pickingStatusMap.get(wo.getPickingStatus());
this.isBinging = isBinging;
this.currentWpId = currentWP.getId();
this.wpId = currentWP.getId();
this.status = currentWP.getStatus();
}
} }

@ -1,10 +1,12 @@
package org.springblade.desk.produce.pojo.vo; package org.springblade.desk.produce.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import org.springblade.desk.produce.pojo.entity.MakeRec; import org.springblade.desk.produce.pojo.entity.MakeRec;
import java.io.Serial; import java.io.Serial;
import java.util.Date;
/** /**
* 加工记录 视图实体类 * 加工记录 视图实体类
@ -13,9 +15,86 @@ import java.io.Serial;
* @since 2026-02-04 * @since 2026-02-04
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true) public class MesMakeRecVO {
public class MesMakeRecVO extends MakeRec {
@Serial
private static final long serialVersionUID = 1L;
@Schema(description = "报工记录ID")
private Long mrId;
@Schema(description = "报工时间")
private Date makeTime;
@Schema(description = "加工数量")
private Double workQty;
@Schema(description = "报废数量")
private Double scrapQty;
@Schema(description = "报工人")
private Long worker;
@Schema(description = "报工人姓名")
private String workerName;
@Schema(description = "本序ID")
private Long ppsId;
@Schema(description = "本序名称")
private String ppsName;
@Schema(description = "本序加工班组")
private Long makeTeam;
@Schema(description = "本序加工班组")
private String makeTeamName;
@Schema(description = "上序ID")
private Long frontPpsId;
@Schema(description = "上序名称")
private String frontPpsName;
@Schema(description = "上序加工班组")
private Long frontMakeTeam;
@Schema(description = "上序加工班组")
private String frontMakeTeamName;
@Schema(description = "下序ID")
private Long nextPpsId;
@Schema(description = "下序名称")
private String nextPpsName;
@Schema(description = "下序加工班组")
private Long nextMakeTeam;
@Schema(description = "下序加工班组")
private String nextMakeTeamName;
@Schema(description = "车间订单号")
private String woCode;
@Schema(description = "流程卡号")
private String cardNo;
@Schema(description = "零件号")
private String partCode;
@Schema(description = "零件名称")
private String partName;
@Schema(description = "产品型号")
private String productType;
@Schema(description = "批次号")
private String batchNo;
@Schema(description = "镀种")
private String plate;
@Schema(description = "生产标识")
private String productIdent;
@Schema(description = "面积(㎡)")
private Double ypArea;
} }

@ -16,7 +16,7 @@ import org.springblade.desk.produce.service.IMakeRecService;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
/** /**
* 加工记录 控制器 * 工作台 控制器
* *
* @author BladeX * @author BladeX
* @since 2025-11-28 * @since 2025-11-28
@ -24,42 +24,43 @@ import org.springframework.web.bind.annotation.*;
@RestController @RestController
@AllArgsConstructor @AllArgsConstructor
@RequestMapping("/prMakeRec") @RequestMapping("/prMakeRec")
@Tag(name = "加工记录", description = "接口") @Tag(name = "工作台", description = "接口")
public class PrMakeRecController extends BladeController { public class PrMakeRecController extends BladeController {
private final IMakeRecService makeRecService; private final IMakeRecService makeRecService;
@GetMapping(value = "/loadCurrentWp/{cardNo}") @GetMapping(value = "/loadCurrentWp/{cardNo}")
@ApiOperationSupport(order = 1) @ApiOperationSupport(order = 1)
@Operation(summary = "加载当前工序", description = "传入cardNo") @Operation(summary = "工序报工-加载当前工序", description = "传入cardNo")
public R loadSubOrder(@PathVariable String cardNo) { public R loadSubOrder(@PathVariable String cardNo) {
return R.data(makeRecService.loadCurrentWp(cardNo)); return R.data(makeRecService.loadCurrentWp(cardNo));
} }
@Operation(summary = "增加加工记录")
@Operation(summary = "报工提交")
@PostMapping("/saveMakeRec") @PostMapping("/saveMakeRec")
public R saveMakeRec(@RequestBody MakeRecDTO makeRecDTO) { public R saveMakeRec(@RequestBody MakeRecDTO makeRecDTO) {
makeRecService.saveMakeRec(makeRecDTO); return R.status(makeRecService.saveMakeRec(makeRecDTO)) ;
return R.success() ;
} }
@GetMapping("/queryMakeRec") @GetMapping("/queryMakeRec")
@ApiOperationSupport(order = 3) @ApiOperationSupport(order = 3)
@Operation(summary = "工记录", description = "传入mesMakeRec") @Operation(summary = "工记录", description = "传入mesMakeRec")
public R<IPage<MesMakeRecVO>> page(MesMakeRecVO mesMakeRec, Query query) { public R<IPage<MesMakeRecVO>> page(MesMakeRecVO mesMakeRec, Query query) {
IPage<MesMakeRecVO> pages = makeRecService.selectMesMakeRecPage(Condition.getPage(query), mesMakeRec); return R.data(makeRecService.selectMesMakeRecPage(Condition.getPage(query), mesMakeRec));
return R.data(pages);
} }
@GetMapping(value = "/loadNotReceived/{cardNo}") @GetMapping(value = "/loadNotReceived/{cardNo}")
@Operation(summary = "任务接收查询", description = "传入cardNo") @Operation(summary = "任务接收查询", description = "传入cardNo")
public R loadNotReceived(@PathVariable String cardNo) { public R loadNotReceived(@PathVariable String cardNo) {
return R.data(makeRecService.loadNotReceived(cardNo)); return R.data(makeRecService.loadNotReceived(cardNo));
} }
@GetMapping(value = "/afterPlaReceive/{cardNo}") @GetMapping(value = "/afterPlaReceive/{cardNo}")
@Operation(summary = "加载镀后接收数据", description = "传入cardNo") @Operation(summary = "加载镀后接收数据", description = "传入cardNo")
public R afterPlaReceive(@PathVariable String cardNo) { public R afterPlaReceive(@PathVariable String cardNo) {
return R.data(makeRecService.afterPlaReceive(cardNo)); return R.data(makeRecService.afterPlaReceive(cardNo));
} }
@Operation(summary = "手动维护生产追溯") @Operation(summary = "手动维护生产追溯")
@PostMapping("/saveRetrospectDefend") @PostMapping("/saveRetrospectDefend")
public R saveRetrospectDefend(@RequestBody RetrospectDefendDTO retrospectDefendDTO) { public R saveRetrospectDefend(@RequestBody RetrospectDefendDTO retrospectDefendDTO) {

@ -98,11 +98,7 @@ public class RbProduceManageController extends BladeController {
@ApiOperationSupport(order = 8) @ApiOperationSupport(order = 8)
@Operation(summary = "更改车间订单优先级", description = "传入WorkOrder") @Operation(summary = "更改车间订单优先级", description = "传入WorkOrder")
public R updatePriority(@RequestBody UpdatePriorityDTO updatePriorityDTO) { public R updatePriority(@RequestBody UpdatePriorityDTO updatePriorityDTO) {
WorkOrder wo = workOrderService.getById(updatePriorityDTO.getWoId()); return R.data(workOrderService.updatePriority(updatePriorityDTO));
// wo.setPriority(WorkOrder.PRIORITY_SCH_IMP);
wo.setPriority(updatePriorityDTO.getPriority());
wo.setDemandDate(updatePriorityDTO.getDemandDate());
return R.data(workOrderService.updateById(wo));
} }
@GetMapping(value = "/getWorkOrderCache/{woId}") @GetMapping(value = "/getWorkOrderCache/{woId}")

@ -22,4 +22,6 @@ public interface MacToolUseMapper extends BaseMapper<MacToolUse> {
List<ProduceMonitorSlotListVO> listSlotInfo(Long id, int isGr, int isCx); List<ProduceMonitorSlotListVO> listSlotInfo(Long id, int isGr, int isCx);
MesQcProduceRunEntity getBoxInfoByWpIdMtnCode(Long id); MesQcProduceRunEntity getBoxInfoByWpIdMtnCode(Long id);
MacToolUse queryByParams(Long wpId, Integer rsBool, Integer fsBool, Integer ecBool);
} }

@ -84,6 +84,13 @@
ORDER BY ORDER BY
c.IN_DATE DESC c.IN_DATE DESC
</select> </select>
<select id="queryByParams" resultType="org.springblade.desk.produce.pojo.entity.MacToolUse">
select * from (select * from MES_MAC_TOOL_USE where IS_DELETED = 0 and WP_ID = #{wpId}
<if test="rsBool == 1">and BS_RACK_SET is not null</if>
<if test="fsBool == 1">and BS_FEI_BA_SET is not null</if>
<if test="ecBool == 1">and EQUIPMENT_CARD is not null</if>
order by MTN_CODE) where rownum = 1
</select>
</mapper> </mapper>

@ -29,10 +29,60 @@
<result column="FLAG_QTY" property="flagQty"/> <result column="FLAG_QTY" property="flagQty"/>
<result column="FLAG_COLOUR_ONE" property="flagColourOne"/> <result column="FLAG_COLOUR_ONE" property="flagColourOne"/>
</resultMap> </resultMap>
<select id="selectMesMakeRecPage" resultType="org.springblade.desk.produce.pojo.vo.MesMakeRecVO">
select
mr.id AS mrId,
mr.MAKE_TIME AS makeTime,
mr.WORK_QTY AS workQty,
mr.SCRAP_QTY AS scrapQty,
mr.WORKER AS worker,
wp.PPS_ID AS ppsId,
wp.MAKE_TEAM AS makeTeam,
fwp.PPS_ID AS frontPpsId,
fwp.MAKE_TEAM AS frontMakeTeam,
nwp.PPS_ID AS nextPpsId,
nwp.MAKE_TEAM AS nextMakeTeam,
wo.WO_CODE AS woCode,
wo.CARD_NO AS cardNo,
yo.PART_CODE AS partCode,
yo.PART_NAME AS partName,
yo.PRODUCT_TYPE AS productType,
yo.BATCH_NO AS batchNo,
yo.PLATE AS plate,
yo.PRODUCT_IDENT AS productIdent,
yo.YP_AREA AS ypArea
FROM MES_MAKE_REC mr
LEFT JOIN MES_WORK_PLAN wp ON mr.WP_ID = wp.ID
LEFT JOIN MES_WORK_PLAN fwp ON wp.FRONT_WP_ID = fwp.ID
LEFT JOIN MES_WORK_PLAN nwp ON wp.NEXT_WP_ID = nwp.ID
LEFT JOIN MES_WORK_ORDER wo ON wp.WO_ID = wo.ID
LEFT JOIN MES_YIELD_ORDER yo ON wo.YO_ID = yo.ID
<where>
mr.IS_DELETED = 0 and a.worker = #{mesMakeRec.worker}
<if test="mesMakeRec.woCode != null and mesMakeRec.woCode != ''">
AND wo.WO_CODE LIKE concat(concat('%', #{mesMakeRec.worker}),'%')
</if>
<if test="mesMakeRec.cardNo != null and mesMakeRec.cardNo != ''">
AND wo.CARD_NO LIKE concat(concat('%', #{mesMakeRec.cardNo}),'%')
</if>
<if test="mesMakeRec.partCode != null and mesMakeRec.partCode != ''">
AND yo.PART_CODE LIKE concat(concat('%', #{mesMakeRec.partCode}),'%')
</if>
<if test="mesMakeRec.partName != null and mesMakeRec.partName != ''">
AND yo.PART_NAME LIKE concat(concat('%', #{mesMakeRec.partName}),'%')
</if>
<if test="mesMakeRec.batchNo != null and mesMakeRec.batchNo != ''">
AND yo.BATCH_NO LIKE concat(concat('%', #{mesMakeRec.batchNo}),'%')
</if>
<if test="mesMakeRec.productType != null and mesMakeRec.productType != ''">
AND yo.PRODUCT_TYPE LIKE concat(concat('%', #{mesMakeRec.productType}),'%')
</if>
<if test="mesMakeRec.productIdent != null and mesMakeRec.productIdent != ''">
AND yo.PRODUCT_IDENT LIKE concat(concat('%', #{mesMakeRec.productIdent}),'%')
</if>
</where>
<select id="selectMesMakeRecPage" resultMap="mesMakeRecResultMap">
select * from MES_MAKE_REC where is_deleted = 0
</select> </select>
</mapper> </mapper>

@ -50,4 +50,6 @@ public interface IMacToolUseService extends BaseService<MacToolUse> {
MacToolUse getDataByWpIdAndIndex(Long id, String number); MacToolUse getDataByWpIdAndIndex(Long id, String number);
MacToolUse getHangNumIsNull(Long id); MacToolUse getHangNumIsNull(Long id);
MacToolUse queryByParams(Long id, Integer rsBool, Integer fsBool, Integer ecBool);
} }

@ -26,7 +26,7 @@ public interface IMakeRecService extends BaseService<MakeRec> {
* 增加工序记录 * 增加工序记录
* @param makeRecDTO * @param makeRecDTO
*/ */
void saveMakeRec(MakeRecDTO makeRecDTO); boolean saveMakeRec(MakeRecDTO makeRecDTO);
IPage<MesMakeRecVO> selectMesMakeRecPage(IPage<MesMakeRecVO> page, MesMakeRecVO mesMakeRec); IPage<MesMakeRecVO> selectMesMakeRecPage(IPage<MesMakeRecVO> page, MesMakeRecVO mesMakeRec);

@ -2,10 +2,7 @@ package org.springblade.desk.produce.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService; import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.produce.pojo.dto.InBatchesDTO; import org.springblade.desk.produce.pojo.dto.*;
import org.springblade.desk.produce.pojo.dto.ListProProcessDTO;
import org.springblade.desk.produce.pojo.dto.QueryByReadStatusDTO;
import org.springblade.desk.produce.pojo.dto.WorkOrderDTO;
import org.springblade.desk.produce.pojo.entity.WorkOrder; import org.springblade.desk.produce.pojo.entity.WorkOrder;
import org.springblade.desk.produce.pojo.entity.WorkOrderRun; import org.springblade.desk.produce.pojo.entity.WorkOrderRun;
import org.springblade.desk.produce.pojo.entity.WorkPlan; import org.springblade.desk.produce.pojo.entity.WorkPlan;
@ -190,4 +187,6 @@ public interface IWorkOrderService extends BaseService<WorkOrder> {
* @param workOrder 订单 * @param workOrder 订单
*/ */
void updateHostWorkUnit(WorkOrder workOrder); void updateHostWorkUnit(WorkOrder workOrder);
boolean updatePriority(UpdatePriorityDTO updatePriorityDTO);
} }

@ -127,6 +127,11 @@ public class MacToolUseServiceImpl extends BaseServiceImpl<MacToolUseMapper, Mac
return CollectionUtils.isNotEmpty(macToolUses) ? macToolUses.get(0) : null; return CollectionUtils.isNotEmpty(macToolUses) ? macToolUses.get(0) : null;
} }
@Override
public MacToolUse queryByParams(Long wpId, Integer rsBool, Integer fsBool, Integer ecBool) {
return baseMapper.queryByParams(wpId, rsBool, fsBool, ecBool);
}
public static final int time2Integer(Date d) { public static final int time2Integer(Date d) {
Calendar cal = Calendar.getInstance(); Calendar cal = Calendar.getInstance();
cal.setTime(d); cal.setTime(d);

@ -7,12 +7,15 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import jodd.bean.BeanUtil; import jodd.bean.BeanUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springblade.core.log.exception.ServiceException; import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.desk.basic.pojo.entity.RelTeamSetUser; import org.springblade.desk.basic.pojo.entity.RelTeamSetUser;
import org.springblade.desk.basic.pojo.entity.TeamSet; import org.springblade.desk.basic.pojo.entity.TeamSet;
import org.springblade.desk.basic.pojo.entity.UserRight;
import org.springblade.desk.basic.service.IRelTeamSetUserService; import org.springblade.desk.basic.service.IRelTeamSetUserService;
import org.springblade.desk.basic.service.IUserRightService;
import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity; import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity;
import org.springblade.desk.dashboard.pojo.entity.BsTeamSetEntity; import org.springblade.desk.dashboard.pojo.entity.BsTeamSetEntity;
import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
@ -36,14 +39,14 @@ import org.springblade.desk.produce.pojo.vo.WorkPlanLoadVO;
import org.springblade.desk.produce.service.*; import org.springblade.desk.produce.service.*;
import org.springblade.desk.quality.pojo.entity.AuditFile; import org.springblade.desk.quality.pojo.entity.AuditFile;
import org.springblade.desk.quality.service.IAuditFileService; import org.springblade.desk.quality.service.IAuditFileService;
import org.springblade.system.cache.UserCache;
import org.springblade.system.pojo.entity.DataScope; import org.springblade.system.pojo.entity.DataScope;
import org.springblade.system.pojo.entity.User;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.*;
import java.util.Date; import java.util.function.Function;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -80,6 +83,12 @@ public class MakeRecServiceImpl extends BaseServiceImpl<MakeRecMapper, MakeRec>
private final IMesEquipmentCardService mesEquipmentCardService; private final IMesEquipmentCardService mesEquipmentCardService;
private final IUserRightService userRightService;
private final IMesRbFilePreserveSlotService mesRbFilePreserveSlotService;
private final IMesRbFilePreserveDetailService mesRbFilePreserveDetailService;
@Override @Override
public WorkPlanDto loadCurrentWp(String cardNo) { public WorkPlanDto loadCurrentWp(String cardNo) {
WorkOrder wo = workOrderMapper.getWorkOrderByCardNo(cardNo, (short) 0); WorkOrder wo = workOrderMapper.getWorkOrderByCardNo(cardNo, (short) 0);
@ -95,7 +104,7 @@ public class MakeRecServiceImpl extends BaseServiceImpl<MakeRecMapper, MakeRec>
if (!WorkPlan.STATUS_START.equals(wp.getStatus())) { if (!WorkPlan.STATUS_START.equals(wp.getStatus())) {
throw new ServiceException("当前工序已报工完成!"); throw new ServiceException("当前工序已报工完成!");
} }
// this.checkTeamWorkPlan(wp, prWorkPlanService.getTeamId(userInfo.getUserId())); this.checkTeamWorkPlan(wp, this.getTeamId(AuthUtil.getUserId()));
boolean isBinging = false; boolean isBinging = false;
// 查询当前工序是否绑定了挂次号 // 查询当前工序是否绑定了挂次号
long count = macToolUseService.count(Wrappers.<MacToolUse>lambdaQuery().eq(MacToolUse::getWpId, wp.getId()).isNotNull(MacToolUse::getHangNum)); long count = macToolUseService.count(Wrappers.<MacToolUse>lambdaQuery().eq(MacToolUse::getWpId, wp.getId()).isNotNull(MacToolUse::getHangNum));
@ -103,89 +112,105 @@ public class MakeRecServiceImpl extends BaseServiceImpl<MakeRecMapper, MakeRec>
isBinging = true; isBinging = true;
} }
YieldOrder yieldOrder = yieldOrderService.getById(wo.getYoId()); YieldOrder yieldOrder = yieldOrderService.getById(wo.getYoId());
return WorkPlanDto.builder().workPlan(wp).workOrder(wo).yieldOrder(yieldOrder).isBinging(isBinging).build(); WorkPlanDto workPlanDto = new WorkPlanDto(yieldOrder, wo, wp, isBinging);
workPlanDto.setCurrentWpTitle("");
workPlanDto.setCurrentMakeTeam("");
workPlanDto.setFrontWpTitle("");
workPlanDto.setFrontMakeTeam("");
workPlanDto.setNextWpTitle("");
workPlanDto.setNextMakeTeam("");
return workPlanDto;
}
private void checkTeamWorkPlan(WorkPlan wp, List<Long> teamId) {
Long tsId;
//判断是否特殊工序,如果是特殊工序验证附属班组,反之则为分派班组
//20260304 逻辑更改,若存在附属班组,则验证附属班组,不存在附属班组,验证加工班组
if (wp.getSubsidiaryTeam() != null) {
tsId = wp.getSubsidiaryTeam();
} else {
tsId = wp.getMakeTeam();
}
if (teamId == null) {
throw new ServiceException("当前登录人无对应班组!");
}
if (!teamId.contains(tsId)) {
throw new ServiceException("当前工序不是登录人所在班组工序,不能操作!");
}
}
private List<Long> getTeamId(Long userId) {
List<UserRight> bsTeamSet = userRightService.list(Wrappers.lambdaQuery(UserRight.class).eq(UserRight::getUserId, userId).eq(UserRight::getUrType, "bs_team_set"));
if (CollectionUtils.isEmpty(bsTeamSet)) {
return null;
}
return bsTeamSet.stream().map(UserRight::getTheId).toList();
} }
@Override @Override
public void saveMakeRec(MakeRecDTO makeRecDTO) { public boolean saveMakeRec(MakeRecDTO makeRecDTO) {
WorkPlan wp = workPlanMapper.selectById(makeRecDTO.getWpId()); WorkPlan wp = workPlanMapper.selectById(makeRecDTO.getWpId());
if (!WorkPlan.STATUS_START.equals(wp.getStatus())) { if (!WorkPlan.STATUS_START.equals(wp.getStatus())) {
throw new ServiceException("product.prWorkPlan.workOk"); throw new ServiceException("当前工序已报工完成!");
} }
MacToolUse mtu = null; MacToolUse mtu;
DsProcessEntity dsProcess = dsProcessService.getById(wp.getPpsId()); DsProcessEntity dsProcess = dsProcessService.getById(wp.getPpsId());
DsProcessEntity frontProcess = dsProcessService.getById(wp.getFrontWpId());
//如果是上挂工序,需判定是否绑定挂具 //如果是上挂工序,需判定是否绑定挂具
if (dsProcess.getProcessName().equals("上挂")) { if ("上挂".equals(dsProcess.getProcessName())) {
mtu = macToolUseService.getOne(Wrappers.<MacToolUse>lambdaQuery().eq(MacToolUse::getWpId, wp.getId()) mtu = macToolUseService.queryByParams(wp.getId(), 1, 0, 0);
.isNotNull(MacToolUse::getBsRackSet));
if (mtu == null) { if (mtu == null) {
throw new ServiceException("product.prWorkPlan.not.bing.bsRackSet"); throw new ServiceException("上挂工序未绑定挂具!");
} }
// 如果上序是上挂工序、并且本序是主工序,则代表本序是 需要绑定飞靶及设备的工序 或者手动维护生产追溯信息 // 如果上序是上挂工序、并且本序是主工序,则代表本序是 需要绑定飞靶及设备的工序 或者手动维护生产追溯信息
} else if (wp.getFrontWpId() != null && dsProcess.getProcessName().equals("上挂") && wp.getCruxProcess().equals("是")) { } else if (wp.getFrontWpId() != null && "上挂".equals(frontProcess.getProcessName()) && "1".equals(wp.getCruxProcess())) {
mtu = macToolUseService.getOne(Wrappers.<MacToolUse>lambdaQuery().eq(MacToolUse::getWpId, wp.getId()) mtu = macToolUseService.queryByParams(wp.getId(), 1, 1, 1);
.isNotNull(MacToolUse::getBsRackSet).isNotNull(MacToolUse::getBsFeiBaSet).isNotNull(MacToolUse::getEquipmentCard));
if (mtu == null) { if (mtu == null) {
// 验证是否维护了生产追溯信息 // 验证是否维护了生产追溯信息
List<String> mtnCodeList = macToolUseService.listObjs(Wrappers.<MacToolUse>lambdaQuery().eq(MacToolUse::getWpId, wp.getId()).select(MacToolUse::getMtnCode)); List<MesQcProduceRunEntity> qcProduceRunList = mesQcProduceRunService.listPrByWpId(wp.getId());
List<MesQcProduceRunEntity> qcProduceRunList = mesQcProduceRunService.list(Wrappers.<MesQcProduceRunEntity>lambdaQuery() if (!(qcProduceRunList != null && !qcProduceRunList.isEmpty())) {
.in(MesQcProduceRunEntity::getMtnCode, mtnCodeList)); throw new ServiceException("此工序卡未绑定飞靶或设备!");
if (!(qcProduceRunList != null && qcProduceRunList.size() > 0)) {
throw new ServiceException("product.prWorkPlan.not.bing");
} }
} }
} else if (dsProcess.getProcessName().contains("镀金")) { } else if (dsProcess.getProcessName().contains("镀金")) {
mtu = macToolUseService.getOne(Wrappers.<MacToolUse>lambdaQuery().eq(MacToolUse::getWpId, wp.getId()) mtu = macToolUseService.queryByParams(wp.getId(), 0, 1, 0);
.isNotNull(MacToolUse::getBsFeiBaSet));
if (mtu == null) { if (mtu == null) {
throw new ServiceException("此工序未绑定飞跋,请绑定飞跋!!!"); throw new ServiceException("此工序未绑定飞跋,请绑定飞跋!!!");
} }
//验证是否绑定设备 //验证是否绑定设备
mtu = macToolUseService.getOne(Wrappers.<MacToolUse>lambdaQuery().eq(MacToolUse::getWpId, wp.getId()) mtu = macToolUseService.queryByParams(wp.getId(), 1, 1, 1);
.isNotNull(MacToolUse::getBsRackSet).isNotNull(MacToolUse::getBsFeiBaSet).isNotNull(MacToolUse::getEquipmentCard));
if (mtu == null) { if (mtu == null) {
List<MesQcProduceRunEntity> produceRunList = null; List<MesQcProduceRunEntity> produceRunList = null;
List<String> mtnCodeList = macToolUseService.listObjs(Wrappers.<MacToolUse>lambdaQuery() produceRunList = mesQcProduceRunService.listPrByWpIdIndex(wp.getId(), 1, Boolean.FALSE);
.eq(MacToolUse::getWpId, wp.getId()).eq(MacToolUse::getMtuIndex, 1).select(MacToolUse::getMtnCode)); if (produceRunList == null || produceRunList.isEmpty()) {
produceRunList = mesQcProduceRunService.list(Wrappers.<MesQcProduceRunEntity>lambdaQuery() produceRunList = mesQcProduceRunService.listPrByWpIdIndex(wp.getId(), 2, Boolean.FALSE);
.in(MesQcProduceRunEntity::getMtnCode, mtnCodeList).ne(MesQcProduceRunEntity::getWorkSlot, "烘箱"));
if (produceRunList == null || produceRunList.size() == 0) {
List<String> mtnCodeList2 = macToolUseService.listObjs(Wrappers.<MacToolUse>lambdaQuery()
.eq(MacToolUse::getWpId, wp.getId()).eq(MacToolUse::getMtuIndex, 2).select(MacToolUse::getMtnCode));
produceRunList = mesQcProduceRunService.list(Wrappers.<MesQcProduceRunEntity>lambdaQuery()
.in(MesQcProduceRunEntity::getMtnCode, mtnCodeList2).ne(MesQcProduceRunEntity::getWorkSlot, "烘箱"));
} }
if (!(produceRunList != null && produceRunList.size() > 0)) { if (!(produceRunList != null && !produceRunList.isEmpty())) {
throw new ServiceException("未绑定飞跋和设备或未维护生产追溯信息!!!"); throw new ServiceException("未绑定飞跋和设备或未维护生产追溯信息!!!");
} }
} }
} else if (dsProcess.getProcessName().equals("玻璃封接清洗") || dsProcess.getProcessName().equals("玻璃封接退火") || } else if ("玻璃封接清洗".equals(dsProcess.getProcessName()) || "玻璃封接退火".equals(dsProcess.getProcessName()) ||
dsProcess.getProcessName().equals("玻璃封接预氧化(箱式炉)") || dsProcess.getProcessName().equals("玻璃封接预氧化(链式炉)") || "玻璃封接预氧化(箱式炉)".equals(dsProcess.getProcessName()) || "玻璃封接预氧化(链式炉)".equals(dsProcess.getProcessName()) ||
dsProcess.getProcessName().equals("玻璃封接(链式炉)") || dsProcess.getProcessName().equals("玻璃封接(真空炉)") || "玻璃封接(链式炉)".equals(dsProcess.getProcessName()) || "玻璃封接(真空炉)".equals(dsProcess.getProcessName()) ||
dsProcess.getProcessName().equals("玻璃封接灌胶") || dsProcess.getProcessName().equals("玻璃饼压制") || "玻璃封接灌胶".equals(dsProcess.getProcessName()) || "玻璃饼压制".equals(dsProcess.getProcessName()) ||
dsProcess.getProcessName().equals("玻璃饼排蜡玻化") || dsProcess.getProcessName().equals("玻璃饼振光") || "玻璃饼排蜡玻化".equals(dsProcess.getProcessName()) || "玻璃饼振光".equals(dsProcess.getProcessName()) ||
dsProcess.getProcessName().equals("石墨模烘干") || dsProcess.getProcessName().equals("石墨模焙烧") || "石墨模烘干".equals(dsProcess.getProcessName()) || "石墨模焙烧".equals(dsProcess.getProcessName()) ||
dsProcess.getProcessName().equals("真空炉灌胶") || dsProcess.getProcessName().equals("玻璃封接电镀去氧化皮") || "真空炉灌胶".equals(dsProcess.getProcessName()) || "玻璃封接电镀去氧化皮".equals(dsProcess.getProcessName()) ||
dsProcess.getProcessName().equals("玻璃封接电化学抛光") || dsProcess.getProcessName().equals("玻璃封接湿喷砂") || "玻璃封接电化学抛光".equals(dsProcess.getProcessName()) || "玻璃封接湿喷砂".equals(dsProcess.getProcessName()) ||
dsProcess.getProcessName().equals("玻璃封接电镀") || dsProcess.getProcessName().equals("玻璃封接插针电镀") || "玻璃封接电镀".equals(dsProcess.getProcessName()) || "玻璃封接插针电镀".equals(dsProcess.getProcessName()) ||
dsProcess.getProcessName().equals("玻璃封接壳体电镀") || dsProcess.getProcessName().equals("玻璃封接电镀下挂") || "玻璃封接壳体电镀".equals(dsProcess.getProcessName()) || "玻璃封接电镀下挂".equals(dsProcess.getProcessName()) ||
dsProcess.getProcessName().equals("烧结浸保护剂")) { "烧结浸保护剂".equals(dsProcess.getProcessName())) {
mtu = macToolUseService.getOne(Wrappers.<MacToolUse>lambdaQuery().eq(MacToolUse::getWpId, wp.getId()) mtu = macToolUseService.queryByParams(wp.getId(), 1, 1, 1);
.isNotNull(MacToolUse::getBsRackSet).isNotNull(MacToolUse::getBsFeiBaSet).isNotNull(MacToolUse::getEquipmentCard));
if (mtu == null) { if (mtu == null) {
// 验证是否维护了生产追溯信息 // 验证是否维护了生产追溯信息
List<MesQcProduceRunEntity> qcProduceRunList = null; List<MesQcProduceRunEntity> qcProduceRunList = mesQcProduceRunService.listPrByWpId(wp.getId());
List<String> mtnCodeList = macToolUseService.listObjs(Wrappers.<MacToolUse>lambdaQuery() if (!(qcProduceRunList != null && !qcProduceRunList.isEmpty())) {
.eq(MacToolUse::getWpId, wp.getId()).select(MacToolUse::getMtnCode)); throw new ServiceException("此工序卡未绑定飞靶或设备!");
qcProduceRunList = mesQcProduceRunService.list(Wrappers.<MesQcProduceRunEntity>lambdaQuery()
.in(MesQcProduceRunEntity::getMtnCode, mtnCodeList));
if (!(qcProduceRunList != null && qcProduceRunList.size() > 0)) {
throw new ServiceException("product.prWorkPlan.not.bing");
} }
} }
} }
//周新昊 20241114 验证手动维护设备使用记录的工序电子档案数据是否维护完备 boolean aBoolean = this.chkRfpDetail(wp.getId());
Boolean aBoolean = true; //this.chkRfpDetail(wp);
if (!aBoolean) { if (!aBoolean) {
throw new ServiceException("生产记录未填写完整,不允许报工!!!!"); throw new ServiceException("生产记录未填写完整,不允许报工!!!!");
} }
@ -197,8 +222,9 @@ public class MakeRecServiceImpl extends BaseServiceImpl<MakeRecMapper, MakeRec>
baseMapper.insertOrUpdate(mr); baseMapper.insertOrUpdate(mr);
if (mr.getScrapQty() > 0) { if (mr.getScrapQty() > 0) {
wp.setScrapQty(wp.getScrapQty() + mr.getScrapQty()); wp.setScrapQty(wp.getScrapQty() + mr.getScrapQty());
WorkOrder wo = null;//workOrderService.getById(wp.getWoId()); WorkOrder wo = workOrderMapper.selectById(wp.getWoId());
wo.setMakeQty(wo.getMakeQty() - mr.getScrapQty()); wo.setMakeQty(wo.getMakeQty() - mr.getScrapQty());
workOrderMapper.updateById(wo);
} }
wp.setWorkQty(wp.getWorkQty() + mr.getWorkQty()); wp.setWorkQty(wp.getWorkQty() + mr.getWorkQty());
if (wp.getQualifiedQty().equals(wp.getScrapQty() + wp.getWorkQty())) { if (wp.getQualifiedQty().equals(wp.getScrapQty() + wp.getWorkQty())) {
@ -206,7 +232,6 @@ public class MakeRecServiceImpl extends BaseServiceImpl<MakeRecMapper, MakeRec>
} }
if ("热处理".equals(dsProcess.getProcessName())) { if ("热处理".equals(dsProcess.getProcessName())) {
wp.setPrintType((short) 1); wp.setPrintType((short) 1);
//workPlanService.saveOrUpdate(wp);
String code = macToolUseService.nextCode(2); String code = macToolUseService.nextCode(2);
MacToolUse prMacToolUse = new MacToolUse(); MacToolUse prMacToolUse = new MacToolUse();
prMacToolUse.setWpId(wp.getId()); prMacToolUse.setWpId(wp.getId());
@ -232,61 +257,230 @@ public class MakeRecServiceImpl extends BaseServiceImpl<MakeRecMapper, MakeRec>
qcProduceRun.setDataSeven(makeRecDTO.getShape()); qcProduceRun.setDataSeven(makeRecDTO.getShape());
mesQcProduceRunService.save(qcProduceRun); mesQcProduceRunService.save(qcProduceRun);
} }
// 保存引用文件或版本号 workPlanMapper.updateById(wp);
WorkOrder prWorkOrder = null; //workOrderService.getById(wp.getWoId());
if (prWorkOrder != null && prWorkOrder.getId() != null) {
YieldOrder pjYieldOrder = yieldOrderService.getById(prWorkOrder.getYoId());
if (pjYieldOrder != null && pjYieldOrder.getId() != null) {
BsProcessSetEntity procedureSet = bsProcessSetService.getById(wp.getPpsId());
AuditFile dsAuditFile = null;
// 如果本序是涂色标或喷砂,直接查维护的数据
if ("涂色标".equals(procedureSet.getName()) || "喷砂".equals(procedureSet.getName())) {
dsAuditFile = auditFileService.getOne(Wrappers.<AuditFile>lambdaQuery()
.eq(AuditFile::getPpsId, procedureSet.getId()));
} else {
// 如果不是优先判断是否有生产标识
String prodIdent = pjYieldOrder.getProductIdent();
BsTeamSetEntity bsTeamSet = teamSetService.getOne(Wrappers.<BsTeamSetEntity>lambdaQuery()
.eq(BsTeamSetEntity::getId, wp.getMakeTeam()));
if (!"AH".equals(prodIdent)) {
prodIdent = null;
}
if (bsTeamSet != null && bsTeamSet.getId() != null) {
// BsCenterTeamEntity bsCenterTeam = bsCenterTeamService.getByTsId(bsTeamSet.getTsId());
DsPartEntity dsPart = partService.getOne(Wrappers.<DsPartEntity>lambdaQuery().eq(DsPartEntity::getPartCode, pjYieldOrder.getPartCode()));
String productApparea = null;
if (dsPart != null && dsPart.getId() != null) {
productApparea = dsPart.getProductSeries();
}
// if (productApparea!=null){
// dsAuditFile = dsAuditFileDao.getDataByPpsIdAndApparea(procedureSet.getPpsId(), bsCenterTeam.getBsWorkCenter().getWcId(),productApparea);
// }
// if (bsCenterTeam != null && bsCenterTeam.getCtId() != null && dsAuditFile == null) {
// dsAuditFile = dsAuditFileDao.getDataByPpsIdAndPqName(procedureSet.getPpsId(), bsCenterTeam.getBsWorkCenter().getWcId(), prodIdent);
// }
}
}
if (dsAuditFile != null && dsAuditFile.getId() != null) {
wp.setPapers(dsAuditFile.getPapers());
wp.setReferenceFile(dsAuditFile.getReferenceFile());
//workPlanService.updateById(wp);
}
// 2025-07-23 线上迁移修改 // 2025-07-23 线上迁移修改
MacToolUse macToolUse = macToolUseService.getOne(Wrappers.<MacToolUse>lambdaQuery() MacToolUse macToolUse = macToolUseService.getDataByWpIdAndIndex(wp.getId(), "2");
.eq(MacToolUse::getWpId, wp.getId()));
if (macToolUse != null && macToolUse.getRfpId() != null && macToolUse.getFinished() != 1) { if (macToolUse != null && macToolUse.getRfpId() != null && macToolUse.getFinished() != 1) {
macToolUse.setFinished(1); macToolUse.setFinished(1);
String deviceCode = macToolUse.getEquipmentCard() != null ? macToolUse.getMtnCode() : ""; String deviceCode = macToolUse.getEquipmentCard() != null ? macToolUse.getMtnCode() : "";
log.info("修改设备绑定状态:设备编号:{},批次号:{},槽号:{},方法名:addMakeRec(),{}", deviceCode, macToolUse.getHangNum(), macToolUse.getMtnCode(), macToolUse.getFinished()); log.info("修改设备绑定状态:设备编号:{},批次号:{},槽号:{},方法名:addMakeRec(),{}", deviceCode, macToolUse.getHangNum(), macToolUse.getMtnCode(), macToolUse.getFinished());
macToolUseService.updateById(macToolUse); macToolUseService.updateById(macToolUse);
} }
return true;
} }
}
private boolean chkRfpDetail(Long wpId) {
List<MacToolUse> macToolUses = macToolUseService.list(Wrappers.lambdaQuery(MacToolUse.class).isNotNull(MacToolUse::getRfpId).ne(MacToolUse::getMtuIndex, "2").eq(MacToolUse::getWpId, wpId));
if (CollectionUtils.isNotEmpty(macToolUses)) {
for (MacToolUse macToolUs : macToolUses) {
List<MesQcProduceRunEntity> qcProduceRunList = mesQcProduceRunService.list(Wrappers.lambdaQuery(MesQcProduceRunEntity.class).eq(MesQcProduceRunEntity::getMtnCode, macToolUs.getMtnCode())
.and(wrapper -> wrapper.isNull(MesQcProduceRunEntity::getWorkSlot).or().notLike(MesQcProduceRunEntity::getWorkSlot, "入料区")).orderByAsc(MesQcProduceRunEntity::getId));
Map<String, MesQcProduceRunEntity> qcProduceRunMap = qcProduceRunList.stream().collect(Collectors.toMap(MesQcProduceRunEntity::getWorkSlot, Function.identity()));
List<MesRbFilePreserveSlotEntity> dsRbFilePreserveSlots = mesRbFilePreserveSlotService.list(Wrappers.lambdaQuery(MesRbFilePreserveSlotEntity.class).eq(MesRbFilePreserveSlotEntity::getRfpId, macToolUs.getRfpId()).orderByAsc(MesRbFilePreserveSlotEntity::getSlotIndex));
if (CollectionUtils.isNotEmpty(dsRbFilePreserveSlots)) {
for (MesRbFilePreserveSlotEntity dsRbFilePreserveSlot : dsRbFilePreserveSlots) {
MesQcProduceRunEntity qcProduceRun = qcProduceRunMap.get(dsRbFilePreserveSlot.getSlotName());
if (qcProduceRun != null) {
List<MesRbFilePreserveDetailEntity> dsRbFilePreserveDetails = mesRbFilePreserveDetailService.getByRfpsId(dsRbFilePreserveSlot.getId());
if (CollectionUtils.isNotEmpty(dsRbFilePreserveDetails)) {
if (dsRbFilePreserveSlot.getRfpsType() == 1) {
if (StringUtils.isBlank(qcProduceRun.getInDate())
|| StringUtils.isBlank(qcProduceRun.getOutDate())) {
return false;
}
} else if (dsRbFilePreserveSlot.getRfpsType() == 2) {
if (StringUtils.isBlank(qcProduceRun.getInDate())
|| StringUtils.isBlank(qcProduceRun.getOutDate())
|| StringUtils.isBlank(qcProduceRun.getDataOne())) {
return false;
}
} else if (dsRbFilePreserveSlot.getRfpsType() == 3 || dsRbFilePreserveSlot.getRfpsType() == 11) {
if (StringUtils.isBlank(qcProduceRun.getInDate())
|| StringUtils.isBlank(qcProduceRun.getOutDate())
|| StringUtils.isBlank(qcProduceRun.getDataOne())
|| StringUtils.isBlank(qcProduceRun.getDataTwo())) {
return false;
}
} else if (dsRbFilePreserveSlot.getRfpsType() == 4 || dsRbFilePreserveSlot.getRfpsType() == 12) {
if (StringUtils.isBlank(qcProduceRun.getDataOne())
|| StringUtils.isBlank(qcProduceRun.getDataTwo())
|| StringUtils.isBlank(qcProduceRun.getDataThree())) {
return false;
}
} else if (dsRbFilePreserveSlot.getRfpsType() == 5 || dsRbFilePreserveSlot.getRfpsType() == 22) {
if (StringUtils.isBlank(qcProduceRun.getDataOne())
|| StringUtils.isBlank(qcProduceRun.getDataTwo())
|| StringUtils.isBlank(qcProduceRun.getDataThree())
|| StringUtils.isBlank(qcProduceRun.getDataFour())
|| StringUtils.isBlank(qcProduceRun.getDataFive())) {
return false;
}
} else if (dsRbFilePreserveSlot.getRfpsType() == 6) {
if (StringUtils.isBlank(qcProduceRun.getDataOne())
|| StringUtils.isBlank(qcProduceRun.getDataTwo())
|| StringUtils.isBlank(qcProduceRun.getDataThree())
|| StringUtils.isBlank(qcProduceRun.getDataFour())
|| StringUtils.isBlank(qcProduceRun.getDataFive())
|| StringUtils.isBlank(qcProduceRun.getDataSix())) {
return false;
}
} else if (dsRbFilePreserveSlot.getRfpsType() == 7 || dsRbFilePreserveSlot.getRfpsType() == 18) {
if (StringUtils.isBlank(qcProduceRun.getDataOne())) {
return false;
}
} else if (dsRbFilePreserveSlot.getRfpsType() == 8) {
if (StringUtils.isBlank(qcProduceRun.getDataOne())
|| StringUtils.isBlank(qcProduceRun.getDataTwo())) {
return false;
}
} else if (dsRbFilePreserveSlot.getRfpsType() == 9) {
if (StringUtils.isBlank(qcProduceRun.getInDate())
|| StringUtils.isBlank(qcProduceRun.getOutDate())
|| StringUtils.isBlank(qcProduceRun.getDataOne())
|| StringUtils.isBlank(qcProduceRun.getDataTwo())
|| StringUtils.isBlank(qcProduceRun.getDataThree())) {
return false;
}
} else if (dsRbFilePreserveSlot.getRfpsType() == 13) {
if (StringUtils.isBlank(qcProduceRun.getDataOne())
|| StringUtils.isBlank(qcProduceRun.getDataTwo())
|| StringUtils.isBlank(qcProduceRun.getDataThree())
|| StringUtils.isBlank(qcProduceRun.getDataFour())
|| StringUtils.isBlank(qcProduceRun.getDataFive())
|| StringUtils.isBlank(qcProduceRun.getDataSix())
|| StringUtils.isBlank(qcProduceRun.getDataSeven())
|| StringUtils.isBlank(qcProduceRun.getDataEight())
|| StringUtils.isBlank(qcProduceRun.getDataNine())
|| StringUtils.isBlank(qcProduceRun.getDataTen())) {
return false;
}
} else if (dsRbFilePreserveSlot.getRfpsType() == 14) {
if (StringUtils.isBlank(qcProduceRun.getInDate())
|| StringUtils.isBlank(qcProduceRun.getOutDate())
|| StringUtils.isBlank(qcProduceRun.getDataOne())
|| StringUtils.isBlank(qcProduceRun.getDataTwo())
|| StringUtils.isBlank(qcProduceRun.getDataThree())
|| StringUtils.isBlank(qcProduceRun.getDataFour())
|| StringUtils.isBlank(qcProduceRun.getDataFive())
|| StringUtils.isBlank(qcProduceRun.getDataSix())
|| StringUtils.isBlank(qcProduceRun.getDataSeven())
|| StringUtils.isBlank(qcProduceRun.getDataEight())
|| StringUtils.isBlank(qcProduceRun.getDataNine())
|| StringUtils.isBlank(qcProduceRun.getDataTen())) {
return false;
}
} else if (dsRbFilePreserveSlot.getRfpsType() == 15) {
if (StringUtils.isBlank(qcProduceRun.getInDate())
|| StringUtils.isBlank(qcProduceRun.getOutDate())
|| StringUtils.isBlank(qcProduceRun.getDataOne())
|| StringUtils.isBlank(qcProduceRun.getDataTwo())
|| StringUtils.isBlank(qcProduceRun.getDataThree())
|| StringUtils.isBlank(qcProduceRun.getDataFour())
|| StringUtils.isBlank(qcProduceRun.getDataFive())
|| StringUtils.isBlank(qcProduceRun.getDataSix())
|| StringUtils.isBlank(qcProduceRun.getDataSeven())
|| StringUtils.isBlank(qcProduceRun.getDataEight())
|| StringUtils.isBlank(qcProduceRun.getDataNine())
|| StringUtils.isBlank(qcProduceRun.getDataTen())
|| StringUtils.isBlank(qcProduceRun.getDataEleven())
|| StringUtils.isBlank(qcProduceRun.getDataTwelve())) {
return false;
}
} else if (dsRbFilePreserveSlot.getRfpsType() == 16) {
if (StringUtils.isBlank(qcProduceRun.getInDate())
|| StringUtils.isBlank(qcProduceRun.getOutDate())
|| StringUtils.isBlank(qcProduceRun.getDataOne())
|| StringUtils.isBlank(qcProduceRun.getDataTwo())
|| StringUtils.isBlank(qcProduceRun.getDataThree())
|| StringUtils.isBlank(qcProduceRun.getDataFour())
|| StringUtils.isBlank(qcProduceRun.getDataFive())
|| StringUtils.isBlank(qcProduceRun.getDataSix())
|| StringUtils.isBlank(qcProduceRun.getDataSeven())
|| StringUtils.isBlank(qcProduceRun.getDataEight())
|| StringUtils.isBlank(qcProduceRun.getDataNine())
|| StringUtils.isBlank(qcProduceRun.getDataTen())
|| StringUtils.isBlank(qcProduceRun.getDataEleven())
|| StringUtils.isBlank(qcProduceRun.getDataTwelve())
|| StringUtils.isBlank(qcProduceRun.getDataThirteen())
|| StringUtils.isBlank(qcProduceRun.getDataFourteen())) {
return false;
}
} else if (dsRbFilePreserveSlot.getRfpsType() == 17) {
if (StringUtils.isBlank(qcProduceRun.getInDate())
|| StringUtils.isBlank(qcProduceRun.getOutDate())
|| StringUtils.isBlank(qcProduceRun.getDataOne())
|| StringUtils.isBlank(qcProduceRun.getDataTwo())
|| StringUtils.isBlank(qcProduceRun.getDataThree())
|| StringUtils.isBlank(qcProduceRun.getDataFour())
|| StringUtils.isBlank(qcProduceRun.getDataFive())
|| StringUtils.isBlank(qcProduceRun.getDataSix())) {
return false;
}
} else if (dsRbFilePreserveSlot.getRfpsType() == 21) {
if (StringUtils.isBlank(qcProduceRun.getDataOne())
|| StringUtils.isBlank(qcProduceRun.getDataTwo())
|| StringUtils.isBlank(qcProduceRun.getDataThree())
|| StringUtils.isBlank(qcProduceRun.getDataFour())
|| StringUtils.isBlank(qcProduceRun.getDataFive())
|| StringUtils.isBlank(qcProduceRun.getDataSix())
|| StringUtils.isBlank(qcProduceRun.getDataSeven())
|| StringUtils.isBlank(qcProduceRun.getDataEight())
|| StringUtils.isBlank(qcProduceRun.getDataNine())) {
return false;
}
}
}
}
}
}
}
}
return true;
} }
@Override @Override
public IPage<MesMakeRecVO> selectMesMakeRecPage(IPage<MesMakeRecVO> page, MesMakeRecVO mesMakeRec) { public IPage<MesMakeRecVO> selectMesMakeRecPage(IPage<MesMakeRecVO> page, MesMakeRecVO mesMakeRec) {
return page.setRecords(baseMapper.selectMesMakeRecPage(page, mesMakeRec)); IPage<MesMakeRecVO> mesMakeRecVOIPage = page.setRecords(baseMapper.selectMesMakeRecPage(page, mesMakeRec));
List<MesMakeRecVO> records = mesMakeRecVOIPage.getRecords();
if (CollectionUtils.isNotEmpty(records)) {
List<Long> ppsIds = new ArrayList<>();
List<Long> makeTeams = new ArrayList<>();
for (MesMakeRecVO record : records) {
ppsIds.add(record.getPpsId());
if (record.getFrontPpsId() != null) {
ppsIds.add(record.getFrontPpsId());
}
if (record.getNextPpsId() != null) {
ppsIds.add(record.getNextPpsId());
}
if (record.getMakeTeam() != null) {
makeTeams.add(record.getMakeTeam());
}
if (record.getFrontMakeTeam() != null) {
makeTeams.add(record.getFrontMakeTeam());
}
if (record.getNextMakeTeam() != null) {
makeTeams.add(record.getNextMakeTeam());
}
}
List<BsProcessSetEntity> processSets = bsProcessSetService.list(Wrappers.lambdaQuery(BsProcessSetEntity.class).in(BsProcessSetEntity::getId, ppsIds));
Map<Long, String> processSetMap = processSets.stream().collect(Collectors.toMap(BsProcessSetEntity::getId, BsProcessSetEntity::getName));
List<BsTeamSetEntity> teams = teamSetService.list(Wrappers.lambdaQuery(BsTeamSetEntity.class).in(BsTeamSetEntity::getId, makeTeams));
Map<Long, String> teamMap = teams.stream().collect(Collectors.toMap(BsTeamSetEntity::getId, BsTeamSetEntity::getTsName));
for (MesMakeRecVO record : records) {
User user = UserCache.getUser(record.getWorker());
record.setWorkerName(user != null ? user.getRealName() : "");
record.setPpsName(processSetMap.get(record.getPpsId()));
record.setMakeTeamName(teamMap.get(record.getMakeTeam()));
record.setFrontPpsName(processSetMap.get(record.getFrontPpsId()));
record.setFrontMakeTeamName(teamMap.get(record.getFrontMakeTeam()));
record.setNextPpsName(processSetMap.get(record.getNextPpsId()));
record.setNextMakeTeamName(teamMap.get(record.getNextMakeTeam()));
}
mesMakeRecVOIPage.setRecords(records);
}
return mesMakeRecVOIPage;
} }
@Override @Override

@ -43,10 +43,7 @@ import org.springblade.desk.order.pojo.enums.YieldOrderEnum;
import org.springblade.desk.order.service.IYieldOrderService; import org.springblade.desk.order.service.IYieldOrderService;
import org.springblade.desk.produce.mapper.PlateAroundMapper; import org.springblade.desk.produce.mapper.PlateAroundMapper;
import org.springblade.desk.produce.mapper.WorkOrderMapper; import org.springblade.desk.produce.mapper.WorkOrderMapper;
import org.springblade.desk.produce.pojo.dto.InBatchesDTO; import org.springblade.desk.produce.pojo.dto.*;
import org.springblade.desk.produce.pojo.dto.ListProProcessDTO;
import org.springblade.desk.produce.pojo.dto.QueryByReadStatusDTO;
import org.springblade.desk.produce.pojo.dto.WorkOrderDTO;
import org.springblade.desk.produce.pojo.entity.*; import org.springblade.desk.produce.pojo.entity.*;
import org.springblade.desk.produce.pojo.enums.WorkOrderEnum; import org.springblade.desk.produce.pojo.enums.WorkOrderEnum;
import org.springblade.desk.produce.pojo.enums.ProcessCycleEnum; import org.springblade.desk.produce.pojo.enums.ProcessCycleEnum;
@ -1635,6 +1632,26 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
} }
} }
@Override
public boolean updatePriority(UpdatePriorityDTO updatePriorityDTO) {
WorkOrder wo = this.getById(updatePriorityDTO.getWoId());
wo.setPriority(WorkOrder.PRIORITY_SCH_IMP);
wo.setPriority(updatePriorityDTO.getPriority());
wo.setDemandDate(updatePriorityDTO.getDemandDate());
boolean b = this.updateById(wo);
if (b && (WorkOrder.PRIORITY_NORMAL.equals(updatePriorityDTO.getPriority())
|| WorkOrder.PRIORITY_PRO_IMP.equals(updatePriorityDTO.getPriority())
|| WorkOrder.PRIORITY_PACT_IMP.equals(updatePriorityDTO.getPriority())) && wo.getRunStatus() < WorkOrder.RUN_STATUS_RECEIVE) {
// 修改生产订单为待排产
log.info("修改优先级后重新排产");
YieldOrder yieldOrder = new YieldOrder();
yieldOrder.setId(wo.getYoId());
yieldOrder.setStatus(YieldOrderEnum.STATUS_APS.getCode());
yieldOrderService.updateById(yieldOrder);
}
return true;
}
private void workPlanEnd(WorkPlan workPlan, Date newDate, Double makeQty) { private void workPlanEnd(WorkPlan workPlan, Date newDate, Double makeQty) {
if (workPlan == null) { if (workPlan == null) {
return; return;

Loading…
Cancel
Save