烧结数据打印未完成001

liweidong
pangyang 4 weeks ago
parent 48c98a15d5
commit 0c099b8776
  1. 157
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrintChildCheck.java
  2. 91
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/PrintChildCheckChild.java
  3. 56
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/DsRbFilePreserve.java
  4. 7
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlan.java
  5. 18
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/DsRbFilePreserveVO.java
  6. 6
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/RaiseHand.java
  7. 30
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/WorkPlanItemDetail.java
  8. 2
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/InspectionTaskListVO.java
  9. 58
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/DsRbFilePreserveController.java
  10. 19
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/DsRbFilePreserveMapper.java
  11. 11
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/DsRbFilePreserveMapper.xml
  12. 39
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java
  13. 123
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml
  14. 22
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IDsRbFilePreserveService.java
  15. 40
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/DsRbFilePreserveServiceImpl.java
  16. 37
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/wrapper/DsRbFilePreserveWrapper.java
  17. 18
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/InspectionTaskController.java
  18. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/InspectionTaskMapper.xml
  19. 3
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IInspectionTaskService.java
  20. 600
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/InspectionTaskServiceImpl.java

@ -0,0 +1,157 @@
package org.springblade.desk.produce.pojo.dto;
import java.util.List;
public class PrintChildCheck implements java.io.Serializable {
/**
* @return 序号
* @Author dxl
* @CreateTime 2022/11/7 10:24
*/
private String testOrders;
/**
* @return 检验细项
* @Author dxl
* @CreateTime 2022/11/8 16:22
*/
private List<PrintChildCheckChild> cccList;
/**
* @return 抽样数
* @Author dxl
* @CreateTime 2022/11/7 9:25
*/
private String checkQty;
/**
* @return 合格不合格NA
* @Author dxl
* @CreateTime 2022/11/7 9:25
*/
private String checkResult;
/**
* @return 姓名
* @Author dxl
* @CreateTime 2022/11/7 9:25
*/
private String checkName;
/**
* @return 检验日期
* @Author dxl
* @CreateTime 2022/11/7 9:25
*/
private String checkDate;
/**
* 试验数量
*/
private String testQty;
/**
* @return 检测项目名称
*/
private String testName;
/**
* @return 检测项目实验标准
*/
private String trialStandard;
/**
* @return 设备编码
*/
private String deviceCode;
/**
* @return 检验印章URL
*/
private String imgUrl;
public String getTestOrders() {
return testOrders;
}
public void setTestOrders(String testOrders) {
this.testOrders = testOrders;
}
public String getCheckQty() {
return checkQty;
}
public void setCheckQty(String checkQty) {
this.checkQty = checkQty;
}
public String getCheckName() {
return checkName;
}
public void setCheckName(String checkName) {
this.checkName = checkName;
}
public String getCheckDate() {
return checkDate;
}
public void setCheckDate(String checkDate) {
this.checkDate = checkDate;
}
public String getCheckResult() {
return checkResult;
}
public void setCheckResult(String checkResult) {
this.checkResult = checkResult;
}
public List<PrintChildCheckChild> getCccList() {
return cccList;
}
public void setCccList(List<PrintChildCheckChild> cccList) {
this.cccList = cccList;
}
public String getTestQty() {
return testQty;
}
public void setTestQty(String testQty) {
this.testQty = testQty;
}
public String getTestName() {
return testName;
}
public void setTestName(String testName) {
this.testName = testName;
}
public String getTrialStandard() {
return trialStandard;
}
public void setTrialStandard(String trialStandard) {
this.trialStandard = trialStandard;
}
public String getDeviceCode() {
return deviceCode;
}
public void setDeviceCode(String deviceCode) {
this.deviceCode = deviceCode;
}
public PrintChildCheck() {
}
public String getImgUrl() {
return imgUrl;
}
public void setImgUrl(String imgUrl) {
this.imgUrl = imgUrl;
}
}

@ -0,0 +1,91 @@
package org.springblade.desk.produce.pojo.dto;
/**
* @version V1.0
* @Title: PrintChildCheckChild
* @Author: dxl
* @CreateTime: 2022/11/8 16:18
*/
public class PrintChildCheckChild implements java.io.Serializable {
/**
* @return 名称
* @Author dxl
* @CreateTime 2022/11/7 10:24
*/
private String testName;
/**
* @return 实验标准
* @Author dxl
* @CreateTime 2022/11/7 10:34
*/
private String trialStandard;
/**
* @return 检验值
* @Author dxl
* @CreateTime 2022/11/7 10:34
*/
private String checkValue;
/**
* @return 设备量具
* @Author dxl
* @CreateTime 2022/11/7 10:24
*/
private String emTools;
/**
* @return 检验项Id
* @Author dxl
* @CreateTime 2022/11/8 17:09
*/
private Long wpiId;
public String getTestName() {
return testName;
}
public void setTestName(String testName) {
this.testName = testName;
}
public String getEmTools() {
return emTools;
}
public void setEmTools(String emTools) {
this.emTools = emTools;
}
public String getTrialStandard() {
return trialStandard;
}
public void setTrialStandard(String trialStandard) {
this.trialStandard = trialStandard;
}
public String getCheckValue() {
return checkValue;
}
public void setCheckValue(String checkValue) {
this.checkValue = checkValue;
}
public Long getWpiId() {
return wpiId;
}
public void setWpiId(Long wpiId) {
this.wpiId = wpiId;
}
public PrintChildCheckChild(String testName, String trialStandard, String checkValue, Long wpiId) {
this.testName = testName;
this.trialStandard = trialStandard;
this.checkValue = checkValue;
this.wpiId = wpiId;
}
public PrintChildCheckChild() {
}
}

@ -0,0 +1,56 @@
package org.springblade.desk.produce.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import java.io.Serial;
import java.time.LocalDate;
import java.util.Date;
/**
*
* @author litao
*/
@Data
@TableName("DS_RB_FILE_PRESERVE")
@Schema(description = "DsRbFilePreserve对象")
@EqualsAndHashCode(callSuper = true)
public class DsRbFilePreserve extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
@Schema(description = "作业中心")
private Long wcId;
@Schema(description = "工序")
private Long ppsId;
@Schema(description = "线上线下")
private String line;
@Schema(description = "维护时间")
private LocalDate keepTime;
@Schema(description = "维护人")
private Long keepMan;
@Schema(description = "名称")
private String name;
@Schema(description = "审批状态")
private Short approvalStatus = -1;
@Schema(description = "状态")
private Short rfpStatus = 1;
@Schema(description = "升版ID")
private String versionId;
}

@ -6,6 +6,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import org.springblade.desk.produce.pojo.dto.PrintChildCheck;
import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO;
import org.springblade.desk.quality.pojo.entity.InspectionTask;
import org.springblade.desk.quality.pojo.entity.WorkPlanItem;
@ -327,5 +328,11 @@ public class WorkPlan extends BaseEntity {
private List<MesQcProduceRunEntity> qcProduceRunsList;
@TableField(exist = false)
private Integer totalPreserve = 0;
@TableField(exist = false)
private MesBsAdditionalMessEntity bsAdditionalMess;
@TableField(exist = false)
private List<MesRbFilePreserveSlotEntity> dsRbFilePreserveSlotList;
@TableField(exist = false)
private List<PrintChildCheck> printChildCheck;
}

@ -0,0 +1,18 @@
package org.springblade.desk.produce.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springblade.desk.produce.pojo.entity.DsRbFilePreserve;
import java.util.Date;
/**
* 加工记录 视图实体类
*
* @author BladeX
* @since 2026-02-04
*/
@Data
public class DsRbFilePreserveVO extends DsRbFilePreserve {
}

@ -71,5 +71,11 @@ public class RaiseHand extends BaseEntity {
@Schema(description = "免责金额")
private BigDecimal amount;
/**
* raisHand文件
*/
@Schema(description = "文件路径")
private String fileUrl;
}

