电子档案,热表打印未写完

liweidong
pangyang 4 weeks ago
parent ae76e79f0b
commit 08af3ccff6
  1. 5
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlan.java
  2. 1
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorSlotListVO.java
  3. 11
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java
  4. 64
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml
  5. 13
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/InspectionTaskController.java
  6. 3
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IInspectionTaskService.java
  7. 128
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/InspectionTaskServiceImpl.java

@ -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.vo.ProduceMonitorSlotListVO;
import org.springblade.desk.quality.pojo.entity.InspectionTask;
import org.springblade.desk.quality.pojo.entity.WorkPlanItem;
@ -289,5 +290,9 @@ public class WorkPlan extends BaseEntity {
@Schema(description = "返工工艺Id")
@TableField(exist = false)
public Long rpId;
@TableField(exist = false)
private List<ProduceMonitorSlotListVO> slotList;
@TableField(exist = false)
private List<MesQcProduceRunEntity> prList;
}

@ -28,6 +28,7 @@ public class ProduceMonitorSlotListVO {
@Schema(description = "数量")
private String qua;
private String poQty;
private String workQty;
@Schema(description = "生产标识")
private String prodIdent;

@ -2,7 +2,10 @@ package org.springblade.desk.produce.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
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.pojo.vo.ProduceMonitorWorkPlanVO;
import org.springblade.desk.produce.pojo.vo.WorkPlanLoadVO;
import org.springblade.scheduling.pojo.entity.WorkPlanEntity;
@ -33,4 +36,12 @@ public interface WorkPlanMapper extends BaseMapper<WorkPlan> {
WorkPlan findMaxHostWorkUnitByWoId(Long id, int i);
List<WorkPlan> afterPlaReceive(String cardNo);
List<MesQcProduceRunEntity> listPrByWpId(Long wpId);
MesQcProduceRunEntity getBoxInfo(Long wpId);
List<ProduceMonitorSlotListVO> listSlotInfoGr (Long wpId, Boolean aTrue);
List<ProduceMonitorSlotListVO> listSlotInfo (Long wpId,Boolean aTrue);
}

@ -57,6 +57,70 @@
where is_deleted = 0
</select>
<select id="listPrByWpId" resultType="org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity">
select b.* from MES_QC_PRODUCE_RUN b
where b.MTN_CODE in (select a.MTN_CODE from MES_MAC_TOOL_USE a where a.WP_ID =#{wpId} )
</select>
<select id="getBoxInfo" 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
where b.CATEGORYS = '烘箱设备' and a.WP_ID = #{wpId}
)
and c.WORK_SLOT = '烘箱' order by c.IN_DATE desc
</select>
<select id="listSlotInfoGr" 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,
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.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 = #{wpId}
<if test="aTrue==true">
and b.CATEGORYS = '产线设备'
</if>
)
and a.mtu_index = '1' and b.pps_id = 417
) 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="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.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.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 = #{wpId}
<if test="aTrue==true">
and b.CATEGORYS = '产线设备'
</if>
) and a.mtu_index = '2' and a.BS_FEI_BA_SET is not null
)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="loadPrMacToolUseByMtnCode" resultType="java.lang.String">
SELECT
c.card_no

@ -187,6 +187,19 @@ public class InspectionTaskController extends BladeController {
return R.data(pagesVO);
}
@Operation(summary = "新版热表电子档案打印", description = "传入JSONObject")
@RequestMapping(value = "/newPagePrint", method = RequestMethod.POST)
public R newPagePrint(@RequestBody JSONObject data) {
Long woId = data.getLong("woId");
List<Boolean> planList = data.getJSONArray("planList").toJavaList(Boolean.class); // 工序
List<Boolean> moduleList = data.getJSONArray("moduleList").toJavaList(Boolean.class); // 模块
JSONObject obj = service.newPagePrintEleFiles(woId, planList,moduleList);
return R.data(obj);
// return ResultInfo.ok(prWorkOrderService.newPagePrintEleFiles(woId, planList,moduleList));
}
/**
* [检验任务] 自定义分页
*/

