电子档案维护接口开发

liweidong
李涛 2 weeks ago
parent 213a3404b2
commit f5a6691bb2
  1. 2
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/RetrospectDefendDTO.java
  2. 5
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MesQcProduceRunEntity.java
  3. 37
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/EleFilesEditVO.java
  4. 20
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/GetByRfpIdVO.java
  5. 17
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/GoodsVO.java
  6. 20
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/RemarryRedeemRetrospectDefendVO.java
  7. 25
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/WorkPlanProVO.java
  8. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PrMakeRecController.java
  9. 141
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/ProcessQualityMaintenanceController.java
  10. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.java
  11. 24
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.xml
  12. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java
  13. 12
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml
  14. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IDsRbFilePreserveService.java
  15. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java
  16. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMakeRecService.java
  17. 47
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IProcessQualityMaintenanceService.java
  18. 17
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java
  19. 3
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkPlanService.java
  20. 9
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/DsRbFilePreserveServiceImpl.java
  21. 20
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java
  22. 21
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MakeRecServiceImpl.java
  23. 725
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/ProcessQualityMaintenanceServiceImpl.java
  24. 3
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java
  25. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkPlanServiceImpl.java

@ -12,6 +12,8 @@ public class RetrospectDefendDTO {
private Long rfpId;
private Long mtuId;
private List<Long> wpIdList;
private Boolean line;

@ -25,15 +25,12 @@
*/
package org.springblade.desk.produce.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import io.swagger.v3.oas.annotations.media.Schema;
import com.baomidou.mybatisplus.annotation.TableName;
import java.util.Date;
import java.math.BigDecimal;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import org.springblade.core.tenant.mp.TenantEntity;
import java.io.Serial;
/**
@ -59,7 +56,7 @@ public class MesQcProduceRunEntity extends BaseEntity {
/**
* 挂齿号
*/
@Schema(description = "挂齿号")
@Schema(description = "挂号")
private String hangNum;
/**
* 同槽号

@ -0,0 +1,37 @@
package org.springblade.desk.produce.pojo.vo;
import lombok.Data;
import org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity;
import org.springblade.desk.produce.pojo.entity.MesRbFilePreserveSlotEntity;
import java.util.List;
/**
* 后续手动维护生产追溯(电子档案维护) 视图实体类
*
* @author litao
*/
@Data
public class EleFilesEditVO {
private String type;
private Long wpId;
private Long mtuId;
private Long ecId;
private Long rfpId;
private Short lineType;
private Boolean line;
private String mtnCode;
private List<MesQcProduceRunEntity> mesQcProduceRunEntityList;
private List<ProduceMonitorFileSlotVO> produceMonitorFileSlotVOList;
}

@ -0,0 +1,20 @@
package org.springblade.desk.produce.pojo.vo;
import lombok.Data;
import org.springblade.desk.produce.pojo.entity.MesRbFilePreserveSlotEntity;
import java.util.List;
/**
* 获取热表电子档案维护-槽子明细及对应的明细 视图实体类
*
* @author litao
*/
@Data
public class GetByRfpIdVO {
private Integer insertIndex;
private List<MesRbFilePreserveSlotEntity> preserveSlotList;
}

@ -0,0 +1,17 @@
package org.springblade.desk.produce.pojo.vo;
import lombok.Data;
/**
* 根据物料号查询物料信息 视图实体类
*
* @author litao
*/
@Data
public class GoodsVO {
private String checkoutCode;
private String releasenoTime;
private String goodsName;
}

@ -0,0 +1,20 @@
package org.springblade.desk.produce.pojo.vo;
import lombok.Data;
import org.springblade.desk.produce.pojo.entity.MesRbFilePreserveSlotEntity;
import java.util.List;
/**
* 根据流程卡查询当前工序对应的可维护生产追溯信息 视图实体类
*
* @author litao
*/
@Data
public class RemarryRedeemRetrospectDefendVO {
private Long mtuId;
private List<ProduceMonitorFileSlotVO> dsRbFilePreserveSlotList;
}

@ -0,0 +1,25 @@
package org.springblade.desk.produce.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.Date;
/**
* 过程质量维护-查询订单的工序 视图实体类
*
* @author litao
*/
@Data
public class WorkPlanProVO {
@Schema(description = "工序ID")
private Long wpId;
@Schema(description = "工序号")
private String orders;
@Schema(description = "工序名称")
private String ppsName;
}

@ -74,10 +74,4 @@ public class PrMakeRecController extends BladeController {
return R.data(makeRecService.afterPlaReceive(cardNo));
}
@Operation(summary = "手动维护生产追溯")
@PostMapping("/saveRetrospectDefend")
public R saveRetrospectDefend(@RequestBody RetrospectDefendDTO retrospectDefendDTO) {
makeRecService.saveRetrospectDefend(retrospectDefendDTO);
return R.success();
}
}

@ -0,0 +1,141 @@
package org.springblade.desk.produce.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.desk.produce.pojo.dto.RetrospectDefendDTO;
import org.springblade.desk.produce.pojo.entity.DsRbFilePreserve;
import org.springblade.desk.produce.pojo.entity.MesEquipmentCardEntity;
import org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity;
import org.springblade.desk.produce.pojo.vo.*;
import org.springblade.desk.produce.service.IMakeRecService;
import org.springblade.desk.produce.service.IProcessQualityMaintenanceService;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 过程质量维护 控制器
*
* @author BladeX
* @since 2025-12-03
*/
@RestController
@AllArgsConstructor
@RequestMapping("/processMaintenance")
@Tag(name = "过程质量维护", description = "过程质量维护接口")
public class ProcessQualityMaintenanceController extends BladeController {
private final IProcessQualityMaintenanceService proQuaMainService;
private final IMakeRecService makeRecService;
@GetMapping("/getWorkOrderProcess")
@ApiOperationSupport(order = 1)
@Operation(summary = "查询订单的工序")
public R<List<WorkPlanProVO>> getWorkOrderProcess(String cardNo) {
return R.data(proQuaMainService.getWorkOrderProcess(cardNo));
}
@GetMapping("/getProcessBingingRec")
@ApiOperationSupport(order = 2)
@Operation(summary = "查询订单工序的绑定记录")
public R<List<MesMacToolUseVO>> getProcessBingingRec(Long wpId) {
return R.data(proQuaMainService.getProcessBingingRec(wpId));
}
@GetMapping("/getDataByMtnCodeRb")
@ApiOperationSupport(order = 3)
@Operation(summary = "根据同槽编号查询记录数据-热表")
public R<List<ProduceMonitorFileSlotVO>> getDataByMtnCodeRb(Long wpId, String mtnCode) {
return R.data(proQuaMainService.getDataByMtnCode(wpId, mtnCode));
}
@GetMapping("/getDataByMtnCodeSj")
@ApiOperationSupport(order = 4)
@Operation(summary = "根据同槽编号查询记录数据-烧结")
public R<List<MesQcProduceRunEntity>> getDataByMtnCodeSj(Long wpId, String mtnCode) {
return R.data(proQuaMainService.getDataByMtnCodeSj(wpId, mtnCode));
}
@GetMapping("/getRbFilePreserveByWpId")
@ApiOperationSupport(order = 5)
@Operation(summary = "根据工序查询模板")
public R<List<DsRbFilePreserve>> getRbFilePreserveByWpId(Long wpId) {
return R.data(proQuaMainService.getRbFilePreserveByWpId(wpId));
}
@GetMapping("/getByRfpId")
@ApiOperationSupport(order = 6)
@Operation(summary = "获取热表电子档案维护-槽子明细及对应的明细")
public R<GetByRfpIdVO> getByRfpId(Long rfpId) {
return R.data(proQuaMainService.getByRfpId(rfpId));
}
@GetMapping("/queryEquipmentCard")
@ApiOperationSupport(order = 7)
@Operation(summary = "获取设备卡片")
public R<IPage<MesEquipmentCardEntity>> queryEquipmentCard(String deviceCode, Query query) {
return R.data(proQuaMainService.queryEquipmentCard(Condition.getPage(query), deviceCode));
}
@PostMapping("/eleFilesEdit")
@ApiOperationSupport(order = 8)
@Operation(summary = "后续手动维护生产追溯(电子档案维护)")
public R eleFilesEdit(@RequestBody EleFilesEditVO eleFilesEditVO) {
if ("sintering".equals(eleFilesEditVO.getType())) {
return R.status(proQuaMainService.eleFilesEditSj(eleFilesEditVO));
} else {
return R.status(proQuaMainService.eleFilesEditRb(eleFilesEditVO));
}
}
@PostMapping("/deletedProduceRun")
@ApiOperationSupport(order = 9)
@Operation(summary = "根据同槽号删除信息")
public R deletedProduceRun(@RequestBody EleFilesEditVO eleFilesEditVO) {
return R.status(proQuaMainService.deletedProduceRun(eleFilesEditVO.getMtnCode()));
}
@PostMapping("/saveRetrospectDefend")
@ApiOperationSupport(order = 10)
@Operation(summary = "首次维护-保存")
public R saveRetrospectDefend(@RequestBody RetrospectDefendDTO retrospectDefendDTO) {
return R.status(makeRecService.saveRetrospectDefend(retrospectDefendDTO));
}
@GetMapping(value = "/loadPrMacToolUseByMtnCode")
@ApiOperationSupport(order = 11)
@Operation(summary = "加载当前工序检验数据", description = "传入mtnCode")
public R<List<String>> loadPrMacToolUseByMtnCode(String mtnCode) {
return R.data(proQuaMainService.loadPrMacToolUseByMtnCode(mtnCode));
}
@GetMapping(value = "/remarryRedeemRetrospectDefend")
@ApiOperationSupport(order = 12)
@Operation(summary = "根据流程卡查询当前工序对应的可维护生产追溯信息")
public R<RemarryRedeemRetrospectDefendVO> remarryRedeemRetrospectDefend(String cardNo, String line) {
return R.data(proQuaMainService.remarryRedeemRetrospectDefend(cardNo, line));
}
@PostMapping("/remarryRedeemSaveRetrospectDefend")
@ApiOperationSupport(order = 13)
@Operation(summary = "后续手动维护生产追溯(生产追溯维护)")
public R remarryRedeemSaveRetrospectDefend(@RequestBody EleFilesEditVO eleFilesEditVO) {
return R.status(proQuaMainService.remarryRedeemSaveRetrospectDefend(eleFilesEditVO));
}
@GetMapping(value = "/getMaterialMess")
@ApiOperationSupport(order = 14)
@Operation(summary = "根据物料号查询物料信息")
public R<GoodsVO> getMaterialMess(String goodsCode) {
return R.data(proQuaMainService.getMaterialMess(goodsCode));
}
}

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.desk.produce.pojo.dto.MesMacToolUseDTO;
import org.springblade.desk.produce.pojo.entity.MacToolUse;
import org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity;
import org.springblade.desk.produce.pojo.vo.GoodsVO;
import org.springblade.desk.produce.pojo.vo.MesMacToolUseVO;
import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO;
@ -28,4 +29,8 @@ public interface MacToolUseMapper extends BaseMapper<MacToolUse> {
MacToolUse queryByParams(Long wpId, Integer rsBool, Integer fsBool, Integer ecBool);
String findMaxCodeByParams(Long rsId, Long fsId);
List<MesMacToolUseVO> getProcessBingingRec(Long wpId);
GoodsVO getMaterialMess(String goodsCode);
}