@ -3,10 +3,12 @@
*/
package org.springblade.desk.quality.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.StringUtils;
import org.springblade.core.mp.base.BaseEntity;
import java.io.Serial;
@ -149,4 +151,32 @@ public class WorkPlanItemDetail extends BaseEntity {
*/
@Schema(description = "实际[量具]id")
private Long actMtId;
@TableField(exist = false)
private String trialItem;
@TableField(exist = false)
private String trialStandard;
@TableField(exist = false)
private Long wpiId;
public String getGaugeValueNotNUll() {
StringBuffer sb = new StringBuffer();
if(StringUtils.isNotBlank(this.gaugeValue2) && this.gaugeValue6 != "/"){
sb.append(this.gaugeValue1+"/"+this.gaugeValue2+"/");
}
if(StringUtils.isNotBlank(this.gaugeValue4) && this.gaugeValue4 != "/"){
sb.append(this.gaugeValue3+"/"+this.gaugeValue4+"/");
}
if(StringUtils.isNotBlank(this.gaugeValue6) && this.gaugeValue6 != "/"){
sb.append(this.gaugeValue5+"/"+this.gaugeValue6+"/");
}
return sb.toString();
}
}

@ -123,4 +123,6 @@ public class InspectionTaskListVO extends InspectionTask {
private String ppsName;
private Integer yieldType;
}

@ -0,0 +1,58 @@
package org.springblade.desk.produce.controller;
import com.alibaba.nacos.common.utils.CollectionUtils;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springblade.common.utils.CommonUtil;
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.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.desk.produce.pojo.dto.ShiftTransferDTO;
import org.springblade.desk.produce.pojo.dto.TaskCompleteDTO;
import org.springblade.desk.produce.pojo.dto.TaskCompleteOrderDTO;
import org.springblade.desk.produce.pojo.entity.*;
import org.springblade.desk.produce.pojo.vo.ByCardNoByPlanVO;
import org.springblade.desk.produce.pojo.vo.DsRbFilePreserveVO;
import org.springblade.desk.produce.pojo.vo.TaskCompleteVO;
import org.springblade.desk.produce.service.IDisTaskingService;
import org.springblade.desk.produce.service.IDsRbFilePreserveService;
import org.springblade.desk.produce.service.IPdaSaveService;
import org.springblade.desk.produce.service.IWorkPlanLogService;
import org.springblade.system.cache.UserCache;
import org.springblade.system.pojo.entity.User;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.List;
/**
*
*
* @author litao
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/DisTaskingController")
public class DsRbFilePreserveController extends BladeController {
private final IDsRbFilePreserveService dsRbFilePreserveService;
@GetMapping("/page")
@ApiOperationSupport(order = 1)
@Operation(summary = "调度任务分派", description = "传入taskCompleteDTO")
public R<IPage<DsRbFilePreserveVO>> disTaskHandle(DsRbFilePreserve taskCompleteDTO, Query query) {
return R.data(null);
}
}

@ -0,0 +1,19 @@
package org.springblade.desk.produce.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.desk.produce.pojo.entity.DsRbFilePreserve;
import org.springblade.desk.produce.pojo.entity.MacToolUse;
import org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity;
import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO;
import java.util.List;
/**
*
* @author BladeX
*/
public interface DsRbFilePreserveMapper extends BaseMapper<DsRbFilePreserve> {
}

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.springblade.desk.produce.mapper.DsRbFilePreserveMapper">
<!-- 通用查询映射结果 -->
<resultMap id="mesDsRbFilePreserveResultMap" type="org.springblade.desk.produce.pojo.entity.DsRbFilePreserve">
</resultMap>
</mapper>

@ -2,14 +2,16 @@ package org.springblade.desk.produce.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
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.MacToolUse;
import org.springblade.desk.produce.pojo.entity.MakeRec;
import org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
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.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;
@ -44,15 +46,38 @@ public interface WorkPlanMapper extends BaseMapper<WorkPlan> {
MesQcProduceRunEntity getBoxInfo(Long wpId);
List<ProduceMonitorSlotListVO> listSlotInfoGr (Long wpId, Boolean aTrue);
List<ProduceMonitorSlotListVO> listSlotInfo (Long wpId,Boolean aTrue);
List<ProduceMonitorSlotListVO> listSlotInfoList (Long wpId,Boolean aTrue);
List<MacToolUse> listMacToolUse(Long wpId,Boolean aTrue);
MakeRec getByWpId(Long wpId);
Object[] getConcatMrByWpId(Long wpId);
// Object[] getConcatMrByWpId(Long wpId);
WorkPlan getConcatMrByWpId(Long wpId);
List<MesQcProduceRunEntity> listPrByWpIdIndex(Long wpId, Integer index,boolean aTrue);
List<MacToolUse> getDataByWpIdAndIndexList(Long wpId, String indexNum);
List<MesQcProduceRunEntity> listPrByWpIdIndexAndMtnCode(Long wpId, Integer indexNum,String mtnCode);
List<MesQcProduceRunEntity> getBoxInfoByWpIdMtnCode(Long wpId);
List<MesQcProduceRunEntity> getBoxInfoByWpIdMtnCodeList(Long wpId);
List<MesRbFilePreserveDetailDTO> getByRfpsId(Long rfpsId);
MacToolUse getHangNumIsNull(Long wpId);
MacToolUse getDataByWpIdAndIndex(Long wpId, String numberIndex);
List<DsRbFilePreserve> getDataByWcIdAndPpsId(Long wcId, Long ppsId,boolean aTrue);
List<MesRbFilePreserveSlotEntity> getByRfpId(Long rfpId);
// MesQcProduceRunEntity getBoxInfoByWpIdMtnCode(Long wpId);
MesBsAdditionalMessEntity getDataByOneData(String mtnCode,Short indexNum);
List<WorkOrder> findFatherByYoIdMes(Long yoId);
List<WorkPlan> listByWoIdAllMes(Long woId);
List<ProduceMonitorSlotListVO> listSjSlotInfoMes(Long wpId, Boolean aTrue);
List<WorkPlanItem> listByWpIdMes(Long wpId);
List<WorkOrder> findCubByYoIdMes(Long yoId);
List<DsPartRelationEntity> listByPartCodeNew(String partCode, Short indexNum);
List<WorkOrder> findByPartCodeAndMemoMes(String partCode, String memo);
DsPartSub getByPartCodeAndSubCodeMes(String partCode, String subCode);
String getCheckManByNewErpMes(String userName);
List<WorkPlanItemDetail> listByWpiIdMes(Long wpiId);
List<ReviewSheet> getQcReviewSheetListMes(String partCode,String batchNo);
}

