生产监控工序详情接口开发

liweidong
李涛 1 month ago
parent 5ceb90c34b
commit 67e3ebe4fb
  1. 2
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MakeRec.java
  2. 33
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MesQcProduceRunEntity.java
  3. 4
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MesRbFilePreserveDetailEntity.java
  4. 2
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MesRbFilePreserveSlotEntity.java
  5. 9
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorFileSlotVO.java
  6. 2
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorPlanDataVO.java
  7. 13
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorPlanItemVO.java
  8. 2
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/UnBingDeviceVo.java
  9. 2
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/InspectionTask.java
  10. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.java
  11. 51
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.xml
  12. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MesQcProduceRunMapper.java
  13. 10
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/QcProduceRunMapper.xml
  14. 19
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java
  15. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMesQcProduceRunService.java
  16. 3
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMesRbFilePreserveDetailService.java
  17. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMesRbFilePreserveSlotService.java
  18. 9
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java
  19. 51
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java
  20. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MakeRecServiceImpl.java
  21. 9
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MesQcProduceRunServiceImpl.java
  22. 8
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MesRbFilePreserveDetailServiceImpl.java
  23. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MesRbFilePreserveSlotServiceImpl.java
  24. 15
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java
  25. 589
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java
  26. 3
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IProReTemplateService.java
  27. 13
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ProReTemplateServiceImpl.java