@ -167,5 +167,29 @@
</where>
order by a.BIND_TIME DESC
</select>
<select id="getProcessBingingRec" resultType="org.springblade.desk.produce.pojo.vo.MesMacToolUseVO">
SELECT a.MTN_CODE AS code,
d.RS_CODE AS rsCode,
e.FS_CODE AS fsCode,
f.DEVICE_CODE AS deviceCode
FROM MES_MAC_TOOL_USE a
INNER JOIN MES_WORK_PLAN b ON a.wp_id = b.ID
LEFT JOIN MES_RACK_SET d ON a.BS_RACK_SET = d.ID
LEFT JOIN MES_FEI_BA_SET e ON a.BS_FEI_BA_SET = e.ID
LEFT JOIN MES_EQUIPMENT f ON a.EQUIPMENT_CARD = f.ID
where b.id = #{wpId} and a.is_deleted = 0
</select>
<select id="getMaterialMess" resultType="org.springblade.desk.produce.pojo.vo.GoodsVO">
SELECT * FROM (SELECT
srs.CHECK_CODE AS checkoutCode,
srs.SCRAP_CYCLE AS releasenoTime,
sg.GOODS_NAME AS goodsName
FROM
ST_REALTIME_STOCK srs LEFT JOIN ST_GOODS sg ON srs.GOODS_ID = sg.ID
WHERE
sg.GOODS_CODE = #{goodsCode}
ORDER BY
srs.CREATE_TIME DESC) WHERE ROWNUM = 1
</select>
</mapper>

@ -6,16 +6,13 @@ import org.springblade.desk.dashboard.pojo.entity.DsPartRelationEntity;
import org.springblade.desk.dashboard.pojo.entity.DsPartSub;
import org.springblade.desk.produce.pojo.dto.MesRbFilePreserveDetailDTO;
import org.springblade.desk.produce.pojo.entity.*;
import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO;
import org.springblade.desk.produce.pojo.vo.ProduceMonitorWorkPlanVO;
import org.springblade.desk.produce.pojo.vo.WorkPlanLoadVO;
import org.springblade.desk.produce.pojo.vo.*;
import org.springblade.desk.quality.pojo.entity.ProReTemplate;
import org.springblade.desk.quality.pojo.entity.ReviewSheet;
import org.springblade.desk.quality.pojo.entity.WorkPlanItem;
import org.springblade.desk.quality.pojo.entity.WorkPlanItemDetail;
import org.springblade.scheduling.pojo.entity.WorkPlanEntity;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.desk.produce.pojo.vo.WorkPlanVO;
import java.util.List;
@ -88,4 +85,6 @@ public interface WorkPlanMapper extends BaseMapper<WorkPlan> {
// List<Long> getByOtherWpIdMes(Long woId);
List<MesRbFilePreserveDetailEntity> getByRfpsIdMesNew(Long id);
List<WorkPlanProVO> getWorkOrderProcess(String cardNo);
}

@ -423,5 +423,17 @@
and c.CARD_NO = #{cardNo}
order by c.id desc
</select>
<select id="getWorkOrderProcess" resultType="org.springblade.desk.produce.pojo.vo.WorkPlanProVO">
SELECT
wp.ID AS wpId,
wp.ORDERS AS orders,
ps.NAME AS ppsName
FROM
MES_WORK_PLAN wp
LEFT JOIN MES_WORK_ORDER wo ON wp.WO_ID = wo.ID
LEFT JOIN BS_PROCESS_SET ps ON wp.PPS_ID = ps.ID
WHERE wo.CARD_NO = #{cardNo} AND wo.IS_DELETED = 0
ORDER BY wp.ORDERS ASC
</select>
</mapper>

@ -19,4 +19,5 @@ import java.util.List;
public interface IDsRbFilePreserveService extends BaseService<DsRbFilePreserve> {
List<DsRbFilePreserve> getDataByWcIdAndPpsId(Long wcId, Long ppsId, boolean b);
}

@ -7,6 +7,7 @@ import org.springblade.desk.produce.pojo.entity.MacToolUse;
import org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity;
import org.springblade.desk.produce.pojo.entity.WorkOrder;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.pojo.vo.GoodsVO;
import org.springblade.desk.produce.pojo.vo.MacToolUseVO;
import org.springblade.desk.produce.pojo.vo.MesMacToolUseVO;
import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO;
@ -68,4 +69,10 @@ public interface IMacToolUseService extends BaseService<MacToolUse> {
List<MacToolUse> listByParams(Long rsId, Long fsId, Long ecId, String hangNum);
List<MacToolUseVO> queryByWpId(WorkOrder prWorkOrder);
List<MesMacToolUseVO> getProcessBingingRec(Long wpId);
MacToolUse queryByCode(String mtnCode);
GoodsVO getMaterialMess(String goodsCode);
}

@ -34,5 +34,5 @@ public interface IMakeRecService extends BaseService<MakeRec> {
* 手动维护生产追溯
* @param retrospectDefendDTO
*/
void saveRetrospectDefend(RetrospectDefendDTO retrospectDefendDTO);
boolean saveRetrospectDefend(RetrospectDefendDTO retrospectDefendDTO);
}