@ -4,6 +4,7 @@
package org.springblade.desk.quality.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.v3.oas.annotations.Parameter;
@ -116,7 +117,7 @@ public interface IInspectionTaskService extends BaseService<InspectionTask> {
IPage<InspectionTaskListVO> queryWorkOrder(IPage<InspectionTaskListVO> page, InspectionTaskSearch search);
List<InspectionTaskListVO> correspondingProcess(Long woId);
R getSamePlace(Long id);
JSONObject newPagePrintEleFiles(Long woId, List<Boolean> planList, List<Boolean> moduleList);
R sameResultCopy(Long sourceId, Long targetId);
InspectionTask refreshStatusAndQty(Long id);

@ -4,6 +4,7 @@
package org.springblade.desk.quality.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -15,6 +16,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springblade.common.constant.CommonConstant;
import org.springblade.common.exception.BusinessException;
import org.springblade.core.mp.base.BaseServiceImpl;
@ -26,10 +28,20 @@ import org.springblade.desk.basic.constant.BaseRequest;
import org.springblade.desk.basic.constant.BaseValue;
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.service.IBsProcessSetService;
import org.springblade.desk.dashboard.service.IDsPartService;
import org.springblade.desk.order.mapper.YieldOrderMapper;
import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.order.service.IYieldOrderService;
import org.springblade.desk.produce.mapper.WorkPlanMapper;
import org.springblade.desk.produce.pojo.entity.MacToolUse;
import org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity;
import org.springblade.desk.produce.pojo.entity.WorkOrder;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO;
import org.springblade.desk.produce.service.IWorkOrderService;
import org.springblade.desk.produce.service.IWorkPlanService;
import org.springblade.desk.quality.constant.InspectionItemConst;
import org.springblade.desk.quality.constant.InspectionTaskConst;
@ -42,6 +54,7 @@ import org.springblade.desk.quality.pojo.request.InspectionTaskStartNew;
import org.springblade.desk.quality.pojo.vo.*;
import org.springblade.desk.quality.service.*;
import org.springblade.desk.quality.wrapper.InspectionTaskListWrapper;
import org.springblade.scheduling.pojo.entity.ProcessSetEntity;
import org.springblade.system.feign.IDictClient;
import org.springblade.system.feign.IUserClient;
import org.springframework.context.annotation.Lazy;
@ -50,6 +63,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
/**
* [检验任务] 服务实现类
@ -90,6 +104,14 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
private IRemindMsgService service;
@Resource
private WorkPlanMapper workPlanMapper;
@Resource
private IWorkOrderService workOrderService;
@Resource
private YieldOrderMapper yieldOrderMapper;
@Resource
private IBsProcessSetService processSetService;
@Override
public InspectionTaskListVO detailById(InspectionTask inspectionTask) {
@ -375,6 +397,112 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
return R.data(listVO);
}
@Override
public JSONObject newPagePrintEleFiles(Long woId, List<Boolean> planList, List<Boolean> moduleList) {
if (woId == null || planList == null || planList.size() == 0) {
return null;
}
JSONObject jsonObj = new JSONObject();
WorkOrder wo = workOrderService.getById(woId);
YieldOrder pjYieldOrder = yieldOrderMapper.selectById(wo.getYoId());
QueryWrapper<DsPartEntity> qwpart = new QueryWrapper<>();
qwpart.eq("PART_CODE", pjYieldOrder.getPartCode());
List<DsPartEntity> partList = partService.list(qwpart);
DsPartEntity dsPart = new DsPartEntity();
if(partList != null && partList.size() > 0){
dsPart = partList.get(0);
}
QueryWrapper<WorkPlan> qwplan = new QueryWrapper<>();
qwplan.eq("WO_ID", woId);
List<WorkPlan> wpList = workPlanMapper.selectList(qwplan);
if (moduleList.get(0)) {
// 头记录
JSONObject modelJson = new JSONObject();
modelJson.put("wo", wo);
modelJson.put("dsPart", dsPart);
jsonObj.put("modelOne", modelJson);
}
// 检验记录
if (moduleList.get(1)) {
JSONObject modelJson1 = new JSONObject();
// List<PrintChildCheck> checkList = this.getCheckListNotNG(woId, true);
// modelJson1.put("checkList", checkList);
//
// List<PrWorkPlan> checkPrWorkPlan = new ArrayList<>();
// for (PrWorkPlan prWorkPlan : wpList) {
// if(prWorkPlan.getProcedureSet() != null){
// if("镀后检验".equals(prWorkPlan.getProcedureSet().getPpsName())){
// checkPrWorkPlan.add(prWorkPlan);
// }
// }
// }
// modelJson1.put("checkPrWorkPlan", checkPrWorkPlan);
jsonObj.put("modelThree", modelJson1);
}
// 生产过程(放在获取检验记录下面,这个方法会排除数据)
this.getNewProcess(wpList, jsonObj, planList);
return null;
}
public void getNewProcess(List<WorkPlan> wpList, JSONObject jsonObj, List<Boolean> modelFlag) {
if (wpList == null || wpList.size() == 0) {
return;
}
// 移除最后两道工序
List<WorkPlan> newWpList = wpList;
// for (int i = 0; i < 2; i++) {
// newWpList.remove(wpList.size() - 1);
// }
List<WorkPlan> workPlanList = new ArrayList<>();
for (int i = 0; i < newWpList.size(); i++) {
if (modelFlag.get(i)) {
WorkPlan prWorkPlan = newWpList.get(i);
this.getProcessByWp(prWorkPlan);
workPlanList.add(prWorkPlan);
}
}
jsonObj.put("modelTwo", workPlanList);
}
public void getProcessByWp(WorkPlan workPlan) {
MesQcProduceRunEntity box = null;
// 生产追溯数据(从生产追溯表中获取)
if (WorkPlan.PRINT_TYPE_PROCESS.equals(workPlan.getPrintType())) {
List<MesQcProduceRunEntity> prList = workPlanMapper.listPrByWpId(workPlan.getId());
// 烘箱信息(从设备,工装使用记录获取)
box = workPlanMapper.getBoxInfo(workPlan.getId());
if (StringUtils.isNotBlank(box.getInDate())) {
prList.add(box);
}
Optional.ofNullable(prList).filter(s -> prList.size() > 0).ifPresent(s -> workPlan.setPrList(prList));
BsProcessSetEntity process = processSetService.getById(workPlan.getPpsId());
// 同槽信息(从设备,工装使用记录获取)
List<ProduceMonitorSlotListVO> slotList;
//zxh 20250626 增加固溶工序同炉数据
if (process.getName().equals("固溶")) {
slotList = workPlanMapper.listSlotInfoGr(workPlan.getId(), Boolean.FALSE);
} else {
slotList = workPlanMapper.listSlotInfo(workPlan.getId(), Boolean.TRUE);
if (slotList == null || slotList.size() == 0) {
slotList = workPlanMapper.listSlotInfo(workPlan.getId(), Boolean.FALSE);
}
}
// 2025-07-23 线上迁移修改 删除了prMacToolUseService.listSlotInfo方法调用
workPlan.setSlotList(slotList);
}
}
@SneakyThrows
@Transactional(rollbackFor = Exception.class) // todo:
@Override

Loading…
Cancel
Save