@ -35,7 +35,7 @@ public class MakeRec extends BaseEntity {
private Double workQty = 0d;
@Schema(description = "报废数量")
private Integer scrapQty = 0;
private Double scrapQty = 0d;
@Schema(description = "色标数量")
private Double flagQty = 0d;

@ -75,12 +75,12 @@ public class MesQcProduceRunEntity extends BaseEntity {
* 入槽时间
*/
@Schema(description = "入槽时间")
private Date inDate;
private String inDate;
/**
* 出槽时间
*/
@Schema(description = "出槽时间")
private Date outDate;
private String outDate;
/**
* 生产状态
*/
@ -160,7 +160,7 @@ public class MesQcProduceRunEntity extends BaseEntity {
* 软起时间
*/
@Schema(description = "软起时间")
private Date softWorkTime;
private String softWorkTime;
/**
* 电压
*/
@ -207,13 +207,28 @@ public class MesQcProduceRunEntity extends BaseEntity {
@Schema(description = "参数7")
private String dataSeven;
@TableField(exist = false)
private Date dataThirteen;
@Schema(description = "参数值8")
private String dataEight;
@TableField(exist = false)
private Date dataTwelve;
@Schema(description = "参数值9")
private String dataNine;
@TableField(exist = false)
private Date dataFourteen;
@Schema(description = "参数值10")
private String dataTen;
@Schema(description = "参数值11、露点")
private String dataEleven;
@Schema(description = "参数值12、存储保温结束")
private String dataTwelve;
@Schema(description = "参数值13、存储保温开始")
private String dataThirteen;
@Schema(description = "参数值14、真空度")
private String dataFourteen;
@Schema(description = "初始电压")
private String startVol;
}

@ -49,12 +49,12 @@ public class MesRbFilePreserveDetailEntity extends BaseEntity {
* 时间
*/
@Schema(description = "时间")
private Date rfpdTime;
private String rfpdTime;
/**
* 是否合格
*/
@Schema(description = "是否合格")
private BigDecimal qualified;
private String qualified;
/**
* 参数名称
*/

@ -49,7 +49,7 @@ public class MesRbFilePreserveSlotEntity extends BaseEntity {
* 模板类型
*/
@Schema(description = "模板类型")
private String rfpsType;
private Short rfpsType;
/**
* 维护时间
*/

@ -15,6 +15,15 @@ import java.util.List;
@Data
public class ProduceMonitorFileSlotVO {
@Schema(description = "模板类型")
private Short rfpsType;
@Schema(description = "插入序号")
private String insertIndex;
@Schema(description = "槽号序号")
private String slotIndex;
@Schema(description = "槽位/工步")
private String slotName;

@ -40,7 +40,7 @@ public class ProduceMonitorPlanDataVO {
private List<ProduceMonitorFileSlotVO> dsRbFilePreserveSlotList;
@Schema(description = "检验记录")
private List<ProduceMonitorWorkCheckVO> prWorkCheck;
private ProduceMonitorWorkCheckVO prWorkCheck;
@Schema(description = "转试记录")
private List<PlanTest> trialItemList;

@ -3,6 +3,7 @@ package org.springblade.desk.produce.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.Date;
/**
@ -15,16 +16,16 @@ import java.util.Date;
public class ProduceMonitorPlanItemVO {
@Schema(description = "项目编号")
private String trialNo;
private String itemCode;
@Schema(description = "项目名称")
private String trialItem;
private String itemName;
@Schema(description = "标准")
private String trialStandard;
private String standardName;
@Schema(description = "测试值")
private String scrapQty;
private String checkValue;
@Schema(description = "试验数量")
private Double testQty = 0d;
@ -36,12 +37,12 @@ public class ProduceMonitorPlanItemVO {
private Double checkQty = 0d;
@Schema(description = "检验结果")
private String checkValue;
private String checkResult;
@Schema(description = "检验人")
private String checkMan;
@Schema(description = "检验时间")
private Date checkDate;
private LocalDateTime checkDate;
}

@ -18,7 +18,7 @@ public class UnBingDeviceVo {
private String fiveData;
private String sixData;
private String sevenData;
private Date dataFourteen;
private String dataFourteen;
private String tempSlot;
}

@ -329,7 +329,7 @@ public class InspectionTask extends BaseEntity {
* 返工数
*/
@Schema(description = "返工数")
private Long reworkQty;
private Double reworkQty;
/**
* [作业计划]id
*/

@ -3,8 +3,11 @@ 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.MacToolUse;
import org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity;
import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO;
import java.util.List;
import java.util.Map;
/**
* 设备工装使用记录 Mapper 接口
@ -15,4 +18,8 @@ public interface MacToolUseMapper extends BaseMapper<MacToolUse> {
MacToolUse getTcDataByWoId(Long woId);
List<MacToolUse> queryMacToolUse(IPage<MacToolUse> page, MacToolUse macToolUse);
List<ProduceMonitorSlotListVO> listSlotInfo(Long id, int isGr, int isCx);
MesQcProduceRunEntity getBoxInfoByWpIdMtnCode(Long id);
}

@ -34,5 +34,56 @@
<select id="queryMacToolUse" resultMap="mesMakeRecResultMap">
select * from MES_MAKE_REC where is_deleted = 0
</select>
<select id="listSlotInfo" 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.PRODUCT_IDENT, a.wo_code, a.material,
a.yield_type
FROM
(
SELECT
d.PART_CODE, c.BATCH_NO, b.WORK_QTY, b.WORK_QTY * d.YP_AREA AS area, sum(b.WORK_QTY * d.YP_AREA) OVER() AS
sumArea,
a.MTN_CODE, d.PRODUCT_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.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 MES_EQUIPMENT_CARD b ON a.EQUIPMENT_CARD =
b.ID WHERE a.WP_ID = #{id}
<if test="isCx == 1">AND b.CATEGORYS = '产线设备'</if>
<if test="isGr == 0">) AND a.mtu_index = '2' AND a.BS_FEI_BA_SET IS NOT NULL</if>
<if test="isGr == 1">) AND a.mtu_index = '1' AND b.pps_id = 417</if>
) a
GROUP BY a.PART_CODE, a.BATCH_NO, a.WORK_QTY, a.area, a.sumArea, a.MTN_CODE, a.PRODUCT_IDENT, a.wo_code,
a.material, a.yield_type
</select>
<select id="getBoxInfoByWpIdMtnCode" resultType="org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity">
SELECT
min(c.IN_DATE) AS inDate,
max(c.OUT_DATE) AS outDate,
'Max:' || max(c.TEMP_SLOT)|| '/' || 'Min:' || min(c.temp_slot) AS tempSlot,
max(c.DEVICE_ID) AS deviceId
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
WHERE
b.CATEGORYS = '烘箱设备'
AND a.WP_ID = #{id})
AND c.work_slot = '烘箱'
ORDER BY
c.IN_DATE DESC
</select>
</mapper>

@ -27,4 +27,5 @@ public interface MesQcProduceRunMapper extends BaseMapper<MesQcProduceRunEntity>
List<MesQcProduceRunVO> selectMesQcProduceRunPage(IPage page, MesQcProduceRunVO mesQcProduceRun);
List<MesQcProduceRunEntity> listPrByWpIdIndex(Long id, int i, int i1);
}

@ -49,7 +49,15 @@
<select id="selectMesQcProduceRunPage" resultMap="mesQcProduceRunResultMap">
select * from MES_QC_PRODUCE_RUN where is_deleted = 0
</select>
<select id="listPrByWpIdIndex" resultType="org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity">
SELECT * FROM MES_QC_PRODUCE_RUN
WHERE is_deleted = 0 AND mtn_Code IN (
SELECT a.mtn_Code FROM mes_mac_tool_use a WHERE a.wp_id = #{id} AND a.mtu_index = #{i})
<if test="i1 == 1">
AND work_slot != '烘箱'
</if>
ORDER BY mtn_code, id
</select>
</mapper>

@ -3,6 +3,9 @@ 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.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;
@ -31,4 +34,20 @@ public interface IMacToolUseService extends BaseService<MacToolUse> {
IPage<MacToolUse> queryMacToolUse(IPage<MacToolUse> page, MacToolUse macToolUse);
MacToolUse getTcDataByWoId(Long woId);
/**
* 获取工位信息
*
* @param workPlan
* @return
*/
List<ProduceMonitorSlotListVO> listSlotInfo(WorkPlan workPlan);
List<MacToolUse> getDataByWpIdAndIndexList(Long id, String number);
MesQcProduceRunEntity getBoxInfoByWpIdMtnCode(Long id);
MacToolUse getDataByWpIdAndIndex(Long id, String number);
MacToolUse getHangNumIsNull(Long id);
}

@ -5,6 +5,8 @@ import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity;
import org.springblade.desk.produce.pojo.vo.MesQcProduceRunVO;
import java.util.List;
/**
* 生产追溯 服务类
*
@ -29,4 +31,8 @@ public interface IMesQcProduceRunService extends BaseService<MesQcProduceRunEnti
* @return
*/
boolean getDataByWpIdAndSlot(Long id, String operate);
List<MesQcProduceRunEntity> listPrByWpIdIndexAndMtnCode(List<String> list, String mtnCode);
List<MesQcProduceRunEntity> listPrByWpIdIndex(Long id, int i, Boolean aTrue);
}

@ -5,6 +5,8 @@ import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.produce.pojo.entity.MesRbFilePreserveDetailEntity;
import org.springblade.desk.produce.pojo.vo.MesRbFilePreserveDetailVO;
import java.util.List;
/**
* 热表电子档案维护-明细 服务类
*
@ -21,4 +23,5 @@ public interface IMesRbFilePreserveDetailService extends BaseService<MesRbFilePr
*/
IPage<MesRbFilePreserveDetailVO> selectMesRbFilePreserveDetailPage(IPage<MesRbFilePreserveDetailVO> page, MesRbFilePreserveDetailVO mesRbFilePreserveDetail);
List<MesRbFilePreserveDetailEntity> getByRfpsId(Long id);
}

@ -24,4 +24,5 @@ public interface IMesRbFilePreserveSlotService extends BaseService<MesRbFilePres
*/
IPage<MesRbFilePreserveSlotVO> selectMesRbFilePreserveSlotPage(IPage<MesRbFilePreserveSlotVO> page, MesRbFilePreserveSlotVO mesRbFilePreserveSlot);
List<MesRbFilePreserveSlotEntity> getByRfpId(Long aLong);
}

@ -8,6 +8,7 @@ import org.springblade.desk.produce.pojo.dto.QueryByReadStatusDTO;
import org.springblade.desk.produce.pojo.dto.WorkOrderDTO;
import org.springblade.desk.produce.pojo.entity.WorkOrder;
import org.springblade.desk.produce.pojo.entity.WorkOrderRun;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.pojo.entity.WorkPlanRun;
import org.springblade.desk.produce.pojo.vo.BatchPrepareVO;
import org.springblade.desk.produce.pojo.vo.QueryByReadStatusVO;
@ -165,4 +166,12 @@ public interface IWorkOrderService extends BaseService<WorkOrder> {
* @param wpId 工单id
*/
ProduceMonitorPlanDataVO getPlanDetail(Long wpId);
/**
* <p>方法名: getProcessByWp </p>
* <p>方法描述: 组装生产追溯数据 </p>
*
* @param workPlan 工单计划
*/
void getProcessByWp(ProduceMonitorPlanDataVO planDataVO, WorkPlan workPlan);
}

@ -1,21 +1,25 @@
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.MacToolUseMapper;
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.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;
import java.util.*;
import static com.fasterxml.jackson.databind.type.LogicalType.DateTime;
@ -30,6 +34,8 @@ import static com.fasterxml.jackson.databind.type.LogicalType.DateTime;
public class MacToolUseServiceImpl extends BaseServiceImpl<MacToolUseMapper, MacToolUse> implements IMacToolUseService {
private final IRackSetService rackSetService;
private final IBsProcessSetService bsProcessSetService;
@Override
public String nextCode(int i) {
// 编码模式
@ -84,6 +90,43 @@ public class MacToolUseServiceImpl extends BaseServiceImpl<MacToolUseMapper, Mac
return baseMapper.getTcDataByWoId(woId);
}
@Override
public List<ProduceMonitorSlotListVO> listSlotInfo(WorkPlan workPlan) {
BsProcessSetEntity processSet = bsProcessSetService.getById(workPlan.getPpsId());
if ("固溶".equals(processSet.getName())) {
return baseMapper.listSlotInfo(workPlan.getId(), 1, 0);
}
List<ProduceMonitorSlotListVO> slotListVos = baseMapper.listSlotInfo(workPlan.getId(), 0, 1);
if (CollectionUtils.isEmpty(slotListVos)) {
slotListVos = baseMapper.listSlotInfo(workPlan.getId(), 0, 0);
}
return slotListVos;
}
@Override
public List<MacToolUse> getDataByWpIdAndIndexList(Long id, String number) {
return this.list(Wrappers.lambdaQuery(MacToolUse.class).eq(MacToolUse::getWpId, id).eq(MacToolUse::getMtuIndex, number));
}
@Override
public MesQcProduceRunEntity getBoxInfoByWpIdMtnCode(Long id) {
MesQcProduceRunEntity qcProduceRun = baseMapper.getBoxInfoByWpIdMtnCode(id);
qcProduceRun.setWorkSlot("烘干");
return qcProduceRun;
}
@Override
public MacToolUse getDataByWpIdAndIndex(Long id, String number) {
List<MacToolUse> macToolUses = this.list(Wrappers.lambdaQuery(MacToolUse.class).eq(MacToolUse::getWpId, id).eq(MacToolUse::getMtuIndex, number).orderByDesc(MacToolUse::getId));
return CollectionUtils.isNotEmpty(macToolUses) ? macToolUses.get(0) : null;
}
@Override
public MacToolUse getHangNumIsNull(Long id) {
List<MacToolUse> macToolUses = this.list(Wrappers.lambdaQuery(MacToolUse.class).eq(MacToolUse::getWpId, id).isNotNull(MacToolUse::getHangNum));
return CollectionUtils.isNotEmpty(macToolUses) ? macToolUses.get(0) : null;
}
public static final int time2Integer(Date d) {
Calendar cal = Calendar.getInstance();
cal.setTime(d);

@ -1,5 +1,6 @@
package org.springblade.desk.produce.service.impl;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import jodd.bean.BeanUtil;
@ -217,8 +218,7 @@ public class MakeRecServiceImpl extends BaseServiceImpl<MakeRecMapper, MakeRec>
MesQcProduceRunEntity qcProduceRun = new MesQcProduceRunEntity();
qcProduceRun.setMtnCode(code);
qcProduceRun.setWorkSlot("热处理自检");
qcProduceRun.setInDate(new Date());
qcProduceRun.setInDate(DateUtil.now());
qcProduceRun.setDataOne(makeRecDTO.getResource());
qcProduceRun.setDataTwo(makeRecDTO.getNum());
qcProduceRun.setDataThree(makeRecDTO.getThickness());

@ -35,5 +35,14 @@ public class MesQcProduceRunServiceImpl extends BaseServiceImpl<MesQcProduceRunM
return false;
}
@Override
public List<MesQcProduceRunEntity> listPrByWpIdIndexAndMtnCode(List<String> list, String mtnCode) {
return this.list(Wrappers.lambdaQuery(MesQcProduceRunEntity.class).eq(MesQcProduceRunEntity::getMtnCode, mtnCode).in(MesQcProduceRunEntity::getMtnCode, list));
}
@Override
public List<MesQcProduceRunEntity> listPrByWpIdIndex(Long id, int i, Boolean aTrue) {
return baseMapper.listPrByWpIdIndex(id, i, aTrue ? 1 : 0);
}
}

@ -1,6 +1,7 @@
package org.springblade.desk.produce.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.desk.produce.mapper.MesRbFilePreserveDetailMapper;
import org.springblade.desk.produce.pojo.entity.MesRbFilePreserveDetailEntity;
@ -8,6 +9,8 @@ import org.springblade.desk.produce.pojo.vo.MesRbFilePreserveDetailVO;
import org.springblade.desk.produce.service.IMesRbFilePreserveDetailService;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 热表电子档案维护-明细 服务实现类
*
@ -22,5 +25,10 @@ public class MesRbFilePreserveDetailServiceImpl extends BaseServiceImpl<MesRbFil
return page.setRecords(baseMapper.selectMesRbFilePreserveDetailPage(page, mesRbFilePreserveDetail));
}
@Override
public List<MesRbFilePreserveDetailEntity> getByRfpsId(Long id) {
return this.list(Wrappers.lambdaQuery(MesRbFilePreserveDetailEntity.class).eq(MesRbFilePreserveDetailEntity::getRfpsId, id).orderByAsc(MesRbFilePreserveDetailEntity::getDetailIndex));
}
}

@ -1,5 +1,6 @@
package org.springblade.desk.produce.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springblade.desk.produce.mapper.MesRbFilePreserveSlotMapper;
import org.springblade.desk.produce.pojo.entity.MesRbFilePreserveSlotEntity;
import org.springblade.desk.produce.pojo.vo.MesRbFilePreserveSlotVO;
@ -24,6 +25,10 @@ public class MesRbFilePreserveSlotServiceImpl extends BaseServiceImpl<MesRbFileP
return page.setRecords(baseMapper.selectMesRbFilePreserveSlotPage(page, mesRbFilePreserveSlot));
}
@Override
public List<MesRbFilePreserveSlotEntity> getByRfpId(Long aLong) {
return this.list(Wrappers.lambdaQuery(MesRbFilePreserveSlotEntity.class).eq(MesRbFilePreserveSlotEntity::getRfpId, aLong));
}
}