@ -0,0 +1,47 @@
package org.springblade.desk.produce.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.desk.produce.pojo.dto.RetrospectDefendDTO;
import org.springblade.desk.produce.pojo.entity.DsRbFilePreserve;
import org.springblade.desk.produce.pojo.entity.MesEquipmentCardEntity;
import org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity;
import org.springblade.desk.produce.pojo.vo.*;
import java.util.List;
/**
* 过程质量维护 服务类
*
* @author BladeX
* @since 2025-11-28
*/
public interface IProcessQualityMaintenanceService {
List<WorkPlanProVO> getWorkOrderProcess(String cardNo);
List<MesMacToolUseVO> getProcessBingingRec(Long wpId);
List<ProduceMonitorFileSlotVO> getDataByMtnCode(Long wpId, String mtnCode);
List<DsRbFilePreserve> getRbFilePreserveByWpId(Long wpId);
GetByRfpIdVO getByRfpId(Long rfpId);
IPage<MesEquipmentCardEntity> queryEquipmentCard(IPage<MesEquipmentCardEntity> page, String deviceCode);
List<MesQcProduceRunEntity> getDataByMtnCodeSj(Long wpId, String mtnCode);
boolean eleFilesEditSj(EleFilesEditVO eleFilesEditVO);
boolean eleFilesEditRb(EleFilesEditVO eleFilesEditVO);
boolean deletedProduceRun(String mtnCode);
List<String> loadPrMacToolUseByMtnCode(String mtnCode);
RemarryRedeemRetrospectDefendVO remarryRedeemRetrospectDefend(String cardNo, String line);
boolean remarryRedeemSaveRetrospectDefend(EleFilesEditVO eleFilesEditVO);
GoodsVO getMaterialMess(String goodsCode);
}

@ -4,10 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.tool.api.R;
import org.springblade.desk.produce.pojo.dto.*;
import org.springblade.desk.produce.pojo.entity.WorkOrder;
import org.springblade.desk.produce.pojo.entity.WorkOrderRun;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.pojo.entity.WorkPlanRun;
import org.springblade.desk.produce.pojo.entity.*;
import org.springblade.desk.produce.pojo.vo.BatchPrepareVO;
import org.springblade.desk.produce.pojo.vo.QueryByReadStatusVO;
import org.springblade.desk.produce.pojo.vo.WorkOrderVO;
@ -218,4 +215,16 @@ public interface IWorkOrderService extends BaseService<WorkOrder> {
* @param wo 工单
*/
void qualified(WorkPlan wp, WorkOrder wo);
/**
* <p>方法名: setRbFilePreserveData </p>
* <p>方法描述: 设置RB文件保存数据 </p>
*
* @param preserveSlotList 保存Slot列表
* @param qcProduceRunsList 检验数据列表
* @param workPlan 工单计划
* @param dsRbFilePreserveSlotList RB文件保存Slot列表
* @param prMacToolUse 工单MacTool使用
*/
void setRbFilePreserveData(List<MesRbFilePreserveSlotEntity> preserveSlotList, List<MesQcProduceRunEntity> qcProduceRunsList, WorkPlan workPlan, List<ProduceMonitorFileSlotVO> dsRbFilePreserveSlotList, MacToolUse prMacToolUse);
}

@ -5,6 +5,7 @@ import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.produce.pojo.entity.WorkOrder;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.pojo.vo.ProduceMonitorWorkPlanVO;
import org.springblade.desk.produce.pojo.vo.WorkPlanProVO;
import org.springblade.scheduling.pojo.entity.WorkPlanEntity;
import org.springblade.desk.produce.pojo.vo.WorkPlanVO;
@ -49,4 +50,6 @@ public interface IWorkPlanService extends BaseService<WorkPlan> {
* 工序完成
*/
void workPlanEnd(Long wpId, Date putStoreTime, Double makeQty);
List<WorkPlanProVO> getWorkOrderProcess(String cardNo);
}

@ -37,4 +37,13 @@ import java.util.Random;
@RequiredArgsConstructor
public class DsRbFilePreserveServiceImpl extends BaseServiceImpl<DsRbFilePreserveMapper, DsRbFilePreserve> implements IDsRbFilePreserveService {
@Override
public List<DsRbFilePreserve> getDataByWcIdAndPpsId(Long wcId, Long ppsId, boolean b) {
return this.list(Wrappers.lambdaQuery(DsRbFilePreserve.class)
.eq(wcId != null, DsRbFilePreserve::getWcId, wcId)
.eq(DsRbFilePreserve::getPpsId, ppsId)
.eq(DsRbFilePreserve::getLine, b ? "1" : "0")
.eq(DsRbFilePreserve::getRfpStatus, 2)
.orderByDesc(DsRbFilePreserve::getCreateTime));
}
}