@ -97,7 +97,7 @@
</select>
<select id="listSlotInfo" resultType="org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO">
<select id="listSlotInfoList" resultType="org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO">
select a.PART_CODE, a.BATCH_NO, a.WORK_QTY, a.area, a.sumArea,
a.MTN_CODE, a.prod_ident,a.wo_code,a.material,a.yield_type from (
select d.PART_CODE, c.BATCH_NO, b.WORK_QTY, b.WORK_QTY*d.PO_AREA as area,
@ -122,7 +122,7 @@
<select id="listMacToolUse" resultType="org.springblade.desk.produce.pojo.entity.MacToolUse">
select * from MES_MAC_TOOL_USE a
where a.wpId= #{wpId}
where a.wp_id= #{wpId}
<if test="aTrue==true">
and a.finished = false
</if>
@ -131,13 +131,53 @@
<select id="getByWpId" resultType="org.springblade.desk.produce.pojo.entity.MakeRec">
select * from MES_MAKE_REC a
where a.wpId= #{wpId}
where a.wp_id= #{wpId}
order by a.ID desc
</select>
<select id="getConcatMrByWpId" >
select nvl(sum(a.flag_qty),0), nvl(wmsys.wm_concat(a.flag_colour_one),' '), nvl(wmsys.wm_concat(a.flag_colour_two),' '), nvl(wmsys.wm_concat(a.flag_ink),' '), nvl(wmsys.wm_concat(a.flag_matter),' '),
nvl(sum(a.belt_qty),0), nvl(wmsys.wm_concat(a.belt_colour_one),' '), nvl(wmsys.wm_concat(a.belt_colour_two),' '), nvl(wmsys.wm_concat(a.belt_ink),' '), nvl(wmsys.wm_concat(a.belt_matter),' ')
<select id="findCubByYoIdMes" resultType="org.springblade.desk.produce.pojo.entity.WorkOrder">
select * from MES_WORK_ORDER a left join MES_YIELD_ORDER b on a.YO_ID = b.ID where b.FATHER_YO_ID = #{yoId}
</select>
<select id="listByWpIdMes" resultType="org.springblade.desk.quality.pojo.entity.WorkPlanItem">
select * from QA_WORK_PLAN_ITEM a left join MES_WORK_PLAN b on a.wp_id = b.ID where a.wp_id= #{wpId}
</select>
<select id="listByPartCodeNew" resultType="org.springblade.desk.dashboard.pojo.entity.DsPartRelationEntity">
select * from DS_PART_RELATION a left join DS_PART b on a.PART_CODE = b.PART_CODE where a.PART_CODE= #{partCode} and b.SIN_TER_TYPE = #{indexNum}
</select>
<select id="getByPartCodeAndSubCodeMes" resultType="org.springblade.desk.dashboard.pojo.entity.DsPartSub">
select b.*,a.CHILD_PART_CODE as subCode from DS_PART_RELATION a left join DS_PART b
on a.PART_CODE = b.PART_CODE where a.PART_CODE= #{partCode} and a.CHILD_PART_CODE = #{subCode}
</select>
<select id="findByPartCodeAndMemoMes" resultType="org.springblade.desk.produce.pojo.entity.WorkOrder">
select * from MES_WORK_ORDER a left join MES_YIELD_ORDER b on a.YO_ID = b.ID where b.PART_CODE= #{partCode} and b.YP_CODE = #{memo}
</select>
<select id="getCheckManByNewErpMes" resultType="String">
select a.value1,a.value2 from v_rb_qms_checker_seal@nerp_mes_link a where a.checker_name= #{userName}
</select>
<select id="getQcReviewSheetListMes" resultType="org.springblade.desk.quality.pojo.entity.ReviewSheet">
select a.rs_code,a.memo,a.unqualified_qty,a.REVIEW_DATE from QA_REVIEW_SHEET a
-- inner join rb_pr_work_check b on a.wc_id = b.wc_id
inner join MES_WORK_PLAN c on b.wp_id=c.id
inner join MES_WORK_ORDER d on c.wo_id=d.id
inner join MES_YIELD_ORDER e on e.id = d.yo_id
where e.part_code = #{partCode} and e.batch_no = #{batchNo}
</select>
<select id="listByWpiIdMes" resultType="org.springblade.desk.quality.pojo.entity.WorkPlanItemDetail">
select *,b.ITEM_NAME as trialItem,b.STANDARD_NAME as trialStandard,b.ID as wpiId from QA_WORK_PLAN_ITEM_DETAIL a
left join QA_WORK_PLAN_ITEM b on a.WORK_PLAN_ITEM_ID = b.ID where a.WORK_PLAN_ITEM_ID = #{wpiId}
order by a.UPDATE_TIME,a.GAUGE_VALUE1 desc
</select>
<select id="getConcatMrByWpId" resultType="org.springblade.desk.produce.pojo.entity.WorkPlan">
select nvl(sum(a.flag_qty),0) as flagQty, nvl(wmsys.wm_concat(a.flag_colour_one),' ') as flagColourOne, nvl(wmsys.wm_concat(a.flag_colour_two),' ') as flagColourTwo, nvl(wmsys.wm_concat(a.flag_ink),' ') as flagInk, nvl(wmsys.wm_concat(a.flag_matter),' ') as flagMatter,
nvl(sum(a.belt_qty),0) as beltQty, nvl(wmsys.wm_concat(a.belt_colour_one),' ') as beltColourOne, nvl(wmsys.wm_concat(a.belt_colour_two),' ') as beltColourTwo, nvl(wmsys.wm_concat(a.belt_ink),' ') as beltInk, nvl(wmsys.wm_concat(a.belt_matter),' ') as beltMatter
from MES_MAKE_REC a where a.wp_id = #{wpId} order by a.ID desc
</select>
@ -147,7 +187,7 @@
<if test="aTrue == true">
and b.work_slot != '烘箱'
</if>
order by mtn_code, b.pr_id
order by mtn_code, b.id
</select>
<select id="listPrByWpIdIndexAndMtnCode" resultType="org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity">
@ -158,7 +198,41 @@
order by b.ID asc
</select>
<select id="getBoxInfoByWpIdMtnCode" resultType="org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity">
<select id="listSjSlotInfoMes" resultType="org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO">
select a.PART_CODE, a.BATCH_NO, a.WORK_QTY as qua, a.area, a.sumArea as totalArea,a.MTN_CODE, a.prod_ident,a.wo_code,a.material,a.yield_type
from (
select d.PART_CODE, c.BATCH_NO, b.WORK_QTY, b.WORK_QTY*d.PO_AREA as area,
sum(b.WORK_QTY*d.PO_AREA) over() as sumArea,
a.MTN_CODE, d.prod_ident,c.wo_code,f.material,d.yield_type from MES_MAC_TOOL_USE a
inner join MES_WORK_PLAN b on a.WP_ID = b.WP_ID
inner join MES_WORK_ORDER c on b.WO_ID = c.ID
inner join MES_YIELD_ORDER d on c.YO_ID = d.ID
inner join ds_part f on d.part_code = f.part_code
where a.MTN_CODE in(
select a.MTN_CODE from MES_MAC_TOOL_USE a
left join DE_EQUIPMENT_CARD b on a.EQUIPMENT_CARD = b.ID
where a.WP_ID = #{wpId}
<if test="aTrue==true">
and b.CATEGORYS = '产线设备'
</if>
<if test="aTrue==false">
and (b.CATEGORYS not like '%烘箱%' or b.CATEGORYS is null )
</if>
) and a.mtu_index = '2'
)a group by a.PART_CODE, a.BATCH_NO, a.WORK_QTY, a.area, a.sumArea,
a.MTN_CODE, a.prod_ident,a.wo_code,a.material,a.yield_type
</select>
<select id="findFatherByYoIdMes" resultType="org.springblade.desk.produce.pojo.entity.WorkOrder">
select * from pr_work_order a inner join pj_yield_order b on a.yo_id = b.id and b.id = #{yoId}
</select>
<select id="listByWoIdAllMes" resultType="org.springblade.desk.produce.pojo.entity.WorkPlan">
select a.* from rb_pr_work_plan a where a.wo_id= #{woId} order by orders asc
</select>
<select id="getBoxInfoByWpIdMtnCodeList" resultType="org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity">
select min(c.IN_DATE), max(c.OUT_DATE), 'Max:'||max(c.TEMP_SLOT)||'/'||'Min:'||min(c.temp_slot), max(c.DEVICE_ID)
from MES_QC_PRODUCE_RUN c where c.mtn_code in(
select a.mtn_code from MES_MAC_TOOL_USE a left join MES_EQUIPMENT_CARD b on a.EQUIPMENT_CARD = b.ID
@ -167,15 +241,29 @@
</select>
<select id="getDataByWpIdAndIndexList" resultType="org.springblade.desk.produce.pojo.entity.MacToolUse">
select b.* from MES_MAC_TOOL_USE a
select a.* from MES_MAC_TOOL_USE a
left join MES_WORK_PLAN wp on a.WP_ID = wp.ID
where wp.Id=#{wpId} and a.mtu_index=#{indexNum} order by a.mtuId
where wp.Id=#{wpId} and a.mtu_index=#{indexNum} order by a.Id
</select>
<select id="getDataByWpIdAndIndex" resultType="org.springblade.desk.produce.pojo.entity.MacToolUse">
select a.* from MES_MAC_TOOL_USE a
left join MES_WORK_PLAN wp on a.WP_ID = wp.ID
where wp.Id=#{wpId} and a.mtu_index=#{numberIndex} order by a.Id desc
</select>
<select id="getHangNumIsNull" resultType="org.springblade.desk.produce.pojo.entity.MacToolUse">
select a.* from MES_MAC_TOOL_USE a where a.wp_id = #{wpId} and hang_num is not null
</select>
<select id="getDataByWcIdAndPpsId" resultType="org.springblade.desk.produce.pojo.entity.DsRbFilePreserve">
select from DS_RB_FILE_PRESERVE a where 1=1
<if test="wcId != null">
and a.WC_ID = #{wcId}
</if>
and a.PPS_ID = #{ppsId} and a.LINE = 2
</select>
<select id="getByRfpsId" resultType="org.springblade.desk.produce.pojo.dto.MesRbFilePreserveDetailDTO">
select * ,slot.rfps_type as rfpsType from MES_RB_FILE_PRESERVE_DETAIL a
@ -185,6 +273,21 @@
</select>
<select id="getByRfpId" resultType="org.springblade.desk.produce.pojo.entity.MesRbFilePreserveSlotEntity">
select a.* from MES_RB_FILE_PRESERVE_SLOT a
left join DS_RB_FILE_PRESERVE slot on a.Id = slot.RFP_ID
where slot.RFP_ID =#{rfpId}
</select>
<select id="getDataByOneData" resultType="org.springblade.desk.produce.pojo.entity.MesBsAdditionalMessEntity">
select a.* from MES_BS_ADDITIONAL_MESS a
where a.ONE_DATA =#{mtnCode} and a.TYPE = #{indexNum}
</select>
<select id="loadPrMacToolUseByMtnCode" resultType="java.lang.String">
SELECT
c.card_no

@ -0,0 +1,22 @@
package org.springblade.desk.produce.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.produce.pojo.entity.DsRbFilePreserve;
import org.springblade.desk.produce.pojo.entity.MacToolUse;
import org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO;
import java.util.List;
/**
*
*
* @author BladeX
* @since 2025-11-28
*/
public interface IDsRbFilePreserveService extends BaseService<DsRbFilePreserve> {
}

@ -0,0 +1,40 @@
package org.springblade.desk.produce.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity;
import org.springblade.desk.dashboard.service.IBsProcessSetService;
import org.springblade.desk.device.pojo.entity.RackSetEntity;
import org.springblade.desk.device.service.IRackSetService;
import org.springblade.desk.produce.mapper.DsRbFilePreserveMapper;
import org.springblade.desk.produce.mapper.MacToolUseMapper;
import org.springblade.desk.produce.pojo.entity.DsRbFilePreserve;
import org.springblade.desk.produce.pojo.entity.MacToolUse;
import org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO;
import org.springblade.desk.produce.service.IDsRbFilePreserveService;
import org.springblade.desk.produce.service.IMacToolUseService;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Random;
/**
* 设备工装使用记录 服务实现类
*
* @author BladeX
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class DsRbFilePreserveServiceImpl extends BaseServiceImpl<DsRbFilePreserveMapper, DsRbFilePreserve> implements IDsRbFilePreserveService {
}

@ -0,0 +1,37 @@
package org.springblade.desk.produce.wrapper;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.desk.produce.pojo.entity.DsRbFilePreserve;
import org.springblade.desk.produce.pojo.entity.MesRbFilePreserveDetailEntity;
import org.springblade.desk.produce.pojo.vo.DsRbFilePreserveVO;
import org.springblade.desk.produce.pojo.vo.MesRbFilePreserveDetailVO;
import java.util.Objects;
/**
* 热表电子档案维护-明细 包装类,返回视图层所需的字段
*
* @author BladeX
* @since 2026-02-05
*/
public class DsRbFilePreserveWrapper extends BaseEntityWrapper<DsRbFilePreserve, DsRbFilePreserveVO> {
public static DsRbFilePreserveWrapper build() {
return new DsRbFilePreserveWrapper();
}
@Override
public DsRbFilePreserveVO entityVO(DsRbFilePreserve mesRbFilePreserveDetail) {
DsRbFilePreserveVO mesRbFilePreserveDetailVO = Objects.requireNonNull(BeanUtil.copyProperties(mesRbFilePreserveDetail, DsRbFilePreserveVO.class));
//User createUser = UserCache.getUser(mesRbFilePreserveDetail.getCreateUser());
//User updateUser = UserCache.getUser(mesRbFilePreserveDetail.getUpdateUser());
//mesRbFilePreserveDetailVO.setCreateUserName(createUser.getName());
//mesRbFilePreserveDetailVO.setUpdateUserName(updateUser.getName());
return mesRbFilePreserveDetailVO;
}
}

@ -199,6 +199,24 @@ public class InspectionTaskController extends BladeController {
// return ResultInfo.ok(prWorkOrderService.newPagePrintEleFiles(woId, planList,moduleList));
}
@Operation(summary = "烧结电子档案打印")
@PostMapping(value = "/pagePrintSj")
public R pagePrintSj(@RequestBody JSONObject data) {
Long woId = data.getLong("woId");
Integer yieldType = data.getInteger("yieldType");
List<Boolean> planList = new ArrayList<>();
List<Boolean> moduleList = new ArrayList<>();
if(data.getJSONArray("planList") != null){
planList= data.getJSONArray("planList").toJavaList(Boolean.class); // 工序
moduleList= data.getJSONArray("moduleList").toJavaList(Boolean.class); // 模块
}
Object pagePrintSjEleFiles = service.pagePrintSjEleFiles(woId, yieldType,planList,moduleList);
return R.data(pagePrintSjEleFiles);
}
/**
* [检验任务] 自定义分页

@ -250,6 +250,7 @@
wo.batch_no AS poBatchNo,
ps.NAME AS currentProcessName,
yo.PRODUCT_IDENT AS prodIdent,
yo.YIELD_TYPE as yieldType,
yo.YP_AREA * wo.MAKE_QTY AS areaTotal,
yo.YP_AREA AS area,
wo.MAKE_QTY AS poQty,

@ -121,4 +121,7 @@ public interface IInspectionTaskService extends BaseService<InspectionTask> {
R sameResultCopy(Long sourceId, Long targetId);
InspectionTask refreshStatusAndQty(Long id);
Object pagePrintSjEleFiles(Long woId, Integer yieldType,List<Boolean> planList, List<Boolean> moduleList);
}

@ -4,6 +4,7 @@
package org.springblade.desk.quality.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -34,6 +35,8 @@ import org.springblade.desk.basic.util.IdUtil;
import org.springblade.desk.basic.util.StatusCountMap;
import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity;
import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
import org.springblade.desk.dashboard.pojo.entity.DsPartRelationEntity;
import org.springblade.desk.dashboard.pojo.entity.DsPartSub;
import org.springblade.desk.dashboard.service.IBsProcessSetService;
import org.springblade.desk.dashboard.service.IDsPartService;
import org.springblade.desk.device.pojo.entity.FeiBaSetEntity;
@ -46,6 +49,8 @@ import org.springblade.desk.order.service.IYieldOrderService;
import org.springblade.desk.produce.mapper.WorkOrderMapper;
import org.springblade.desk.produce.mapper.WorkPlanMapper;
import org.springblade.desk.produce.pojo.dto.MesRbFilePreserveDetailDTO;
import org.springblade.desk.produce.pojo.dto.PrintChildCheck;
import org.springblade.desk.produce.pojo.dto.PrintChildCheckChild;
import org.springblade.desk.produce.pojo.entity.*;
import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO;
import org.springblade.desk.produce.service.IMesEquipmentCardService;
@ -72,9 +77,12 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
import static com.fasterxml.jackson.databind.type.LogicalType.DateTime;
/**
* [检验任务] 服务实现类
*
@ -471,7 +479,17 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
// 生产过程(放在获取检验记录下面,这个方法会排除数据)
this.getNewProcess(wpList, jsonObj, planList);
if (moduleList.get(3)) {
// 审理单记录
// PrWorkOrder wor = this.getByKey(woId);
// PjYieldOrder yo = wo.getPjYieldOrder();
// jsonObj.put("modelFive", qcReviewSheetDao.getQcReviewSheetList(yo.getPartCode(), yo.getBatchNo()));
jsonObj.put("modelFive", null);
}
if (moduleList.get(2)) {
// 镀后入库记录
jsonObj.put("modelFour", wpList.get(wpList.size() - 1));
}
return jsonObj;
}
@ -486,6 +504,9 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
// }
List<WorkPlan> workPlanList = new ArrayList<>();
for (int i = 0; i < newWpList.size(); i++) {
// if(i == modelFlag.size()-1){
// break;
// }
if (modelFlag.get(i)) {
WorkPlan prWorkPlan = newWpList.get(i);
this.getProcessByWp(prWorkPlan);
@ -516,9 +537,9 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
if (process.getName().equals("固溶")) {
slotList = workPlanMapper.listSlotInfoGr(workPlan.getId(), Boolean.FALSE);
} else {
slotList = workPlanMapper.listSlotInfo(workPlan.getId(), Boolean.TRUE);
slotList = workPlanMapper.listSlotInfoList(workPlan.getId(), Boolean.TRUE);
if (slotList == null || slotList.size() == 0) {
slotList = workPlanMapper.listSlotInfo(workPlan.getId(), Boolean.FALSE);
slotList = workPlanMapper.listSlotInfoList(workPlan.getId(), Boolean.FALSE);
}
}
// 2025-07-23 线上迁移修改 删除了prMacToolUseService.listSlotInfo方法调用
@ -570,20 +591,20 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
}
}
Object[] obs = workPlanMapper.getConcatMrByWpId(workPlan.getId());
if (obs.length > 0) {
WorkPlan plan = workPlanMapper.getConcatMrByWpId(workPlan.getId());
if (null != plan) {
// 色标数据
workPlan.setFlagQty(Double.valueOf(obs[0].toString()));
workPlan.setFlagColourOne(obs[1].toString());
workPlan.setFlagColourTwo(obs[2].toString());
workPlan.setFlagInk(obs[3].toString());
workPlan.setFlagMatter(obs[4].toString());
workPlan.setFlagQty(Double.valueOf(plan.getFlagQty().toString()));
workPlan.setFlagColourOne(plan.getFlagColourOne().toString());
workPlan.setFlagColourTwo(plan.getFlagColourTwo().toString());
workPlan.setFlagInk(plan.getFlagInk().toString());
workPlan.setFlagMatter(plan.getFlagMatter().toString());
// 色带数据
workPlan.setBeltQty(Double.valueOf(obs[5].toString()));
workPlan.setBeltColourOne(obs[6].toString());
workPlan.setBeltColourTwo(obs[7].toString());
workPlan.setBeltInk(obs[8].toString());
workPlan.setBeltMatter(obs[9].toString());
workPlan.setBeltQty(Double.valueOf(plan.getBeltQty().toString()));
workPlan.setBeltColourOne(plan.getBeltColourOne().toString());
workPlan.setBeltColourTwo(plan.getBeltColourTwo().toString());
workPlan.setBeltInk(plan.getBeltInk().toString());
workPlan.setBeltMatter(plan.getBeltMatter().toString());
}
List<MesQcProduceRunEntity> qcProduceRunsList;
@ -635,7 +656,7 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
qcProduceRunsList = workPlanMapper.listPrByWpIdIndexAndMtnCode(workPlan.getId(), 1, prMacToolUseItem.getMtnCode());
// 烘箱信息(从设备,工装使用记录获取)
// boxInfo = workPlanMapper.getBoxInfoByWpIdMtnCode(workPlan.getId());
List<MesQcProduceRunEntity> runs = workPlanMapper.getBoxInfoByWpIdMtnCode(workPlan.getId());
List<MesQcProduceRunEntity> runs = workPlanMapper.getBoxInfoByWpIdMtnCodeList(workPlan.getId());
if(runs != null && runs.size() > 0){
boxInfo = runs.get(0);
}
@ -661,105 +682,115 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
//1111111111111111111111111111111111111111111111
// // 根据电子档案维护组装数据(自动)
// prMacToolUse = prMacToolUseService.getDataByWpIdAndIndex(workPlan.getWpId(), "2");
// if (prMacToolUse != null && prMacToolUse.getMtuId() != null) {
// // 获取模板数据
// List<DsRbFilePreserve> dsRbFilePreserveList = null;
// if (workPlan.getProcedureSet() != null &&
// ("喷砂".equals(workPlan.getProcedureSet().getPpsName()) || "涂色标".equals(workPlan.getProcedureSet().getPpsName()))) {
// dsRbFilePreserveList = dsRbFilePreserveService.getDataByWcIdAndPpsId(null,
// workPlan.getProcedureSet().getPpsId(), Boolean.TRUE);
// } else {
// dsRbFilePreserveList = dsRbFilePreserveService.getDataByWcIdAndPpsId(bsCenterTeam.getBsWorkCenter().getWcId(),
// workPlan.getProcedureSet().getPpsId(), Boolean.TRUE);
// }
// if (dsRbFilePreserveList != null && dsRbFilePreserveList.size() > 0) {
// preserveSlotList = dsRbFilePreserveSlotService.getByRfpId(dsRbFilePreserveList.get(0).getRfpId());
// qcProduceRunsList = qcProduceRunService.listPrByWpIdIndex(workPlan.getWpId(), 2, Boolean.TRUE);
//
// // 烘箱信息(从设备,工装使用记录获取)
// boxInfo = prMacToolUseService.getBoxInfoByWpIdMtnCode(workPlan.getWpId());
// if (qcProduceRunsList != null && qcProduceRunsList.size() > 0 && StringUtils.isNotBlank(boxInfo.getInDate())) {
// qcProduceRunsList.add(boxInfo);
// }
// if (qcProduceRunsList != null && qcProduceRunsList.size() > 0) {
// //验证qc中重复槽子
//// Boolean checkQcRepeat = this.checkQcRepeat(qcProduceRunsList);
//// if (checkQcRepeat) {
//// //返镍排序
//// this.setRbFilePreserveDataFn(preserveSlotList, qcProduceRunsList, workPlan,
//// dsRbFilePreserveSlotList, prMacToolUse);
//// } else {
// // cdl 20250218 修改分槽同一槽号连续出现
// this.setRbFilePreserveData(preserveSlotList, qcProduceRunsList, workPlan,
// dsRbFilePreserveSlotList, prMacToolUse);
//// }
//
// // cdl
// if (!(num > 0)) {
// workPlan.setTotalPreserve(workPlan.getTotalPreserve() + 1);
// 根据电子档案维护组装数据(自动)
prMacToolUse = workPlanMapper.getDataByWpIdAndIndex(workPlan.getId(), "2");
if (prMacToolUse != null && prMacToolUse.getId() != null) {
// 获取模板数据
List<DsRbFilePreserve> dsRbFilePreserveList = null;
if (workPlan.getPpsId() != null){
BsProcessSetEntity process = processSetService.getById(workPlan.getPpsId());
if("喷砂".equals(process.getName()) || "涂色标".equals(process.getName())) {
dsRbFilePreserveList = workPlanMapper.getDataByWcIdAndPpsId(null,
workPlan.getPpsId(), Boolean.TRUE);
} else {
dsRbFilePreserveList = workPlanMapper.getDataByWcIdAndPpsId(bsCenterTeam.getWcId(),
workPlan.getPpsId(), Boolean.TRUE);
}
}
if (dsRbFilePreserveList != null && dsRbFilePreserveList.size() > 0) {
preserveSlotList = workPlanMapper.getByRfpId(dsRbFilePreserveList.get(0).getId());
qcProduceRunsList = workPlanMapper.listPrByWpIdIndex(workPlan.getId(), 2, Boolean.TRUE);
List<MesQcProduceRunEntity> runs = workPlanMapper.getBoxInfoByWpIdMtnCodeList(workPlan.getId());
if(runs != null && runs.size() > 0){
boxInfo = runs.get(0);
}
// 烘箱信息(从设备,工装使用记录获取)
// boxInfo = workPlanMapper.getBoxInfoByWpIdMtnCode(workPlan.getId());
if (qcProduceRunsList != null && qcProduceRunsList.size() > 0 && StringUtils.isNotBlank(boxInfo.getInDate())) {
qcProduceRunsList.add(boxInfo);
}
if (qcProduceRunsList != null && qcProduceRunsList.size() > 0) {
//验证qc中重复槽子
// Boolean checkQcRepeat = this.checkQcRepeat(qcProduceRunsList);
// if (checkQcRepeat) {
// //返镍排序
// this.setRbFilePreserveDataFn(preserveSlotList, qcProduceRunsList, workPlan,
// dsRbFilePreserveSlotList, prMacToolUse);
// } else {
// cdl 20250218 修改分槽同一槽号连续出现
this.setRbFilePreserveData(preserveSlotList, qcProduceRunsList, workPlan,
dsRbFilePreserveSlotList, prMacToolUse);
// }
// num += 1;
// }
// }
// // 获取额外面积数据
// BsAdditionalMess dataByMtuCode = bsAdditionalMessDao.getDataByOneData(prMacToolUse.getMtnCode(), BsAdditionalMess.TYPE_ONE);
// workPlan.setBsAdditionalMess(dataByMtuCode);
// }
// cdl
if (!(num > 0)) {
workPlan.setTotalPreserve(workPlan.getTotalPreserve() + 1);
}
num += 1;
}
}
// 获取额外面积数据
MesBsAdditionalMessEntity dataByMtuCode = workPlanMapper.getDataByOneData(prMacToolUse.getMtnCode(), MesBsAdditionalMessEntity.TYPE_ONE);
workPlan.setBsAdditionalMess(dataByMtuCode);
}
//222222222222222222222222222222222222222222222
// // 根据电子档案维护组装数据(线下)
//// prMacToolUse = prMacToolUseService.getDataByWpIdAndIndex(workPlan.getWpId(), "3");
//// if (prMacToolUse != null && prMacToolUse.getMtuId() != null) {
//// // 获取模板数据
//// preserveSlotList = dsRbFilePreserveSlotService.getByRfpId(Long.valueOf(prMacToolUse.getRfpId()));
//// qcProduceRunsList = qcProduceRunService.listPrByWpIdIndex(workPlan.getWpId(), 3, Boolean.FALSE);
//// // 烘箱信息(从设备,工装使用记录获取)
//// boxInfo = prMacToolUseService.getBoxInfoByWpIdMtnCode(workPlan.getWpId());
//// if (StringUtils.isNotBlank(boxInfo.getInDate())) {
//// qcProduceRunsList.add(boxInfo);
//// }
//// this.setRbFilePreserveData(preserveSlotList, qcProduceRunsList, workPlan, dsRbFilePreserveSlotList);
//// //zxh 20241231 注释下方代码
////// if (qcProduceRunsList != null && qcProduceRunsList.size() > 0) {
////// workPlan.setTotalPreserve(workPlan.getTotalPreserve() + 1);
////// }
//// }
// //zxh 20250117 解决单工序绑定两个手动记录只显示一个问题
// List<PrMacToolUse> prMacToolUseList = prMacToolUseService.getDataByWpIdAndIndexList(workPlan.getWpId(), "3");
// if (prMacToolUseList != null && prMacToolUseList.size() > 0) {
// for (PrMacToolUse prMacToolUseSd : prMacToolUseList) {
// if (prMacToolUseSd != null && prMacToolUseSd.getMtuId() != null) {
// // 获取模板数据
// preserveSlotList = dsRbFilePreserveSlotService.getByRfpId(Long.valueOf(prMacToolUseSd.getRfpId()));
// qcProduceRunsList = qcProduceRunService.listPrByWpIdIndexAndMtnCode(workPlan.getWpId(), 3, prMacToolUseSd.getMtnCode());
// // 烘箱信息(从设备,工装使用记录获取)
// boxInfo = prMacToolUseService.getBoxInfoByWpIdMtnCode(workPlan.getWpId());
// if (StringUtils.isNotBlank(boxInfo.getInDate())) {
// qcProduceRunsList.add(boxInfo);
// }
//
// if (qcProduceRunsList != null && qcProduceRunsList.size() > 0) {
//
// // cdl 20250218 修改分槽同一槽号连续出现
// this.setRbFilePreserveData(preserveSlotList, qcProduceRunsList, workPlan,
// dsRbFilePreserveSlotList, prMacToolUseSd);
// if (!(num > 0)) {
// workPlan.setTotalPreserve(workPlan.getTotalPreserve() + 1);
// }
// }
// }
// 根据电子档案维护组装数据(线下)
// prMacToolUse = prMacToolUseService.getDataByWpIdAndIndex(workPlan.getWpId(), "3");
// if (prMacToolUse != null && prMacToolUse.getMtuId() != null) {
// // 获取模板数据
// preserveSlotList = dsRbFilePreserveSlotService.getByRfpId(Long.valueOf(prMacToolUse.getRfpId()));
// qcProduceRunsList = qcProduceRunService.listPrByWpIdIndex(workPlan.getWpId(), 3, Boolean.FALSE);
// // 烘箱信息(从设备,工装使用记录获取)
// boxInfo = prMacToolUseService.getBoxInfoByWpIdMtnCode(workPlan.getWpId());
// if (StringUtils.isNotBlank(boxInfo.getInDate())) {
// qcProduceRunsList.add(boxInfo);
// }
// this.setRbFilePreserveData(preserveSlotList, qcProduceRunsList, workPlan, dsRbFilePreserveSlotList);
// //zxh 20241231 注释下方代码
//// if (qcProduceRunsList != null && qcProduceRunsList.size() > 0) {
//// workPlan.setTotalPreserve(workPlan.getTotalPreserve() + 1);
//// }
// }
//zxh 20250117 解决单工序绑定两个手动记录只显示一个问题
List<MacToolUse> prMacToolUseList = workPlanMapper.getDataByWpIdAndIndexList(workPlan.getId(), "3");
if (prMacToolUseList != null && prMacToolUseList.size() > 0) {
for (MacToolUse prMacToolUseSd : prMacToolUseList) {
if (prMacToolUseSd != null && prMacToolUseSd.getId() != null) {
// 获取模板数据
preserveSlotList = workPlanMapper.getByRfpId(Long.valueOf(prMacToolUseSd.getRfpId()));
qcProduceRunsList = workPlanMapper.listPrByWpIdIndexAndMtnCode(workPlan.getId(), 3, prMacToolUseSd.getMtnCode());
// 烘箱信息(从设备,工装使用记录获取)
// boxInfo = prMacToolUseService.getBoxInfoByWpIdMtnCode(workPlan.getId());
List<MesQcProduceRunEntity> runs = workPlanMapper.getBoxInfoByWpIdMtnCodeList(workPlan.getId());
if(runs != null && runs.size() > 0){
boxInfo = runs.get(0);
}
if (StringUtils.isNotBlank(boxInfo.getInDate())) {
qcProduceRunsList.add(boxInfo);
}
if (qcProduceRunsList != null && qcProduceRunsList.size() > 0) {
// cdl 20250218 修改分槽同一槽号连续出现
this.setRbFilePreserveData(preserveSlotList, qcProduceRunsList, workPlan,
dsRbFilePreserveSlotList, prMacToolUseSd);
if (!(num > 0)) {
workPlan.setTotalPreserve(workPlan.getTotalPreserve() + 1);
}
}
}
}
}
}
// workPlan.setDsRbFilePreserveSlotList(dsRbFilePreserveSlotList);
workPlan.setDsRbFilePreserveSlotList(dsRbFilePreserveSlotList);
}
@ -1277,6 +1308,369 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
return task;
}
private JSONObject glassCake(Long woId) {
JSONObject obj = new JSONObject();
// 子件订单信息
WorkOrder prWorkOrder =workOrderMapper.selectById(woId);
YieldOrder yieldOrder = yieldOrderMapper.selectById(prWorkOrder.getYoId());
// DsPartEntity dsPart = dsPartService.getByPartCode(prWorkOrder.getPjYieldOrder().getPartCode());
QueryWrapper<DsPartEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("part_code", yieldOrder.getPartCode());
List<DsPartEntity> dsPartList = partService.list(queryWrapper);
DsPartEntity dsPart = new DsPartEntity();
if(null != dsPartList && dsPartList.size() > 0){
dsPart = dsPartList.get(0);
}
// 获取工序
List<WorkPlan> prWorkPlanList = workPlanMapper.listByWoIdAllMes(prWorkOrder.getId());
obj.put("prWorkOrder", prWorkOrder);
obj.put("dsPart", dsPart);
List<WorkPlanItem> prWorkPlanItems;
List<PrintChildCheck> printChildCheckList = new ArrayList<>();
for (WorkPlan prWorkPlan : prWorkPlanList) {
// // 同槽信息
// List<QcSlotInfo> slotList = prMacToolUseService.listSjSlotInfo(prWorkPlan.getWpId(), Boolean.FALSE);
// prWorkPlan.setSlotList(slotList);
//
// // 设备绑定记录
// List<QcProduceRun> prList = qcProduceRunService.listPrByWpId(prWorkPlan.getWpId());
// prWorkPlan.setPrList(prList);
this.getProcessByWp(prWorkPlan);
prWorkPlanItems = workPlanMapper.listByWpIdMes(prWorkPlan.getId());
if (prWorkPlanItems != null && prWorkPlanItems.size() > 0) {
PrintChildCheck printChildCheck;
for (WorkPlanItem prWorkPlanItem : prWorkPlanItems) {
printChildCheck = new PrintChildCheck();
// printChildCheck.setTestOrders(prWorkPlanItem.getTrialNo());
// printChildCheck.setTestName(prWorkPlanItem.getTrialItem());
// printChildCheck.setTrialStandard(prWorkPlanItem.getTrialStandard());
printChildCheck.setTestOrders(prWorkPlanItem.getItemCode());
printChildCheck.setTestName(prWorkPlanItem.getItemName());
printChildCheck.setTrialStandard(prWorkPlanItem.getStandardName());
printChildCheck.setCheckResult(prWorkPlanItem.getCheckResult() == -1 ? "未检验" : prWorkPlanItem.getCheckResult() == 1 ? "合格" :
prWorkPlanItem.getCheckResult() == 2 ? "不合格" : prWorkPlanItem.getCheckResult() == 3 ? "NA" : "");
if (prWorkPlanItem.getCheckUserId() != null) {
R<User> user = userClient.userInfoById(prWorkPlanItem.getCheckUserId());
if(null != user && null != user.getData()){
printChildCheck.setCheckName(user.getData().getRealName());
}
}
if (prWorkPlanItem.getCheckDate() != null) {
printChildCheck.setCheckDate(prWorkPlanItem.getCheckDate().toString());
}
printChildCheckList.add(printChildCheck);
}
prWorkPlan.setPrintChildCheck(printChildCheckList);
}
}
obj.put("prWorkPlanList", prWorkPlanList);
return obj;
}
private List<WorkOrder> checkOrderSj(WorkOrder prWorkOrder) {
//B号为空则直接跳过
YieldOrder yieldOrder = yieldOrderMapper.selectById(prWorkOrder.getYoId());
if (StringUtils.isBlank(yieldOrder.getRoamNo())) {
return null;
}
//非烧结零件跳过子件验证
if (!yieldOrder.getYieldType().equals(YieldOrder.YIELD_TYPE_2)) {
return null;
}
// String roamNoText = dsPartService.findNameByRoamNo(prWorkOrder.getPjYieldOrder().getPartCode(), prWorkOrder.getPjYieldOrder().getRoamNo());
// if (StringUtils.isBlank(roamNoText)) {
// return null;
// }
//
// //如果部件b号不带有封接字样, 则不显示子件
// if (!roamNoText.contains("封接")) {
// return null;
// }
//获取到所有除玻璃饼外的其他子件车间订单
List<WorkOrder> subList = workPlanMapper.findCubByYoIdMes(yieldOrder.getId());
//获取到部件下面的玻璃饼信息
List<DsPartRelationEntity> dpsList = workPlanMapper.listByPartCodeNew(yieldOrder.getPartCode(), DsPartSub.SIN_TER_TYPE_BLB);
if (dpsList != null && dpsList.size() > 0) {
List<WorkOrder> blbList;
for (DsPartRelationEntity dps : dpsList) {
blbList = workPlanMapper.findByPartCodeAndMemoMes(dps.getChildPartCode(), yieldOrder.getYpCode());
subList.addAll(blbList);
}
}
return subList;
}
private JSONObject glassSealing(Long woId, List<Boolean> planList, List<Boolean> moduleList) {
JSONObject obj = new JSONObject();
// 订单信息
WorkOrder prWorkOrder =workOrderMapper.selectById(woId);
List<WorkOrder> subPrWorkOrderList = this.checkOrderSj(prWorkOrder);
YieldOrder yieldOrder = yieldOrderMapper.selectById(prWorkOrder.getYoId());
// DsPartEntity dsPart = dsPartService.getByPartCode(prWorkOrder.getPjYieldOrder().getPartCode());
QueryWrapper<DsPartEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("part_code", yieldOrder.getPartCode());
List<DsPartEntity> dsPartList = partService.list(queryWrapper);
DsPartEntity dsPart = new DsPartEntity();
if(null != dsPartList && dsPartList.size() > 0){
dsPart = dsPartList.get(0);
}
obj.put("prWorkOrder", prWorkOrder);
obj.put("dsPart", dsPart);
JSONArray sunPrWorkOrderList = new JSONArray();
DsPartSub dsPartSub;
if (subPrWorkOrderList != null && subPrWorkOrderList.size() > 0) {
for (WorkOrder workOrder : subPrWorkOrderList) {
JSONObject sub = new JSONObject();
dsPartSub = workPlanMapper.getByPartCodeAndSubCodeMes(dsPart.getPartCode(), yieldOrder.getPartCode());
if (dsPartSub != null) {
sub.put("batchNo", workOrder.getBatchNo());//批次号
sub.put("makeQty", workOrder.getMakeQty());//数量
sub.put("yieldType", dsPartSub.getSinTerType());//零件类型
sub.put("partCode", dsPartSub.getSubCode());//零件号
sub.put("material", dsPartSub.getMaterial());//材料
sub.put("plate", dsPartSub.getPlate());//镀种
if (dsPartSub.getArea() != null && dsPartSub.getQuota() != null) {
sub.put("poArea", String.valueOf(dsPartSub.getArea() * dsPartSub.getQuota()));//面积
}
}
sunPrWorkOrderList.add(sub);
}
}
obj.put("sunPrWorkOrderList", sunPrWorkOrderList);
// 获取工序
List<WorkPlan> prWorkPlanList = workPlanMapper.listByWoIdAllMes(prWorkOrder.getId());
List<WorkPlan> newPrWorkPlanList = new ArrayList<>();
List<WorkPlanItem> prWorkPlanItems;
List<PrintChildCheck> printChildCheckList;
for (int i = 0; i < prWorkPlanList.size(); i++) {
if (planList.get(i)) {
WorkPlan prWorkPlan = prWorkPlanList.get(i);
this.getProcessByWp(prWorkPlan);
prWorkPlanItems = workPlanMapper.listByWpIdMes(prWorkPlan.getId());
printChildCheckList = new ArrayList<>();
this.getCheckListDetail(printChildCheckList, prWorkPlanItems, true);
prWorkPlan.setPrintChildCheck(printChildCheckList);
newPrWorkPlanList.add(prWorkPlan);
}
}
obj.put("prWorkPlanList", newPrWorkPlanList);
if (moduleList.get(0)) {
// 审理单记录
// YieldOrder yo = prWorkOrder.getPjYieldOrder();
obj.put("qcReviewSheetList", workPlanMapper.getQcReviewSheetListMes(yieldOrder.getPartCode(), yieldOrder.getBatchNo()));
}
return obj;
}
public List<PrintChildCheck> getCheckListDetail(List<PrintChildCheck> checkList, List<WorkPlanItem> piLst, Boolean eleOrPrint) {
if (piLst != null && piLst.size() > 0) {
//开始组装检验项map
Map<String, PrintChildCheck> ccMap = new LinkedHashMap<>();
PrintChildCheck cc;
Map<String, List<PrintChildCheckChild>> piMap = new LinkedHashMap<>();
List<PrintChildCheckChild> lst;
for (WorkPlanItem pi : piLst) {
lst = piMap.get(pi.getItemCode());
WorkPlan plan = workPlanMapper.selectById(pi.getWpId());
String testOrder = plan.getOrders() + "-" + pi.getItemCode();
if (lst == null || lst.size() == 0) {
//组装检验小项集合
lst = new ArrayList<>();
piMap.put(testOrder, lst);
//组装打印检验大项集合
cc = new PrintChildCheck();
cc.setTestOrders(testOrder);
if (pi.getCheckQty() != null && pi.getCheckQty() > 0) {
cc.setCheckQty(pi.getCheckQty().toString());
}
// 230310新增试验数量
cc.setTestQty(pi.getTestQty() != null && pi.getTestQty() > 0 ? pi.getTestQty().toString() : "");
// 检验结果
if(0==pi.getCheckResult()){
cc.setCheckResult("未检验");
}
if(1==pi.getCheckResult()){
cc.setCheckResult("合格");
}
if(2==pi.getCheckResult()){
cc.setCheckResult("不合格");
}
if(-1==pi.getCheckResult()){
cc.setCheckResult("NA");
}
// cc.setCheckResult(!"未检验".equals(pi.getCheckResult()) ? pi.getCheckResult() : null);
if (pi.getCheckUserId() != null) {
R<User> user = userClient.userInfoById(pi.getCheckUserId());
String userName = user.getData().getAccount();
if(null != user && user.getData() != null){
cc.setCheckName(user.getData().getRealName());
}
//zxh 20250212 从nerp获取检验员印章
String checkManByNewErp = workPlanMapper.getCheckManByNewErpMes(userName);
if (eleOrPrint) {
cc.setImgUrl(checkManByNewErp);
} else {
if (checkManByNewErp != null && checkManByNewErp.indexOf("base64,") > 0) {
String checkManByNewErpSubString = checkManByNewErp.substring(checkManByNewErp.indexOf("base64,") + 7);
cc.setImgUrl(checkManByNewErpSubString);
}
}
if(null != pi.getCheckDate()){
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String formattedDateTime = pi.getCheckDate().format(formatter);
cc.setCheckDate(formattedDateTime);
}
}
ccMap.put(testOrder, cc);
}
if ("厚度检测".equals(pi.getItemName())) {
for (int i = 0; i < 3; i++) {
lst.add(new PrintChildCheckChild(pi.getItemCode(), pi.getStandardName(), pi.getCheckValue(), pi.getWpId()));
}
}
lst.add(new PrintChildCheckChild(pi.getItemCode(), pi.getStandardName(), pi.getCheckValue(), pi.getWpId()));
}
List<WorkPlanItemDetail> idLst;
for (Map.Entry<String, PrintChildCheck> entry : ccMap.entrySet()) {
cc = ccMap.get(entry.getKey());
if (cc != null) {
lst = piMap.get(cc.getTestOrders());
lst = lst.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(()
-> new TreeSet<>(Comparator.comparing(i -> i.getWpiId()))), ArrayList::new));
if (lst != null && lst.size() > 0) {
for (PrintChildCheckChild ccc : lst) {
idLst = workPlanMapper.listByWpiIdMes(ccc.getWpiId());
if (idLst != null && idLst.size() > 0) {
lst = new ArrayList<>();
// 组装量具集合
for (WorkPlanItemDetail itemDetail : idLst) {
if ("厚度检测".equals(itemDetail.getTrialItem())) {
cc.setDeviceCode(itemDetail.getGaugeValue8());
lst.add(new PrintChildCheckChild(itemDetail.getTrialItem(),
itemDetail.getTrialStandard(), itemDetail.getGaugeValueNotNUll(),
null));
} else if (itemDetail.getActMtId() != null) {
lst.add(new PrintChildCheckChild(itemDetail.getTrialItem(), itemDetail.getRuleSize(),
itemDetail.getGaugeValue1(), itemDetail.getWpiId()));
cc.setDeviceCode(itemDetail.getTools());
if (cc.getTrialStandard() != null) {
cc.setTrialStandard(cc.getTrialStandard() + ';' + itemDetail.getRuleSize());
} else {
cc.setTrialStandard(itemDetail.getRuleSize());
}
if (cc.getCheckResult() != null) {
cc.setCheckResult(cc.getCheckResult());
} else {
cc.setCheckResult(itemDetail.getGaugeValue1());
}
}
}
}
cc.setCccList(lst);
checkList.add(cc);
break;
}
}
}
}
}
return checkList;
}
@Override
public Object pagePrintSjEleFiles(Long woId, Integer yieldType, List<Boolean> planList, List<Boolean> moduleList) {
if (yieldType == YieldOrder.YIELD_TYPE_4 || yieldType == YieldOrder.YIELD_TYPE_5) {
return this.metalParts(woId);
} else if (yieldType == YieldOrder.YIELD_TYPE_6) { // 石墨模
// return this.graphiteMold(woId);
return this.metalParts(woId);
} else if (yieldType == YieldOrder.YIELD_TYPE_3) { // 玻璃饼
return this.glassCake(woId);
} else if (yieldType == YieldOrder.YIELD_TYPE_2) { // 玻璃封接部件
return this.glassSealing(woId, planList, moduleList);
}
return null;
}
private JSONObject metalParts(Long woId) {
JSONObject obj = new JSONObject();
// 子件订单信息
WorkOrder prWorkOrder = workOrderMapper.selectById(woId);
// 获取部件订单
List<WorkOrder> workOrderList = workPlanMapper.findFatherByYoIdMes(prWorkOrder.getYoId());
// 获取工序
List<WorkPlan> prWorkPlanList = workPlanMapper.listByWoIdAllMes(prWorkOrder.getId());
obj.put("prWorkOrder", prWorkOrder);
obj.put("workOrderList", workOrderList);
List<WorkPlanItem> prWorkPlanItems;
List<PrintChildCheck> printChildCheckList = new ArrayList<>();
for (WorkPlan prWorkPlan : prWorkPlanList) {
// 同槽信息
List<ProduceMonitorSlotListVO> slotList = workPlanMapper.listSjSlotInfoMes(prWorkPlan.getId(), Boolean.FALSE);
prWorkPlan.setSlotList(slotList);
// 设备绑定记录
List<MesQcProduceRunEntity> prList = workPlanMapper.listPrByWpId(prWorkPlan.getId());
prWorkPlan.setPrList(prList);
prWorkPlanItems = workPlanMapper.listByWpIdMes(prWorkPlan.getId());
if (prWorkPlanItems != null && prWorkPlanItems.size() > 0) {
PrintChildCheck printChildCheck;
for (WorkPlanItem prWorkPlanItem : prWorkPlanItems) {
printChildCheck = new PrintChildCheck();
// printChildCheck.setTestOrders(prWorkPlanItem.getTrialNo());
// printChildCheck.setTestName(prWorkPlanItem.getTrialItem());
// printChildCheck.setTrialStandard(prWorkPlanItem.getTrialStandard());
printChildCheck.setTestOrders(prWorkPlanItem.getItemCode());
printChildCheck.setTestName(prWorkPlanItem.getItemName());
printChildCheck.setTrialStandard(prWorkPlanItem.getStandardName());
printChildCheck.setCheckResult(prWorkPlanItem.getCheckResult() == -1 ? "未检验" : prWorkPlanItem.getCheckResult() == 1 ? "合格" :
prWorkPlanItem.getCheckResult() == 2 ? "不合格" : prWorkPlanItem.getCheckResult() == 3 ? "NA" : "");
if (prWorkPlanItem.getCheckUserId() != null) {
R<User> user = userClient.userInfoById(prWorkPlanItem.getCheckUserId());
if(null != user && null != user.getData()){
printChildCheck.setCheckName(user.getData().getRealName());
}
}
if (prWorkPlanItem.getCheckDate() != null) {
printChildCheck.setCheckDate(prWorkPlanItem.getCheckDate().toString());
}
printChildCheckList.add(printChildCheck);
}
prWorkPlan.setPrintChildCheck(printChildCheckList);
}
}
obj.put("prWorkPlanList", prWorkPlanList);
return obj;
}
public void addRsSheet(Long id) {
InspectionTask task = getById(id);
if (InspectionTaskConst.CHECK_RESULT_NG.equals(task.getCheckResult())) {

Loading…
Cancel
Save