@ -1,5 +1,6 @@
package org.springblade.desk.produce.service.impl;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.BeanUtils;
@ -37,7 +38,9 @@ import org.springblade.desk.quality.service.IWorkPlanItemService;
import org.springblade.scheduling.pojo.entity.ProcessSetEntity;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@ -271,7 +274,7 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
qcProduceRun = new MesQcProduceRunEntity();
qcProduceRun.setMtnCode(code);
qcProduceRun.setDeviceId(equipmentCard != null ? equipmentCard.getDeviceCode() : "");
qcProduceRun.setInDate(new Date());
qcProduceRun.setInDate(new Date().toString());
qcProduceRun.setCreateMan(String.valueOf(AuthUtil.getUser().getUserId()));
qcProduceRun.setCreateTime(nowDate);
// 操作的步骤
@ -319,8 +322,9 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
@Override
public void unBind(UnBingVo unBingVo) {
if (StringUtils.isBlank(unBingVo.getRsCode()) && StringUtils.isBlank(unBingVo.getFsCode()) && StringUtils.isBlank(unBingVo.getDeviceCode()))
if (StringUtils.isBlank(unBingVo.getRsCode()) && StringUtils.isBlank(unBingVo.getFsCode()) && StringUtils.isBlank(unBingVo.getDeviceCode())) {
return;
}
// 查询挂具
RackSetEntity bsRackSet = rackSetService.getOne(Wrappers.<RackSetEntity>lambdaQuery().eq(RackSetEntity::getRsCode, unBingVo.getRsCode()));
// 查询飞靶
@ -364,7 +368,6 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
@Override
public void sjDeviceUnBind(UnBingDeviceVo unBingDeviceVo) {
for (PrMacTooUseSpec prMacTooUseSpec : unBingDeviceVo.getList()) {
MacToolUse prMacToolUse = macToolUseService.getById(Long.valueOf(prMacTooUseSpec.getMtuId()));
@ -380,12 +383,12 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
}
if (qcProduceRuns != null && qcProduceRuns.size() > 0) {
for (MesQcProduceRunEntity qcProduceRun : qcProduceRuns) {
qcProduceRun.setOutDate(new Date());
qcProduceRun.setOutDate(DateUtil.now());
if (unBingDeviceVo.getOneData() != null) {
qcProduceRun.setDataThirteen(new Date()); // 保温开始时间
qcProduceRun.setDataThirteen(DateUtil.now()); // 保温开始时间
}
if (unBingDeviceVo.getThreeData() != null) {
qcProduceRun.setDataTwelve(new Date()); // 保温结束时间
qcProduceRun.setDataTwelve(DateUtil.now()); // 保温结束时间
}
qcProduceRun.setTempSlot(unBingDeviceVo.getTempSlot()); // 退火温度
qcProduceRun.setDataFourteen(unBingDeviceVo.getDataFourteen()); // 退火温度

@ -21,9 +21,17 @@ import org.springblade.core.tool.utils.StringUtil;
import org.springblade.desk.basic.constant.FlowConst;
import org.springblade.desk.basic.service.IProcessAbilityService;
import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity;
import org.springblade.desk.dashboard.pojo.entity.BsTeamSetEntity;
import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
import org.springblade.desk.dashboard.service.IBsProcessSetService;
import org.springblade.desk.dashboard.service.IBsTeamSetService;
import org.springblade.desk.dashboard.service.IDsPartService;
import org.springblade.desk.device.pojo.entity.EquipmentEntity;
import org.springblade.desk.device.pojo.entity.FeiBaSetEntity;
import org.springblade.desk.device.pojo.entity.RackSetEntity;
import org.springblade.desk.device.service.IEquipmentService;
import org.springblade.desk.device.service.IFeiBaSetService;
import org.springblade.desk.device.service.IRackSetService;
import org.springblade.desk.order.mapper.YieldOrderMapper;
import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.order.pojo.enums.YieldOrderEnum;
@ -41,8 +49,11 @@ import org.springblade.desk.produce.pojo.vo.*;
import org.springblade.desk.produce.service.*;
import org.springblade.desk.quality.pojo.entity.InspectionTask;
import org.springblade.desk.quality.pojo.entity.PlanTest;
import org.springblade.desk.quality.pojo.entity.ProReTemplate;
import org.springblade.desk.quality.pojo.entity.WorkPlanItem;
import org.springblade.desk.quality.service.IInspectionTaskService;
import org.springblade.desk.quality.service.IPlanTestService;
import org.springblade.desk.quality.service.IProReTemplateService;
import org.springblade.desk.quality.service.IWorkPlanItemService;
import org.springblade.scheduling.pojo.entity.WorkOrderEntity;
import org.springblade.erpdata.feign.IErpDataProduceClient;
@ -60,6 +71,7 @@ import java.io.ByteArrayOutputStream;
import java.time.Duration;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
@ -106,6 +118,24 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
private final YieldOrderMapper yieldOrderMapper;
private final IEquipmentService equipmentService;
private final IFeiBaSetService feiBaSetService;
private final IRackSetService rackSetService;
private final IInspectionTaskService inspectionTaskService;
private final IBsTeamSetService teamSetService;
private final IMesRbFilePreserveSlotService mesRbFilePreserveSlotService;
private final IMesQcProduceRunService qcProduceRunService;
private final IProReTemplateService proReTemplateService;
private final IMesRbFilePreserveDetailService mesRbFilePreserveDetailService;
@Override
public IPage<WorkOrderVO> selectWorkOrderPage(IPage<WorkOrderVO> page, WorkOrderDTO workOrder) {
return page.setRecords(baseMapper.selectWorkOrderPage(page, workOrder));
@ -119,8 +149,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
batchPrepareVO.setId(woId);
batchPrepareVO.setYieldOrder(yieldOrder);
batchPrepareVO.setWoCode(this.nextCode(yieldOrder.getYpCode()));
batchPrepareVO.setCardNo(this.nextCardNo(yieldOrder.getYpCode(),workOrder.getCardNo()));
batchPrepareVO.setBatchNo(this.nextBatchNo(yieldOrder.getYpCode(),workOrder.getBatchNo()));
batchPrepareVO.setCardNo(this.nextCardNo(yieldOrder.getYpCode(), workOrder.getCardNo()));
batchPrepareVO.setBatchNo(this.nextBatchNo(yieldOrder.getYpCode(), workOrder.getBatchNo()));
if (workOrder.getMesCardNo() != null) {
batchPrepareVO.setMesCardNo(this.nextMesCardNo(workOrder.getMesCardNo()));
}
@ -164,7 +194,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
List<WorkPlan> wpList = new ArrayList<>(oldList.size());
for (WorkPlan oldWp : oldList) {
WorkPlan wp = new WorkPlan();
BeanUtil.copyProperties(oldWp,wp);
BeanUtil.copyProperties(oldWp, wp);
wp.setId(null);
@ -303,7 +333,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
PlateAround pa = plateAroundMapper.selectOne(Wrappers.lambdaQuery(PlateAround.class).eq(PlateAround::getWpId, wp.getId()).eq(PlateAround::getPaType, PlateAround.BEFORE_PLAT_IN));
if (pa == null) {
//下序外协,当前工序需要镀前入库
throw new ServiceException("未找到工序【"+wp.getPpsId()+"】镀前入库记录,无法转单!");
throw new ServiceException("未找到工序【" + wp.getPpsId() + "】镀前入库记录,无法转单!");
}
}
}
@ -686,6 +716,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
/**
* LocalDateTime Date
*
* @param localDateTime
* @return
*/
@ -834,9 +865,9 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
private String randSn(int randNum) {
StringBuilder t = new StringBuilder();
for(int i = 0; i < randNum; ++i) {
for (int i = 0; i < randNum; ++i) {
double dblRnd = Math.random() * 10.0;
int intRnd = (int)dblRnd;
int intRnd = (int) dblRnd;
t.append(intRnd);
}
return t.toString();
@ -1182,12 +1213,554 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
@Override
public ProduceMonitorPlanDataVO getPlanDetail(Long wpId) {
return null;
ProduceMonitorPlanDataVO planDataVO = new ProduceMonitorPlanDataVO();
// 工序信息
WorkPlan workPlan = workPlanService.getById(wpId);
BeanUtils.copyProperties(workPlan, planDataVO);
// 加工记录
List<MakeRec> makeRecs = makeRecService.list(Wrappers.lambdaQuery(MakeRec.class).eq(MakeRec::getWpId, wpId));
if (CollectionUtils.isNotEmpty(makeRecs)) {
List<ProduceMonitorMakeRecVO> makeRecVos = new ArrayList<>();
for (MakeRec makeRec : makeRecs) {
ProduceMonitorMakeRecVO makeRecVO = new ProduceMonitorMakeRecVO();
BeanUtils.copyProperties(makeRec, makeRecVO);
makeRecVO.setWorker(UserCache.getUser(makeRec.getWorker()) != null ? UserCache.getUser(makeRec.getWorker()).getRealName() : "");
makeRecVos.add(makeRecVO);
}
planDataVO.setMrList(makeRecVos);
}
this.getProcessByWp(planDataVO, workPlan);
// 设备使用详情
List<MacToolUse> macToolUses = macToolUseService.list(Wrappers.lambdaQuery(MacToolUse.class).eq(MacToolUse::getWpId, workPlan.getId()).eq(MacToolUse::getMtuIndex, "2").orderBy(true, true, MacToolUse::getMtnCode));
if (CollectionUtils.isNotEmpty(macToolUses)) {
List<ProduceMonitorMtuListVO> mtuList = new ArrayList<>();
// 设备信息
List<EquipmentEntity> equipmentEntities = equipmentService.listByIds(macToolUses.stream().map(MacToolUse::getEquipmentCard).toList());
Map<Long, EquipmentEntity> equipmentEntityMap = equipmentEntities.stream().collect(Collectors.toMap(EquipmentEntity::getId, eq -> eq));
// 飞靶信息
List<FeiBaSetEntity> feiBaSetEntities = feiBaSetService.listByIds(macToolUses.stream().map(MacToolUse::getBsFeiBaSet).toList());
Map<Long, FeiBaSetEntity> feiBaSetEntityMap = feiBaSetEntities.stream().collect(Collectors.toMap(FeiBaSetEntity::getId, fb -> fb));
// 挂具信息
List<RackSetEntity> rackSetEntities = rackSetService.listByIds(macToolUses.stream().map(MacToolUse::getBsRackSet).toList());
Map<Long, RackSetEntity> rackSetEntityMap = rackSetEntities.stream().collect(Collectors.toMap(RackSetEntity::getId, rack -> rack));
for (MacToolUse macToolUse : macToolUses) {
ProduceMonitorMtuListVO mtuListVO = new ProduceMonitorMtuListVO();
mtuListVO.setHangNum(macToolUse.getHangNum());
mtuListVO.setRsCode(rackSetEntityMap.get(macToolUse.getBsRackSet()) != null ? rackSetEntityMap.get(macToolUse.getBsRackSet()).getRsCode() : "");
mtuListVO.setFsCode(feiBaSetEntityMap.get(macToolUse.getBsFeiBaSet()) != null ? feiBaSetEntityMap.get(macToolUse.getBsFeiBaSet()).getFsCode() : "");
mtuListVO.setDeviceCode(equipmentEntityMap.get(macToolUse.getEquipmentCard()) != null ? equipmentEntityMap.get(macToolUse.getEquipmentCard()).getDeviceName() : "");
mtuList.add(mtuListVO);
}
planDataVO.setMtuList(mtuList);
}
// 检验记录
InspectionTask prWorkCheckByWpId = inspectionTaskService.getPrWorkCheckByWpId(wpId);
ProduceMonitorWorkCheckVO workCheckVO = new ProduceMonitorWorkCheckVO();
BeanUtils.copyProperties(prWorkCheckByWpId, workCheckVO);
planDataVO.setPrWorkCheck(workCheckVO);
// 转试记录
List<PlanTest> planTests = planTestService.list(Wrappers.lambdaQuery(PlanTest.class).eq(PlanTest::getWpId, wpId));
if (CollectionUtils.isNotEmpty(planTests)) {
planDataVO.setTrialItemList(planTests);
}
// 检验项目
List<WorkPlanItem> workPlanItems = workPlanItemService.list(Wrappers.lambdaQuery(WorkPlanItem.class).eq(WorkPlanItem::getWpId, wpId));
if (CollectionUtils.isNotEmpty(workPlanItems)) {
List<ProduceMonitorPlanItemVO> itemVos = new ArrayList<>();
for (WorkPlanItem workPlanItem : workPlanItems) {
ProduceMonitorPlanItemVO itemVO = new ProduceMonitorPlanItemVO();
BeanUtils.copyProperties(workPlanItem, itemVO);
itemVO.setCheckMan(UserCache.getUser(workPlanItem.getCheckUserId()) != null ? UserCache.getUser(workPlanItem.getCheckUserId()).getRealName() : "");
itemVos.add(itemVO);
}
planDataVO.setItemList(itemVos);
}
return planDataVO;
}
@Override
public void getProcessByWp(ProduceMonitorPlanDataVO planDataVO, WorkPlan workPlan) {
List<MesQcProduceRunEntity> qcProduceRunsList;
if (WorkPlan.PRINT_TYPE_PROCESS.equals(workPlan.getPrintType())) {
// 同槽信息
planDataVO.setSlotList(macToolUseService.listSlotInfo(workPlan));
// 过程质量记录
List<ProduceMonitorFileSlotVO> dsRbFilePreserveSlotList = new ArrayList<>();
BsTeamSetEntity bsTeamSet = teamSetService.getById(workPlan.getMakeTeam());
if (bsTeamSet != null) {
MacToolUse prMacToolUse;
List<MesRbFilePreserveSlotEntity> preserveSlotList;
MesQcProduceRunEntity boxInfo;
// 根据电子档案维护组装数据(上线前) 分槽
List<MacToolUse> dataByWpIdAndIndexList = macToolUseService.getDataByWpIdAndIndexList(workPlan.getId(), "1");
if (CollectionUtils.isNotEmpty(dataByWpIdAndIndexList)) {
for (MacToolUse prMacToolUseItem : dataByWpIdAndIndexList) {
if (prMacToolUseItem != null && prMacToolUseItem.getId() != null) {
// 获取模板数据
preserveSlotList = mesRbFilePreserveSlotService.getByRfpId(Long.valueOf(prMacToolUseItem.getRfpId()));
qcProduceRunsList = qcProduceRunService.listPrByWpIdIndexAndMtnCode(dataByWpIdAndIndexList.stream().map(MacToolUse::getMtnCode).toList(), prMacToolUseItem.getMtnCode());
// 烘箱信息(从设备,工装使用记录获取)
boxInfo = macToolUseService.getBoxInfoByWpIdMtnCode(workPlan.getId());
if (boxInfo.getInDate() != null) {
qcProduceRunsList.add(boxInfo);
}
if (qcProduceRunsList != null && !qcProduceRunsList.isEmpty()) {
// 2025-07-23 线上迁移修改删除了日志打印
// cdl 20250218 修改分槽同一槽号连续出现
this.setRbFilePreserveData(preserveSlotList, qcProduceRunsList, workPlan, dsRbFilePreserveSlotList, prMacToolUseItem);
}
}
}
}
// 根据电子档案维护组装数据(自动)
prMacToolUse = macToolUseService.getDataByWpIdAndIndex(workPlan.getId(), "2");
if (prMacToolUse != null && prMacToolUse.getId() != null) {
// 获取模板数据
List<ProReTemplate> dsRbFilePreserveList;
BsProcessSetEntity processSet = bsProcessSetService.getById(workPlan.getPpsId());
if (workPlan.getPpsId() != null && ("喷砂".equals(processSet.getName()) || "涂色标".equals(processSet.getName()))) {
dsRbFilePreserveList = proReTemplateService.getDataByWcIdAndPpsId(null, workPlan.getPpsId(), Boolean.TRUE);
} else {
dsRbFilePreserveList = proReTemplateService.getDataByWcIdAndPpsId(bsTeamSet.getWcId(), workPlan.getPpsId(), Boolean.TRUE);
}
if (dsRbFilePreserveList != null && !dsRbFilePreserveList.isEmpty()) {
preserveSlotList = mesRbFilePreserveSlotService.getByRfpId(dsRbFilePreserveList.get(0).getId());
qcProduceRunsList = qcProduceRunService.listPrByWpIdIndex(workPlan.getId(), 2, Boolean.TRUE);
// 烘箱信息(从设备,工装使用记录获取)
boxInfo = macToolUseService.getBoxInfoByWpIdMtnCode(workPlan.getId());
if (qcProduceRunsList != null && !qcProduceRunsList.isEmpty() && boxInfo.getInDate() != null) {
qcProduceRunsList.add(boxInfo);
}
if (qcProduceRunsList != null && !qcProduceRunsList.isEmpty()) {
// cdl 20250218 修改分槽同一槽号连续出现
this.setRbFilePreserveData(preserveSlotList, qcProduceRunsList, workPlan, dsRbFilePreserveSlotList, prMacToolUse);
}
}
// 获取额外面积数据
// BsAdditionalMess dataByMtuCode = bsAdditionalMessDao.getDataByOneData(prMacToolUse.getMtnCode(), BsAdditionalMess.TYPE_ONE);
// workPlan.setBsAdditionalMess(dataByMtuCode);
}
// 根据电子档案维护组装数据(线下)
//zxh 20250117 解决单工序绑定两个手动记录只显示一个问题
List<MacToolUse> prMacToolUseList = macToolUseService.getDataByWpIdAndIndexList(workPlan.getId(), "3");
if (prMacToolUseList != null && !prMacToolUseList.isEmpty()) {
for (MacToolUse prMacToolUseSd : prMacToolUseList) {
if (prMacToolUseSd != null && prMacToolUseSd.getId() != null) {
// 获取模板数据
preserveSlotList = mesRbFilePreserveSlotService.getByRfpId(Long.valueOf(prMacToolUseSd.getRfpId()));
qcProduceRunsList = qcProduceRunService.listPrByWpIdIndexAndMtnCode(prMacToolUseList.stream().map(MacToolUse::getMtnCode).toList(), prMacToolUseSd.getMtnCode());
// 烘箱信息(从设备,工装使用记录获取)
boxInfo = macToolUseService.getBoxInfoByWpIdMtnCode(workPlan.getId());
if (boxInfo.getInDate() != null) {
qcProduceRunsList.add(boxInfo);
}
if (qcProduceRunsList != null && !qcProduceRunsList.isEmpty()) {
// cdl 20250218 修改分槽同一槽号连续出现
this.setRbFilePreserveData(preserveSlotList, qcProduceRunsList, workPlan, dsRbFilePreserveSlotList, prMacToolUseSd);
}
}
}
}
}
planDataVO.setDsRbFilePreserveSlotList(dsRbFilePreserveSlotList);
}
}
private 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;
Map<String, MesRbFilePreserveSlotEntity> preserveSlotMap = preserveSlotList.stream().collect(Collectors.toMap(MesRbFilePreserveSlotEntity::getSlotName, java.util.function.Function.identity()));
List<ProduceMonitorFileSlotVO> temporaryList = new ArrayList<>();
for (MesQcProduceRunEntity qcProduceRun : qcProduceRunsList) {
// 根据维护的电子档案的槽号找寻对应生产追溯的的数据
if (StringUtils.isBlank(qcProduceRun.getWorkSlot())) {
continue;
}
MesRbFilePreserveSlotEntity dsRbFilePreserveSlot = preserveSlotMap.get(qcProduceRun.getWorkSlot().trim());
if ("水膜连续性检查".equals(qcProduceRun.getWorkSlot().trim())) {
qcProduceRun.setQualified("1");
}
// cdl 20250218 修改分槽同一槽号连续出现
this.setTemplateData(dsRbFilePreserveSlot, qcProduceRun, newDsRbFilePreserveSlot, dsRbFilePreserveDetailList,
newDsRbFilePreserveDetail, workPlan, temporaryList, prMacToolUse);
}
// 判断是不是自动线并且有水墨连续性
MacToolUse macToolUse = macToolUseService.getHangNumIsNull(workPlan.getId());
if (macToolUse != null && macToolUse.getId() != null) {
List<MesRbFilePreserveSlotEntity> smSlotList = preserveSlotList.stream().filter(i -> i.getSlotName().contains("水膜连续性")).toList();
for (MesRbFilePreserveSlotEntity dsRbFilePreserveSlot : smSlotList) {
if (dsRbFilePreserveSlot.getSlotName().contains("水膜连续性")) {
MesQcProduceRunEntity qcProduceRun = new MesQcProduceRunEntity();
qcProduceRun.setQualified("1");
// cdl 20250218 修改分槽同一槽号连续出现
this.setTemplateData(dsRbFilePreserveSlot, qcProduceRun, newDsRbFilePreserveSlot, dsRbFilePreserveDetailList,
newDsRbFilePreserveDetail, workPlan, temporaryList, prMacToolUse);
}
}
}
dsRbFilePreserveSlotList.addAll(temporaryList.stream().sorted(Comparator.comparing(ProduceMonitorFileSlotVO::getSlotIndex)).toList());
}
private void setTemplateData(MesRbFilePreserveSlotEntity dsRbFilePreserveSlot, MesQcProduceRunEntity qcProduceRun, ProduceMonitorFileSlotVO newDsRbFilePreserveSlot, List<MesRbFilePreserveDetailEntity> dsRbFilePreserveDetailList, MesRbFilePreserveDetailEntity newDsRbFilePreserveDetail, WorkPlan workPlan, List<ProduceMonitorFileSlotVO> temporaryList, MacToolUse prMacToolUse) {
if (dsRbFilePreserveSlot != null && dsRbFilePreserveSlot.getId() != null) {
// Date转String
// 装入槽子对应的信息
newDsRbFilePreserveSlot = new ProduceMonitorFileSlotVO();
newDsRbFilePreserveSlot.setRfpsType(dsRbFilePreserveSlot.getRfpsType());
newDsRbFilePreserveSlot.setInsertIndex(dsRbFilePreserveSlot.getInsertIndex());
newDsRbFilePreserveSlot.setSlotName(dsRbFilePreserveSlot.getSlotName());
newDsRbFilePreserveSlot.setSlotIndex(dsRbFilePreserveSlot.getSlotIndex());
List<MesRbFilePreserveDetailEntity> preserveDetailList = mesRbFilePreserveDetailService.getByRfpsId(dsRbFilePreserveSlot.getId());
if (!preserveDetailList.isEmpty()) {
dsRbFilePreserveDetailList = new ArrayList<>();
for (int i = 0; i < preserveDetailList.size(); i++) {
MesRbFilePreserveDetailEntity dsRbFilePreserveDetail = preserveDetailList.get(i);
Short rfpsType = 0;
if (dsRbFilePreserveDetail != null && dsRbFilePreserveDetail.getRfpsId() != null) {
rfpsType = mesRbFilePreserveSlotService.getById(dsRbFilePreserveDetail.getRfpsId()).getRfpsType();
}
newDsRbFilePreserveDetail = new MesRbFilePreserveDetailEntity();
newDsRbFilePreserveDetail.setDetailName(dsRbFilePreserveDetail.getDetailName());
newDsRbFilePreserveDetail.setDetailIndex(dsRbFilePreserveDetail.getDetailIndex());
// 工艺要求
newDsRbFilePreserveDetail.setAsk(dsRbFilePreserveDetail.getAsk());
newDsRbFilePreserveDetail.setParamName(dsRbFilePreserveDetail.getParamName());
if (i == 0) {
newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getInDate());
} else if (i == 1) {
newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getOutDate());
}
if (rfpsType == 1) { // 模板一
if (i == 0) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne());
} else if (i == 1) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo());
}
} else if (rfpsType == 2) { // 模板二
if (i == 2) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne());
}
} else if (rfpsType == 3) { // 模板三
if (i == 2) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne());
} else if (i == 3) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo());
}
} else if (rfpsType == 4) { // 模板四
if (i == 0) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne());
} else if (i == 1) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo());
} else if (i == 2) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThree());
}
} else if (rfpsType == 5 || rfpsType == 22) { // 模板五
if (i == 0) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne());
} else if (i == 1) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo());
} else if (i == 2) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThree());
} else if (i == 3) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFour());
} else if (i == 4) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFive());
}
} else if (rfpsType == 6) { // 模板六
if (i == 0) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne());
} else if (i == 1) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo());
} else if (i == 2) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThree());
} else if (i == 3) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFour());
} else if (i == 4) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFive());
} else if (i == 5) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSix());
}
} else if (rfpsType == 7) { // 模板七
if (i == 0) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne());
}
} else if (rfpsType == 8) { // 模板八
if (i == 0) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne());
} else if (i == 1) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo());
}
} else if (rfpsType == 9) { // 模板九
if (i == 2) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne());
} else if (i == 3) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo());
} else if (i == 4) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThree());
}
} else if (rfpsType == 10) { // 模板十
if (i == 0) {
newDsRbFilePreserveDetail.setQualified(qcProduceRun.getQualified());
}
} else if (rfpsType == 11) { // 模板十一
if (i == 2) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne());
} else if (i == 3) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo());
}
} else if (rfpsType == 12) { // 模板十二
if (i == 0) {
newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getDataOne());
} else if (i == 1) {
newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getDataTwo());
} else if (i == 2) {
newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getDataThree());
}
} else if (rfpsType == 13) { // 模板十三
if (i == 0) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne());
} else if (i == 1) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo());
} else if (i == 2) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThree());
} else if (i == 3) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFour());
} else if (i == 4) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFive());
} else if (i == 5) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSix());
} else if (i == 6) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSeven());
} else if (i == 7) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataEight());
} else if (i == 8) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataNine());
} else if (i == 9) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTen());
}
} else if (rfpsType == 14) { // 模板十四
if (i == 2) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne());
} else if (i == 3) {
newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getDataTwo());
} else if (i == 4) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThree());
} else if (i == 5) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFour());
} else if (i == 6) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFive());
} else if (i == 7) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSix());
} else if (i == 8) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSeven());
} else if (i == 9) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataEight());
} else if (i == 10) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataNine());
} else if (i == 11) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTen());
}
} else if (rfpsType == 15) { // 模板十五
if (i == 2) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne());
} else if (i == 3) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo());
} else if (i == 4) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThree());
} else if (i == 5) {
newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getDataFour());
} else if (i == 6) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFive());
} else if (i == 7) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSix());
} else if (i == 8) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSeven());
} else if (i == 9) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataEight());
} else if (i == 10) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataNine());
} else if (i == 11) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTen());
} else if (i == 12) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataEleven());
} else if (i == 13) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwelve());
}
} else if (rfpsType == 16) { // 模板十六
if (i == 2) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne());
} else if (i == 3) {
newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getDataTwo());
} else if (i == 4) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThree());
} else if (i == 5) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFour());
} else if (i == 6) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFive());
} else if (i == 7) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSix());
} else if (i == 8) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSeven());
} else if (i == 9) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataEight());
} else if (i == 10) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataNine());
} else if (i == 11) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTen());
} else if (i == 12) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataEleven());
} else if (i == 13) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwelve());
} else if (i == 14) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThirteen());
} else if (i == 15) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFourteen());
}
} else if (rfpsType == 17) { // 模板十七
if (i == 2) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne());
} else if (i == 3) {
newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getDataTwo());
} else if (i == 4) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThree());
} else if (i == 5) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFour());
} else if (i == 6) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFive());
} else if (i == 7) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSix());
}
} else if (rfpsType == 18) { // 模板十八
if (i == 0) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne());
}
} else if (rfpsType == 19) { // 模板十九 //zxh 20250519 新增模板19和模板20
if (i == 0) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne());
} else if (i == 1) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo());
} else if (i == 2) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThree());
} else if (i == 3) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFour());
} else if (i == 4) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFive());
} else if (i == 5) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSix());
} else if (i == 6) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSeven());
} else if (i == 7) {
newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getDataEight());
} else if (i == 8) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataNine());
} else if (i == 9) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTen());
} else if (i == 10) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataEleven());
} else if (i == 11) {
newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getDataTwelve());
}
} else if (rfpsType == 20) { // 模板二十
if (i == 0) {
newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getInDate());
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getInDate());
} else if (i == 1) {
newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getInDate());
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getInDate());
} else if (i == 2) {
newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getOutDate());
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getOutDate());
} else if (i == 3) {
newDsRbFilePreserveDetail.setRfpdTime(qcProduceRun.getOutDate());
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getOutDate());
} else if (i == 4) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFive());
} else if (i == 5) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSix());
} else if (i == 6) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSeven());
} else if (i == 7) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataEight());
}
} else if (rfpsType == 21) { // 模板十三
if (i == 0) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataOne());
} else if (i == 1) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataTwo());
} else if (i == 2) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataThree());
} else if (i == 3) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFour());
} else if (i == 4) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataFive());
} else if (i == 5) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSix());
} else if (i == 6) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataSeven());
} else if (i == 7) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataEight());
} else if (i == 8) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getDataNine());
}
}
String detailName = dsRbFilePreserveDetail.getDetailName();
if (detailName != null) {
if (detailName.contains("温度")) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getTempSlot());
} else if (detailName.contains("电导率")) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getEleRate());
} else if (detailName.contains("电流") && !(detailName.contains("壳体") || detailName.contains("插针"))) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getEleStream());
} else if (detailName.contains("链速")) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getVSpeed());
} else if (detailName.contains("镍离子")) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getNiValue());
} else if (detailName.contains("pH值")) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getPhValue());
}
//zxh 20250604 新增软起时间和工作电压
else if (detailName.contains("软起时间")) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getSoftWorkTime());
} else if (detailName.contains("工作电压")) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getVoltage());
} else if (detailName.contains("初始电压")) {
newDsRbFilePreserveDetail.setParamValue(qcProduceRun.getStartVol());
}
}
dsRbFilePreserveDetailList.add(newDsRbFilePreserveDetail);
}
newDsRbFilePreserveSlot.setChildrenList(dsRbFilePreserveDetailList);
}
temporaryList.add(newDsRbFilePreserveSlot);
}
}
public String prefix(String stringToFix, String fixChar, int targetLen) {
int len = stringToFix.length();
for(int i = 0; i < targetLen - len; i += fixChar.length()) {
for (int i = 0; i < targetLen - len; i += fixChar.length()) {
stringToFix = fixChar + stringToFix;
}
return stringToFix;

@ -11,6 +11,7 @@ import org.springblade.desk.quality.excel.ProReTemplateExcel;
import org.springblade.desk.quality.pojo.entity.ProReTemplate;
import org.springblade.desk.quality.pojo.vo.ProReTemplateVO;
import java.math.BigDecimal;
import java.util.List;
/**
@ -51,4 +52,6 @@ public interface IProReTemplateService extends EnBaseService<ProReTemplate> {
R upgradeVer(Long id);
R removeFromDetail(Long tankId);
List<ProReTemplate> getDataByWcIdAndPpsId(BigDecimal wcId, Long ppsId, Boolean aTrue);
}

@ -5,7 +5,9 @@ package org.springblade.desk.quality.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import lombok.Data;
@ -29,6 +31,7 @@ import org.springblade.system.feign.ISysClient;
import org.springblade.system.feign.IUserClient;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.*;
/**
@ -132,4 +135,14 @@ public class ProReTemplateServiceImpl extends EnBaseServiceImpl<ProReTemplateMap
public R removeFromDetail(Long tankId) {
return R.status(tankService.removeById(tankId));
}
@Override
public List<ProReTemplate> getDataByWcIdAndPpsId(BigDecimal wcId, Long ppsId, Boolean aTrue) {
LambdaQueryWrapper<ProReTemplate> queryWrapper = Wrappers.lambdaQuery(ProReTemplate.class);
queryWrapper.eq(wcId != null, ProReTemplate::getWcId, wcId);
queryWrapper.eq(ProReTemplate::getPpsId, ppsId);
queryWrapper.eq(ProReTemplate::getLine, aTrue ? "0" : "1");
queryWrapper.eq(ProReTemplate::getStatus, 2);
return this.list(queryWrapper);
}
}

Loading…
Cancel
Save