@ -20,6 +20,7 @@ import org.springblade.desk.produce.pojo.entity.MacToolUse;
import org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity;
import org.springblade.desk.produce.pojo.entity.WorkOrder;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.pojo.vo.GoodsVO;
import org.springblade.desk.produce.pojo.vo.MacToolUseVO;
import org.springblade.desk.produce.pojo.vo.MesMacToolUseVO;
import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO;
@ -194,6 +195,25 @@ public class MacToolUseServiceImpl extends BaseServiceImpl<MacToolUseMapper, Mac
return macToolUseVos;
}
@Override
public List<MesMacToolUseVO> getProcessBingingRec(Long wpId) {
return baseMapper.getProcessBingingRec(wpId);
}
@Override
public MacToolUse queryByCode(String mtnCode) {
List<MacToolUse> macToolUses = this.list(Wrappers.lambdaQuery(MacToolUse.class).eq(MacToolUse::getMtnCode, mtnCode));
if (CollectionUtils.isEmpty(macToolUses)) {
return null;
}
return macToolUses.get(0);
}
@Override
public GoodsVO getMaterialMess(String goodsCode) {
return baseMapper.getMaterialMess(goodsCode);
}
public static final int time2Integer(Date d) {
Calendar cal = Calendar.getInstance();
cal.setTime(d);

@ -371,7 +371,8 @@ public class MakeRecServiceImpl extends BaseServiceImpl<MakeRecMapper, MakeRec>
}
@Override
public void saveRetrospectDefend(RetrospectDefendDTO retrospectDefendDTO) {
@Transactional(rollbackFor = Exception.class)
public boolean saveRetrospectDefend(RetrospectDefendDTO retrospectDefendDTO) {
WorkPlan prWorkPlan = null;
MesEquipmentCardEntity equipmentCard = mesEquipmentCardService.getById(retrospectDefendDTO.getEcId());
MacToolUse prMacToolUse;
@ -386,27 +387,22 @@ public class MakeRecServiceImpl extends BaseServiceImpl<MakeRecMapper, MakeRec>
throw new ServiceException("流程卡为 " + prWorkPlan.getCaId() + " 的订单对应的工序不在加工中暂时不可再维护!");
}
// 查询自动生产追溯是否已经开始
List<String> mtnCodeList = macToolUseService.listObjs(Wrappers.<MacToolUse>lambdaQuery()
.eq(MacToolUse::getWpId, wpId).eq(MacToolUse::getMtuIndex, 2).select(MacToolUse::getMtnCode));
produceRunList = mesQcProduceRunService.list(Wrappers.<MesQcProduceRunEntity>lambdaQuery()
.in(MesQcProduceRunEntity::getMtnCode, mtnCodeList).ne(MesQcProduceRunEntity::getWorkSlot, "烘箱"));
produceRunList = mesQcProduceRunService.listPrByWpIdIndex(wpId, 2, Boolean.FALSE);
// 上线前 没有生产追溯数据
if (retrospectDefendDTO.getLine().equals(Boolean.TRUE)) {
if (produceRunList != null && produceRunList.size() > 0) {
if (produceRunList != null && !produceRunList.isEmpty()) {
throw new ServiceException("流程卡为 " + prWorkPlan.getCaId() + " 的订单对应的工序已经在已上线,不可再维护!");
}
} else if (retrospectDefendDTO.getLine().equals(Boolean.FALSE)) {
// 下线后 有自动生产追溯数据
if (produceRunList.size() == 0 || produceRunList == null) {
if (produceRunList.isEmpty()) {
throw new ServiceException("流程卡为 " + prWorkPlan.getId() + " 的订单对应的工序还未下线,不可再维护!");
}
MacToolUse macToolUse = macToolUseService.getOne(Wrappers.<MacToolUse>lambdaQuery().eq(MacToolUse::getWpId, wpId)
.eq(MacToolUse::getMtuIndex, 2));
MacToolUse macToolUse = macToolUseService.getDataByWpIdAndIndex(wpId, String.valueOf(2));
if (macToolUse != null && macToolUse.getRfpId() != null && macToolUse.getFinished() != 1) {
macToolUse.setFinished(1);
String deviceCode = macToolUse.getEquipmentCard() != null ? macToolUse.getMtnCode() : "";
log.info("修改设备绑定状态:设备编号:{},批次号:{},槽号:{},方法名:saveRetrospectDefend(),{}", deviceCode, macToolUse.getHangNum(), macToolUse.getMtnCode(), macToolUse.getFinished());
// 2025-07-23 线上迁移修改
macToolUseService.updateById(macToolUse);
}
@ -417,13 +413,10 @@ public class MakeRecServiceImpl extends BaseServiceImpl<MakeRecMapper, MakeRec>
prMacToolUse.setWpId(prWorkPlan.getId());
prMacToolUse.setEquipmentCard(equipmentCard.getId());
prMacToolUse.setFinished(1);
prMacToolUse.setCreateTime(new Date());
prMacToolUse.setCreateMan(AuthUtil.getUserId());
prMacToolUse.setRfpId(retrospectDefendDTO.getRfpId().toString());
prMacToolUse.setMtnCode(code);
prMacToolUse.setMtuIndex(String.valueOf(retrospectDefendDTO.getLine() ? 1 : 3));
macToolUseService.save(prMacToolUse);
String deviceCode = prMacToolUse.getEquipmentCard() != null ? prMacToolUse.getMtnCode() : "";
log.info("修改设备绑定状态:设备编号:{},批次号:{},槽号:{},方法名:saveRetrospectDefend(),{}", deviceCode, prMacToolUse.getHangNum(), prMacToolUse.getMtnCode(), prMacToolUse.getFinished());
return macToolUseService.save(prMacToolUse);
}
}

@ -0,0 +1,725 @@
package org.springblade.desk.produce.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.desk.basic.pojo.entity.CenterTeam;
import org.springblade.desk.basic.service.ICenterTeamService;
import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity;
import org.springblade.desk.dashboard.service.IBsProcessSetService;
import org.springblade.desk.produce.pojo.dto.MesRbFilePreserveDetailDTO;
import org.springblade.desk.produce.pojo.dto.WorkPlanDto;
import org.springblade.desk.produce.pojo.entity.*;
import org.springblade.desk.produce.pojo.vo.*;
import org.springblade.desk.produce.service.*;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.stream.Collectors;
/**
* 过程质量维护 服务实现类
*
* @author BladeX
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class ProcessQualityMaintenanceServiceImpl implements IProcessQualityMaintenanceService {
private final IWorkPlanService workPlanService;
private final IMacToolUseService macToolUseService;
private final IWorkOrderService workOrderService;
private final ICenterTeamService centerTeamService;
private final IMesQcProduceRunService qcProduceRunService;
private final IMesRbFilePreserveSlotService dsRbFilePreserveSlotService;
private final IDsRbFilePreserveService dsRbFilePreserveService;
private final IBsProcessSetService bsProcessSetService;
private final IMesRbFilePreserveDetailService dsRbFilePreserveDetailService;
private final IMesEquipmentCardService mesEquipmentCardService;
private final IPdaLoadService pdaLoadService;
private final MakeRecServiceImpl makeRecServiceImpl;
@Override
public List<WorkPlanProVO> getWorkOrderProcess(String cardNo) {
return workPlanService.getWorkOrderProcess(cardNo);
}
@Override
public List<MesMacToolUseVO> getProcessBingingRec(Long wpId) {
return macToolUseService.getProcessBingingRec(wpId);
}
@Override
public List<ProduceMonitorFileSlotVO> getDataByMtnCode(Long wpId, String mtnCode) {
// 判断当前工序是否已经接收过
WorkPlan workPlan = workPlanService.getById(wpId);
if (WorkPlan.STATUS_NO_START.equals(workPlan.getStatus())) {
throw new ServiceException("当前工序还未开始暂不能进行维护!!!");
}
Long wcId = null;
if (workPlan.getMakeTeam() != null && "1".equals(workPlan.getCruxProcess())) {
CenterTeam centerTeam = centerTeamService.getByTsId(workPlan.getMakeTeam());
if (centerTeam != null) {
wcId = centerTeam.getWcId();
}
}
List<ProduceMonitorFileSlotVO> dsRbFilePreserveSlotList = new ArrayList<>();
// 拿出此同槽号下的绑定记录
List<MacToolUse> prMacToolUseList = macToolUseService.list(Wrappers.lambdaQuery(MacToolUse.class).eq(MacToolUse::getMtnCode, mtnCode));
// 拿出第一条数据(只要同槽编号一样,绑的模板一定一样)
MacToolUse prMacToolUse = prMacToolUseList.get(0);
List<MesQcProduceRunEntity> qcProduceRunList = qcProduceRunService.list(Wrappers.lambdaQuery(MesQcProduceRunEntity.class)
.eq(MesQcProduceRunEntity::getMtnCode, mtnCode)
.and(q -> q.notLike(MesQcProduceRunEntity::getWorkSlot, "入料区").or().isNull(MesQcProduceRunEntity::getWorkSlot))
.orderByAsc(MesQcProduceRunEntity::getId));
// 获取模板数据
List<MesRbFilePreserveSlotEntity> rbFilePreserveSlotList = new ArrayList<>();
// 如果不为空一定走的是线下
if (prMacToolUse.getRfpId() != null) {
rbFilePreserveSlotList = dsRbFilePreserveSlotService.getByRfpId(Long.valueOf(prMacToolUse.getRfpId()));
} else {
// 线上
List<DsRbFilePreserve> dsRbFilePreserveList = dsRbFilePreserveService.getDataByWcIdAndPpsId(wcId, workPlan.getPpsId(), true);
if (CollectionUtils.isNotEmpty(dsRbFilePreserveList)) {
rbFilePreserveSlotList = dsRbFilePreserveSlotService.getByRfpId(dsRbFilePreserveList.get(0).getId());
}
}
// 组装数据
workOrderService.setRbFilePreserveData(rbFilePreserveSlotList, qcProduceRunList, workPlan, dsRbFilePreserveSlotList, prMacToolUse);
return dsRbFilePreserveSlotList;
}
@Override
public List<DsRbFilePreserve> getRbFilePreserveByWpId(Long wpId) {
WorkPlan workPlan = workPlanService.getById(wpId);
BsProcessSetEntity procedureSet = bsProcessSetService.getById(workPlan.getPpsId());
if ("喷砂".equals(procedureSet.getName()) || "涂色标".equals(procedureSet.getName()) || "超声波清洗".equals(procedureSet.getName())) {
return dsRbFilePreserveService.getDataByWcIdAndPpsId(null, procedureSet.getId(), Boolean.FALSE);
} else if (workPlan.getMakeTeam() != null) {
CenterTeam centerTeam = centerTeamService.getByTsId(workPlan.getMakeTeam());
return dsRbFilePreserveService.getDataByWcIdAndPpsId(centerTeam.getWcId(), procedureSet.getId(), Boolean.FALSE);
}
return null;
}
@Override
public GetByRfpIdVO getByRfpId(Long rfpId) {
GetByRfpIdVO getByRfpIdVO = new GetByRfpIdVO();
List<MesRbFilePreserveSlotEntity> preserveSlotList = dsRbFilePreserveSlotService.getByRfpId(rfpId);
int insertIndex = 0;
if (CollectionUtils.isNotEmpty(preserveSlotList)) {
List<MesRbFilePreserveDetailDTO> childrenList;
// 获取preserveSlotList的ID集合
List<Long> rfpsIdList = preserveSlotList.stream().map(MesRbFilePreserveSlotEntity::getId).toList();
List<MesRbFilePreserveDetailEntity> detailEntities = dsRbFilePreserveDetailService.list(Wrappers.lambdaQuery(MesRbFilePreserveDetailEntity.class).in(MesRbFilePreserveDetailEntity::getRfpsId, rfpsIdList));
// 根据rfpsId分组
Map<Long, List<MesRbFilePreserveDetailEntity>> detailMap = detailEntities.stream().collect(Collectors.groupingBy(MesRbFilePreserveDetailEntity::getRfpsId));
for (MesRbFilePreserveSlotEntity dsRbFilePreserveSlot : preserveSlotList) {
if (Integer.parseInt(dsRbFilePreserveSlot.getInsertIndex()) > insertIndex) {
insertIndex = Integer.parseInt(dsRbFilePreserveSlot.getInsertIndex());
}
List<MesRbFilePreserveDetailEntity> serviceByRfpsId = detailMap.get(dsRbFilePreserveSlot.getId());
childrenList = serviceByRfpsId.stream().map(dsRbFilePreserveDetail -> {
MesRbFilePreserveDetailDTO mesRbFilePreserveDetailDTO = new MesRbFilePreserveDetailDTO();
BeanUtils.copyProperties(dsRbFilePreserveDetail, mesRbFilePreserveDetailDTO);
return mesRbFilePreserveDetailDTO;
}).sorted(Comparator.comparing(MesRbFilePreserveDetailDTO::getDetailIndex)).toList();
dsRbFilePreserveSlot.setChildrenList(childrenList);
}
}
getByRfpIdVO.setInsertIndex(insertIndex);
getByRfpIdVO.setPreserveSlotList(preserveSlotList);
return getByRfpIdVO;
}
@Override
public IPage<MesEquipmentCardEntity> queryEquipmentCard(IPage<MesEquipmentCardEntity> page, String deviceCode) {
LambdaQueryWrapper<MesEquipmentCardEntity> wrapper = Wrappers.lambdaQuery(MesEquipmentCardEntity.class);
if (StringUtils.isNotBlank(deviceCode)) {
wrapper.like(MesEquipmentCardEntity::getDeviceCode, deviceCode).or().like(MesEquipmentCardEntity::getDeviceName, deviceCode);
}
return mesEquipmentCardService.page(page, wrapper);
}
@Override
public List<MesQcProduceRunEntity> getDataByMtnCodeSj(Long wpId, String mtnCode) {
// 判断当前工序是否已经接收过
WorkPlan workPlan = workPlanService.getById(wpId);
if (WorkPlan.STATUS_NO_START.equals(workPlan.getStatus())) {
throw new ServiceException("当前工序还未开始暂不能进行维护!!!");
}
return qcProduceRunService.list(Wrappers.lambdaQuery(MesQcProduceRunEntity.class)
.eq(MesQcProduceRunEntity::getMtnCode, mtnCode)
.and(q -> q.notLike(MesQcProduceRunEntity::getWorkSlot, "入料区").or().isNull(MesQcProduceRunEntity::getWorkSlot))
.orderByAsc(MesQcProduceRunEntity::getId));
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean eleFilesEditSj(EleFilesEditVO eleFilesEditVO) {
String mtnCode = eleFilesEditVO.getMtnCode();
List<MesQcProduceRunEntity> qcProduceRunList = eleFilesEditVO.getMesQcProduceRunEntityList();
Long ecId = eleFilesEditVO.getEcId();
if (ecId == null) {
throw new ServiceException("请选择设备!!!");
}
MesEquipmentCardEntity equipmentCard = mesEquipmentCardService.getById(ecId);
// 如果mtnCode不为null,则代表是修改,否则为新增
if (StringUtils.isNotBlank(mtnCode)) {
for (MesQcProduceRunEntity qcProduceRun : qcProduceRunList) {
if (qcProduceRun.getId() != null) {
qcProduceRunService.updateById(qcProduceRun);
} else {
qcProduceRun.setDeviceId(equipmentCard.getDeviceCode());
qcProduceRun.setMtnCode(mtnCode);
qcProduceRunService.save(qcProduceRun);
}
}
} else {
Long wpId = eleFilesEditVO.getWpId();
WorkPlan workPlan = workPlanService.getById(wpId);
MacToolUse prMacToolUse = new MacToolUse();
prMacToolUse.setWpId(workPlan.getId());
for (MesQcProduceRunEntity qcProduceRun : qcProduceRunList) {
String code = macToolUseService.nextCode(3);
// 创建一条绑定记录
prMacToolUse = new MacToolUse();
prMacToolUse.setWpId(workPlan.getId());
prMacToolUse.setEquipmentCard(equipmentCard.getId());
prMacToolUse.setFinished(1);
prMacToolUse.setMtnCode(code);
macToolUseService.save(prMacToolUse);
qcProduceRun.setMtnCode(code);
qcProduceRun.setDeviceId(equipmentCard.getDeviceCode());
qcProduceRunService.save(qcProduceRun);
}
}
return true;
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean eleFilesEditRb(EleFilesEditVO eleFilesEditVO) {
String mtnCode = eleFilesEditVO.getMtnCode();
List<ProduceMonitorFileSlotVO> preserveSlotList = eleFilesEditVO.getProduceMonitorFileSlotVOList();
// 如果mtnCode不为null,则代表是修改,否则为新增
if (StringUtils.isNotBlank(mtnCode)) {
List<MesQcProduceRunEntity> qcProduceRunList = qcProduceRunService.list(Wrappers.lambdaQuery(MesQcProduceRunEntity.class)
.eq(MesQcProduceRunEntity::getMtnCode, mtnCode)
.and(q -> q.notLike(MesQcProduceRunEntity::getWorkSlot, "入料区").or().isNull(MesQcProduceRunEntity::getWorkSlot))
.orderByAsc(MesQcProduceRunEntity::getId));
MesQcProduceRunEntity qcProduceRunOld = new MesQcProduceRunEntity();
for (ProduceMonitorFileSlotVO dsRbFilePreserveSlot : preserveSlotList) {
for (MesQcProduceRunEntity qcProduceRun : qcProduceRunList) {
//zxh 20250116 获取槽号增加trim函数去除空格
if (dsRbFilePreserveSlot.getSlotName().trim().equals(qcProduceRun.getWorkSlot().trim())) {
qcProduceRunOld = qcProduceRun;
}
}
List<MesRbFilePreserveDetailEntity> childrenList = dsRbFilePreserveSlot.getChildrenList();
this.savePreserveSlotList(childrenList, qcProduceRunOld, dsRbFilePreserveSlot.getRfpsType());
// 如果没有主键需要新增
if (qcProduceRunOld.getId() == null) {
qcProduceRunOld.setMtnCode(mtnCode);
qcProduceRunOld.setDeviceId(qcProduceRunList.get(0).getDeviceId());
qcProduceRunService.save(qcProduceRunOld);
} else {
qcProduceRunService.updateById(qcProduceRunOld);
}
}
} else {
Long wpId = eleFilesEditVO.getWpId();
Long rfpId = eleFilesEditVO.getRfpId();
Long ecId = eleFilesEditVO.getEcId();
Short lineType = eleFilesEditVO.getLineType();
if (ecId == null) {
throw new ServiceException("请选择设备!!!");
}
WorkPlan workPlan = workPlanService.getById(wpId);
MacToolUse prMacToolUse;
MesEquipmentCardEntity equipmentCard = mesEquipmentCardService.getById(ecId);
String code = macToolUseService.nextCode(2);
workPlan.setPrintType((short) 1);
// 创建一条绑定记录
prMacToolUse = new MacToolUse();
prMacToolUse.setWpId(workPlan.getId());
prMacToolUse.setEquipmentCard(equipmentCard.getId());
prMacToolUse.setFinished(1);
prMacToolUse.setCreateMan(AuthUtil.getUserId());
prMacToolUse.setRfpId(rfpId.toString());
prMacToolUse.setMtnCode(code);
if (lineType != null) {
prMacToolUse.setMtuIndex(String.valueOf(lineType));
}
macToolUseService.save(prMacToolUse);
List<MesQcProduceRunEntity> qcProduceRunEntities = new ArrayList<>();
MesQcProduceRunEntity qcProduceRun;
// 创建生产追溯数据
for (ProduceMonitorFileSlotVO dsRbFilePreserveSlot : preserveSlotList) {
qcProduceRun = new MesQcProduceRunEntity();
qcProduceRun.setMtnCode(code);
qcProduceRun.setCreateMan(AuthUtil.getUserName());
qcProduceRun.setDeviceId(equipmentCard.getDeviceCode());
qcProduceRun.setWorkSlot(dsRbFilePreserveSlot.getSlotName());
List<MesRbFilePreserveDetailEntity> childrenList = dsRbFilePreserveSlot.getChildrenList();
this.savePreserveSlotList(childrenList, qcProduceRun, dsRbFilePreserveSlot.getRfpsType());
qcProduceRunEntities.add(qcProduceRun);
}
qcProduceRunService.saveBatch(qcProduceRunEntities);
}
return true;
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean deletedProduceRun(String mtnCode) {
// 删除产生的记录数据
qcProduceRunService.remove(Wrappers.lambdaQuery(MesQcProduceRunEntity.class)
.eq(MesQcProduceRunEntity::getMtnCode, mtnCode)
.and(q -> q.notLike(MesQcProduceRunEntity::getWorkSlot, "入料区").or().isNull(MesQcProduceRunEntity::getWorkSlot)));
// 删除绑定记录
return macToolUseService.remove(Wrappers.lambdaQuery(MacToolUse.class).eq(MacToolUse::getMtnCode, mtnCode));
}
@Override
public List<String> loadPrMacToolUseByMtnCode(String mtnCode) {
return pdaLoadService.loadPrMacToolUseByMtnCode(mtnCode);
}
@Override
public RemarryRedeemRetrospectDefendVO remarryRedeemRetrospectDefend(String cardNo, String line) {
RemarryRedeemRetrospectDefendVO defendVO = new RemarryRedeemRetrospectDefendVO();
WorkPlanDto workPlanDto = makeRecServiceImpl.loadCurrentWp(cardNo);
WorkPlan workPlan = workPlanService.getById(workPlanDto.getWpId());
if (!workPlan.getStatus().equals(WorkPlan.STATUS_START)) {
throw new ServiceException("流程卡为 " + cardNo + " 的订单对应的工序不在加工中暂时不可再维护!");
}
// 查询自动生产追溯是否已经开始
List<MesQcProduceRunEntity> produceRunList = qcProduceRunService.listPrByWpIdIndex(workPlanDto.getWpId(), 2, Boolean.FALSE);
List<MesQcProduceRunEntity> produceRunListIndexOne = new ArrayList<>();
MacToolUse prMacToolUse = null;
// 上线前 没有生产追溯数据
if ("1".equals(line)) {
if (produceRunList != null && !produceRunList.isEmpty()) {
throw new ServiceException("流程卡为 " + cardNo + " 的订单对应的工序已经在已上线,不可再维护!");
}
prMacToolUse = macToolUseService.getDataByWpIdAndIndex(workPlanDto.getWpId(), "1");
// 如果已经维护
produceRunListIndexOne = qcProduceRunService.listPrByWpIdIndex(workPlanDto.getWpId(), 1, Boolean.FALSE);
} else if ("0".equals(line)) {
// 下线后 有自动生产追溯数据
if (produceRunList.isEmpty()) {
throw new ServiceException("流程卡为 " + cardNo + " 的订单对应的工序还未下线,不可再维护!");
}
prMacToolUse = macToolUseService.getDataByWpIdAndIndex(workPlanDto.getWpId(), "3");
// 如果已经维护
produceRunListIndexOne = qcProduceRunService.listPrByWpIdIndex(workPlanDto.getWpId(), 3, Boolean.FALSE);
}
List<ProduceMonitorFileSlotVO> dsRbFilePreserveSlotList = new ArrayList<>();
if (prMacToolUse == null) {
throw new ServiceException("未找到维护的数据!!!");
}
// 获取模板数据
List<MesRbFilePreserveSlotEntity> rbFilePreserveSlotList = dsRbFilePreserveSlotService.getByRfpId(Long.valueOf(prMacToolUse.getRfpId()));
// cdl 20250218 修改分槽同一槽号连续出现
workOrderService.setRbFilePreserveData(rbFilePreserveSlotList, produceRunListIndexOne, workPlan, dsRbFilePreserveSlotList, prMacToolUse);
defendVO.setDsRbFilePreserveSlotList(dsRbFilePreserveSlotList);
defendVO.setMtuId(prMacToolUse.getId());
return defendVO;
}
@Override
public boolean remarryRedeemSaveRetrospectDefend(EleFilesEditVO eleFilesEditVO) {
Long mtuId = eleFilesEditVO.getMtuId();
Boolean line = eleFilesEditVO.getLine();
List<ProduceMonitorFileSlotVO> preserveSlotList = eleFilesEditVO.getProduceMonitorFileSlotVOList();
MacToolUse prMacToolUse = macToolUseService.getById(mtuId);
List<MesQcProduceRunEntity> qcProduceRunsList = null;
// 上线前 没有生产追溯数据
if (Objects.equals(line, Boolean.TRUE)) {
qcProduceRunsList = qcProduceRunService.listPrByWpIdIndex(prMacToolUse.getWpId(), 1, Boolean.FALSE);
} else if (line.equals(Boolean.FALSE)) {
qcProduceRunsList = qcProduceRunService.listPrByWpIdIndex(prMacToolUse.getWpId(), 3, Boolean.FALSE);
}
if (qcProduceRunsList == null || qcProduceRunsList.isEmpty()) {
throw new ServiceException("未找到维护的数据!!!");
}
MesQcProduceRunEntity qcProduceRunOld = null;
for (ProduceMonitorFileSlotVO dsRbFilePreserveSlot : preserveSlotList) {
for (MesQcProduceRunEntity qcProduceRun : qcProduceRunsList) {
if (dsRbFilePreserveSlot.getSlotName().equals(qcProduceRun.getWorkSlot())) {
qcProduceRunOld = qcProduceRun;
}
}
List<MesRbFilePreserveDetailEntity> childrenList = dsRbFilePreserveSlot.getChildrenList();
this.savePreserveSlotList(childrenList, qcProduceRunOld, dsRbFilePreserveSlot.getRfpsType());
qcProduceRunService.updateById(qcProduceRunOld);
}
return false;
}
@Override
public GoodsVO getMaterialMess(String goodsCode) {
return macToolUseService.getMaterialMess(goodsCode);
}
private void savePreserveSlotList(List<MesRbFilePreserveDetailEntity> childrenList, MesQcProduceRunEntity qcProduceRun, Short rfpsType) {
for (int i = 0; i < childrenList.size(); i++) {
MesRbFilePreserveDetailEntity dsRbFilePreserveDetail = childrenList.get(i);
if (childrenList.get(0).getRfpdTime() != null) {
String time = childrenList.get(0).getRfpdTime();
if (org.apache.commons.lang3.StringUtils.isNotBlank(time)) {
time = time.replace("-", "/");
}
qcProduceRun.setInDate(time);
}
if (childrenList.size() > 1 && childrenList.get(1).getRfpdTime() != null) {
String time = childrenList.get(1).getRfpdTime();
if (org.apache.commons.lang3.StringUtils.isNotBlank(time)) {
time = time.replace("-", "/");
}
qcProduceRun.setOutDate(time);
}
if (rfpsType == 1) { // 模板一
if (i == 0) {
qcProduceRun.setDataOne(dsRbFilePreserveDetail.getParamValue());
String time = dsRbFilePreserveDetail.getRfpdTime();
if (org.apache.commons.lang3.StringUtils.isNotBlank(time)) {
time = time.replace("-", "/");
}
qcProduceRun.setInDate(time);
} else if (i == 1) {
qcProduceRun.setDataTwo(dsRbFilePreserveDetail.getParamValue());
String time = dsRbFilePreserveDetail.getRfpdTime();
if (org.apache.commons.lang3.StringUtils.isNotBlank(time)) {
time = time.replace("-", "/");
}
qcProduceRun.setOutDate(time);
}
} else if (rfpsType == 2) { // 模板二
if (i == 2) {
qcProduceRun.setDataOne(dsRbFilePreserveDetail.getParamValue());
}
} else if (rfpsType == 3) { // 模板三
if (i == 2) {
qcProduceRun.setDataOne(dsRbFilePreserveDetail.getParamValue());
} else if (i == 3) {
qcProduceRun.setDataTwo(dsRbFilePreserveDetail.getParamValue());
}
} else if (rfpsType == 4) { // 模板四
if (i == 0) {
qcProduceRun.setDataOne(dsRbFilePreserveDetail.getParamValue());
} else if (i == 1) {
qcProduceRun.setDataTwo(dsRbFilePreserveDetail.getParamValue());
} else if (i == 2) {
qcProduceRun.setDataThree(dsRbFilePreserveDetail.getParamValue());
}
} else if (rfpsType == 5 || rfpsType == 22) { // 模板五
if (i == 0) {
qcProduceRun.setDataOne(dsRbFilePreserveDetail.getParamValue());
} else if (i == 1) {
qcProduceRun.setDataTwo(dsRbFilePreserveDetail.getParamValue());
} else if (i == 2) {
qcProduceRun.setDataThree(dsRbFilePreserveDetail.getParamValue());
} else if (i == 3) {
qcProduceRun.setDataFour(dsRbFilePreserveDetail.getParamValue());
} else if (i == 4) {
qcProduceRun.setDataFive(dsRbFilePreserveDetail.getParamValue());
}
} else if (rfpsType == 6) { // 模板六
if (i == 0) {
qcProduceRun.setDataOne(dsRbFilePreserveDetail.getParamValue());
} else if (i == 1) {
qcProduceRun.setDataTwo(dsRbFilePreserveDetail.getParamValue());
} else if (i == 2) {
qcProduceRun.setDataThree(dsRbFilePreserveDetail.getParamValue());
} else if (i == 3) {
qcProduceRun.setDataFour(dsRbFilePreserveDetail.getParamValue());
} else if (i == 4) {
qcProduceRun.setDataFive(dsRbFilePreserveDetail.getParamValue());
} else if (i == 5) {
qcProduceRun.setDataSix(dsRbFilePreserveDetail.getParamValue());
}
} else if (rfpsType == 7) { // 模板七
if (i == 0) {
qcProduceRun.setDataOne(dsRbFilePreserveDetail.getParamValue());
}
} else if (rfpsType == 8) { // 模板八
if (i == 0) {
qcProduceRun.setDataOne(dsRbFilePreserveDetail.getParamValue());
} else if (i == 1) {
qcProduceRun.setDataTwo(dsRbFilePreserveDetail.getParamValue());
}
} else if (rfpsType == 9) { // 模板九
if (i == 2) {
qcProduceRun.setDataOne(dsRbFilePreserveDetail.getParamValue());
} else if (i == 3) {
qcProduceRun.setDataTwo(dsRbFilePreserveDetail.getParamValue());
} else if (i == 4) {
qcProduceRun.setDataThree(dsRbFilePreserveDetail.getParamValue());
}
} else if (rfpsType == 10) { // 模板十
if (i == 0) {
qcProduceRun.setQualified(dsRbFilePreserveDetail.getQualified());
}
} else if (rfpsType == 11) { // 模板十一
if (i == 2) {
qcProduceRun.setDataOne(dsRbFilePreserveDetail.getParamValue());
} else if (i == 3) {
qcProduceRun.setDataTwo(dsRbFilePreserveDetail.getParamValue());
}
} else if (rfpsType == 12) { // 模板十二
if (i == 0) {
qcProduceRun.setDataOne(dsRbFilePreserveDetail.getRfpdTime());
} else if (i == 1) {
qcProduceRun.setDataTwo(dsRbFilePreserveDetail.getRfpdTime());
} else if (i == 2) {
qcProduceRun.setDataThree(dsRbFilePreserveDetail.getRfpdTime());
}
} else if (rfpsType == 13) { // 模板十三
if (i == 0) {
qcProduceRun.setDataOne(dsRbFilePreserveDetail.getParamValue());
} else if (i == 1) {
qcProduceRun.setDataTwo(dsRbFilePreserveDetail.getParamValue());
} else if (i == 2) {
qcProduceRun.setDataThree(dsRbFilePreserveDetail.getParamValue());
} else if (i == 3) {
qcProduceRun.setDataFour(dsRbFilePreserveDetail.getParamValue());
} else if (i == 4) {
qcProduceRun.setDataFive(dsRbFilePreserveDetail.getParamValue());
} else if (i == 5) {
qcProduceRun.setDataSix(dsRbFilePreserveDetail.getParamValue());
} else if (i == 6) {
qcProduceRun.setDataSeven(dsRbFilePreserveDetail.getParamValue());
} else if (i == 7) {
qcProduceRun.setDataEight(dsRbFilePreserveDetail.getParamValue());
} else if (i == 8) {
qcProduceRun.setDataNine(dsRbFilePreserveDetail.getParamValue());
} else if (i == 9) {
qcProduceRun.setDataTen(dsRbFilePreserveDetail.getParamValue());
}
} else if (rfpsType == 14) { // 模板十四
if (i == 2) {
qcProduceRun.setDataOne(dsRbFilePreserveDetail.getParamValue());
} else if (i == 3) {
qcProduceRun.setDataTwo(dsRbFilePreserveDetail.getRfpdTime());
} else if (i == 4) {
qcProduceRun.setDataThree(dsRbFilePreserveDetail.getParamValue());
} else if (i == 5) {
qcProduceRun.setDataFour(dsRbFilePreserveDetail.getParamValue());
} else if (i == 6) {
qcProduceRun.setDataFive(dsRbFilePreserveDetail.getParamValue());
} else if (i == 7) {
qcProduceRun.setDataSix(dsRbFilePreserveDetail.getParamValue());
} else if (i == 8) {
qcProduceRun.setDataSeven(dsRbFilePreserveDetail.getParamValue());
} else if (i == 9) {
qcProduceRun.setDataEight(dsRbFilePreserveDetail.getParamValue());
} else if (i == 10) {
qcProduceRun.setDataNine(dsRbFilePreserveDetail.getParamValue());
} else if (i == 11) {
qcProduceRun.setDataTen(dsRbFilePreserveDetail.getParamValue());
}
} else if (rfpsType == 15) { // 模板十五
if (i == 2) {
qcProduceRun.setDataOne(dsRbFilePreserveDetail.getParamValue());
} else if (i == 3) {
qcProduceRun.setDataTwo(dsRbFilePreserveDetail.getParamValue());
} else if (i == 4) {
qcProduceRun.setDataThree(dsRbFilePreserveDetail.getParamValue());
} else if (i == 5) {
qcProduceRun.setDataFour(dsRbFilePreserveDetail.getRfpdTime());
} else if (i == 6) {
qcProduceRun.setDataFive(dsRbFilePreserveDetail.getParamValue());
} else if (i == 7) {
qcProduceRun.setDataSix(dsRbFilePreserveDetail.getParamValue());
} else if (i == 8) {
qcProduceRun.setDataSeven(dsRbFilePreserveDetail.getParamValue());
} else if (i == 9) {
qcProduceRun.setDataEight(dsRbFilePreserveDetail.getParamValue());
} else if (i == 10) {
qcProduceRun.setDataNine(dsRbFilePreserveDetail.getParamValue());
} else if (i == 11) {
qcProduceRun.setDataTen(dsRbFilePreserveDetail.getParamValue());
} else if (i == 12) {
qcProduceRun.setDataEleven(dsRbFilePreserveDetail.getParamValue());
} else if (i == 13) {
qcProduceRun.setDataTwelve(dsRbFilePreserveDetail.getParamValue());
}
} else if (rfpsType == 16) { // 模板十六
if (i == 2) {
qcProduceRun.setDataOne(dsRbFilePreserveDetail.getParamValue());
} else if (i == 3) {
qcProduceRun.setDataTwo(dsRbFilePreserveDetail.getRfpdTime());
} else if (i == 4) {
qcProduceRun.setDataThree(dsRbFilePreserveDetail.getParamValue());
} else if (i == 5) {
qcProduceRun.setDataFour(dsRbFilePreserveDetail.getParamValue());
} else if (i == 6) {
qcProduceRun.setDataFive(dsRbFilePreserveDetail.getParamValue());
} else if (i == 7) {
qcProduceRun.setDataSix(dsRbFilePreserveDetail.getParamValue());
} else if (i == 8) {
qcProduceRun.setDataSeven(dsRbFilePreserveDetail.getParamValue());
} else if (i == 9) {
qcProduceRun.setDataEight(dsRbFilePreserveDetail.getParamValue());
} else if (i == 10) {
qcProduceRun.setDataNine(dsRbFilePreserveDetail.getParamValue());
} else if (i == 11) {
qcProduceRun.setDataTen(dsRbFilePreserveDetail.getParamValue());
} else if (i == 12) {
qcProduceRun.setDataEleven(dsRbFilePreserveDetail.getParamValue());
} else if (i == 13) {
qcProduceRun.setDataTwelve(dsRbFilePreserveDetail.getParamValue());
} else if (i == 14) {
qcProduceRun.setDataThirteen(dsRbFilePreserveDetail.getParamValue());
} else if (i == 15) {
qcProduceRun.setDataFourteen(dsRbFilePreserveDetail.getParamValue());
}
} else if (rfpsType == 17) { // 模板十七
if (i == 2) {
qcProduceRun.setDataOne(dsRbFilePreserveDetail.getParamValue());
} else if (i == 3) {
qcProduceRun.setDataTwo(dsRbFilePreserveDetail.getRfpdTime());
} else if (i == 4) {
qcProduceRun.setDataThree(dsRbFilePreserveDetail.getParamValue());
} else if (i == 5) {
qcProduceRun.setDataFour(dsRbFilePreserveDetail.getParamValue());
} else if (i == 6) {
qcProduceRun.setDataFive(dsRbFilePreserveDetail.getParamValue());
} else if (i == 7) {
qcProduceRun.setDataSix(dsRbFilePreserveDetail.getParamValue());
}
} else if (rfpsType == 18) { // 模板十八
if (i == 0) {
qcProduceRun.setDataOne(dsRbFilePreserveDetail.getParamValue());
}
} else if (rfpsType == 19) { // 模板十九 //zxh 20250519 新增模板19和模板20
if (i == 0) {
qcProduceRun.setDataOne(dsRbFilePreserveDetail.getParamValue());
} else if (i == 1) {
qcProduceRun.setDataTwo(dsRbFilePreserveDetail.getParamValue());
} else if (i == 2) {
qcProduceRun.setDataThree(dsRbFilePreserveDetail.getParamValue());
} else if (i == 3) {
qcProduceRun.setDataFour(dsRbFilePreserveDetail.getParamValue());
} else if (i == 4) {
qcProduceRun.setDataFive(dsRbFilePreserveDetail.getParamValue());
} else if (i == 5) {
qcProduceRun.setDataSix(dsRbFilePreserveDetail.getParamValue());
} else if (i == 6) {
qcProduceRun.setDataSeven(dsRbFilePreserveDetail.getParamValue());
} else if (i == 7) {
qcProduceRun.setDataEight(dsRbFilePreserveDetail.getRfpdTime());
} else if (i == 8) {
qcProduceRun.setDataNine(dsRbFilePreserveDetail.getParamValue());
} else if (i == 9) {
qcProduceRun.setDataTen(dsRbFilePreserveDetail.getParamValue());
} else if (i == 10) {
qcProduceRun.setDataEleven(dsRbFilePreserveDetail.getParamValue());
} else if (i == 11) {
qcProduceRun.setDataTwelve(dsRbFilePreserveDetail.getRfpdTime());
}
} else if (rfpsType == 20) { // 模板二十
if (i == 0) {
qcProduceRun.setInDate(dsRbFilePreserveDetail.getRfpdTime());
} else if (i == 1) {
qcProduceRun.setInDate(dsRbFilePreserveDetail.getRfpdTime());
} else if (i == 2) {
qcProduceRun.setOutDate(dsRbFilePreserveDetail.getRfpdTime());
} else if (i == 3) {
qcProduceRun.setOutDate(dsRbFilePreserveDetail.getRfpdTime());
} else if (i == 4) {
qcProduceRun.setDataFive(dsRbFilePreserveDetail.getParamValue());
} else if (i == 5) {
qcProduceRun.setDataSix(dsRbFilePreserveDetail.getParamValue());
} else if (i == 6) {
qcProduceRun.setDataSeven(dsRbFilePreserveDetail.getParamValue());
} else if (i == 7) {
qcProduceRun.setDataEight(dsRbFilePreserveDetail.getParamValue());
}
} else if (rfpsType == 21) { // 模板二一
if (i == 0) {
qcProduceRun.setDataOne(dsRbFilePreserveDetail.getParamValue());
} else if (i == 1) {
qcProduceRun.setDataTwo(dsRbFilePreserveDetail.getParamValue());
} else if (i == 2) {
qcProduceRun.setDataThree(dsRbFilePreserveDetail.getParamValue());
} else if (i == 3) {
qcProduceRun.setDataFour(dsRbFilePreserveDetail.getParamValue());
} else if (i == 4) {
qcProduceRun.setDataFive(dsRbFilePreserveDetail.getParamValue());
} else if (i == 5) {
qcProduceRun.setDataSix(dsRbFilePreserveDetail.getParamValue());
} else if (i == 6) {
qcProduceRun.setDataSeven(dsRbFilePreserveDetail.getParamValue());
} else if (i == 7) {
qcProduceRun.setDataEight(dsRbFilePreserveDetail.getParamValue());
} else if (i == 8) {
qcProduceRun.setDataNine(dsRbFilePreserveDetail.getParamValue());
}
}
String detailName = dsRbFilePreserveDetail.getDetailName();
if (detailName != null) {
if (detailName.contains("温度")) {
qcProduceRun.setTempSlot(dsRbFilePreserveDetail.getParamValue());
} else if (detailName.contains("电导率")) {
qcProduceRun.setEleRate(dsRbFilePreserveDetail.getParamValue());
} else if (detailName.contains("电流") && !(detailName.contains("壳体") || detailName.contains("插针"))) {
qcProduceRun.setEleStream(dsRbFilePreserveDetail.getParamValue());
} else if (detailName.contains("链速")) {
qcProduceRun.setVSpeed(dsRbFilePreserveDetail.getParamValue());
} else if (detailName.contains("镍离子")) {
qcProduceRun.setNiValue(dsRbFilePreserveDetail.getParamValue());
} else if (detailName.contains("pH值")) {
qcProduceRun.setPhValue(dsRbFilePreserveDetail.getParamValue());
}
//zxh 20250604 增加软起时间和工作电压
else if (detailName.contains("软起时间")) {
qcProduceRun.setSoftWorkTime(dsRbFilePreserveDetail.getParamValue());
} else if (detailName.contains("工作电压")) {
qcProduceRun.setVoltage(dsRbFilePreserveDetail.getParamValue());
//zxh 20250617 新增初始电压
} else if (detailName.contains("初始电压")) {
qcProduceRun.setStartVol(dsRbFilePreserveDetail.getParamValue());
}
}
}
}
}

@ -2171,7 +2171,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
workPlanService.updateById(workPlan);
}
private void setRbFilePreserveData(List<MesRbFilePreserveSlotEntity> preserveSlotList, List<MesQcProduceRunEntity> qcProduceRunsList, WorkPlan workPlan, List<ProduceMonitorFileSlotVO> dsRbFilePreserveSlotList, MacToolUse prMacToolUse) {
@Override
public void setRbFilePreserveData(List<MesRbFilePreserveSlotEntity> preserveSlotList, List<MesQcProduceRunEntity> qcProduceRunsList, WorkPlan workPlan, List<ProduceMonitorFileSlotVO> dsRbFilePreserveSlotList, MacToolUse prMacToolUse) {
List<MesRbFilePreserveDetailEntity> dsRbFilePreserveDetailList = null;
ProduceMonitorFileSlotVO newDsRbFilePreserveSlot = null;
MesRbFilePreserveDetailEntity newDsRbFilePreserveDetail = null;

@ -24,6 +24,7 @@ import org.springblade.desk.produce.mapper.PlateAroundMapper;
import org.springblade.desk.produce.mapper.WorkPlanMapper;
import org.springblade.desk.produce.pojo.entity.*;
import org.springblade.desk.produce.pojo.vo.ProduceMonitorWorkPlanVO;
import org.springblade.desk.produce.pojo.vo.WorkPlanProVO;
import org.springblade.desk.produce.pojo.vo.WorkPlanVO;
import org.springblade.desk.produce.service.*;
import org.springblade.desk.quality.pojo.entity.InspectionTask;
@ -310,4 +311,9 @@ public class WorkPlanServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPla
}
this.updateById(workPlan);
}
@Override
public List<WorkPlanProVO> getWorkOrderProcess(String cardNo) {
return baseMapper.getWorkOrderProcess(cardNo);
}
}

Loading…
Cancel
Save