@ -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 ( ) ) ) {