生产管理-工序报工

liweidong
sugy 2 months ago
parent 5ee93fee30
commit bdbf88042e
  1. 1
      blade-ops/blade-develop/src/main/java/org/springblade/develop/service/impl/ModelPrototypeServiceImpl.java
  2. 25
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/MakeRecDTO.java
  3. 21
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/MesMakeRecDTO.java
  4. 165
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/WorkPlanDto.java
  5. 21
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/MesMakeRecVO.java
  6. 71
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/PdaProRelevantVO.java
  7. 17
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/WorkPlanLoadVO.java
  8. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaLoadController.java
  9. 64
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PrMakeRecController.java
  10. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MakeRecMapper.java
  11. 38
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MakeRecMapper.xml
  12. 17
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMakeRecService.java
  13. 3
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaLoadService.java
  14. 281
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MakeRecServiceImpl.java
  15. 28
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java

@ -103,6 +103,7 @@ public class ModelPrototypeServiceImpl extends BaseServiceImpl<ModelPrototypeMap
if (StringUtil.isNotBlank(tableName)) {
builder.addInclude(tableName);
}
builder.addInclude("MES_MAKE_REC");
StrategyConfig strategyConfig = builder.entityBuilder()
.naming(NamingStrategy.underline_to_camel)
.columnNaming(NamingStrategy.underline_to_camel).build();

@ -0,0 +1,25 @@
package org.springblade.desk.produce.pojo.dto;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.desk.produce.pojo.entity.MakeRec;
/**
* [周期试验] 对象实体类
*
* @author Tom Shuo
* @since 2025-12-22
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class MakeRecDTO extends MakeRec {
private String resource;
private String num;
private String thickness;
private String code;
private String inspectCode;
private Integer status;
private String shape;
}

@ -0,0 +1,21 @@
package org.springblade.desk.produce.pojo.dto;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.desk.produce.pojo.entity.MakeRec;
import java.io.Serial;
/**
* 加工记录 数据传输对象实体类
*
* @author BladeX
* @since 2026-02-04
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class MesMakeRecDTO extends MakeRec {
@Serial
private static final long serialVersionUID = 1L;
}

@ -0,0 +1,165 @@
package org.springblade.desk.produce.pojo.dto;
import lombok.Builder;
import lombok.Data;
import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.produce.pojo.entity.WorkOrder;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import java.io.Serializable;
import java.util.Date;
/**
* <p>Description: 车间接收传送数据 </p>
*
* @author lyj
* @date 2022-11-01 10:16
*/
@Builder
@Data
public class WorkPlanDto implements Serializable {
/**
* 下级B号
*/
private String nextRoam;
/**
* 生产单号
*/
private String yoCode;
/**
* 计划单号
*/
private String poCode;
/**
* 零件号
*/
private String partCode;
/**
* 产品型号
*/
private String productType;
/**
* 名称
*/
private String partName;
/**
* 镀种
*/
private String plate;
/**
* 生产标识
*/
private String prodIdent;
/**
* 使用部门
*/
private String useDept;
/**
* 面积
*/
private Double poArea;
/**
* 需求交期
*/
private Date demandDate;
/**
* 计划员
*/
private String planUser;
/**
* 计划下达时间
*/
private Date releaseDate;
/**
* 一级工艺线路
*/
private String primaryCraft;
/**
* 路线卡号
*/
private String cardNo;
/**
* 批次号
*/
private String batchNo;
/**
* 订单编号
*/
private String woCode;
/**
* 加工数量
*/
private Double makeQty;
/**
* 未报工数量
*/
private Double notWorkQty;
/**
* 已报工数量
*/
private Double workQty;
/**
* 报废
*/
private Double scrapQty;
/**
* 计划完工日期
*/
private Date planEndDate;
/**
* 已入库数量
*/
private Double inventoryQty;
/**
* 已入库数量
*/
private Double notInQty;
/**
* 运行状态
*/
public String runStatusTitle;
/**
* 工序状态
*/
public Short status;
/**
* 优先级
*/
public String priorityTitle;
/**
* 领料状态
*/
public String pickingStatusTitle;
/**
* 是否绑定挂次号
*/
public Boolean isBinging;
/**
* 当前工序
*/
public Long currentWpId;
public Long wpId;
public String currentWpTitle;
public String currentMakeTeam;
/**
* 上序
*/
public String frontWpTitle;
public String frontMakeTeam;
/**
* 下序
*/
public String nextWpTitle;
public String nextMakeTeam;
private YieldOrder yieldOrder;
private WorkOrder workOrder;
private WorkPlan workPlan;
}

@ -0,0 +1,21 @@
package org.springblade.desk.produce.pojo.vo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.desk.produce.pojo.entity.MakeRec;
import java.io.Serial;
/**
* 加工记录 视图实体类
*
* @author BladeX
* @since 2026-02-04
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class MesMakeRecVO extends MakeRec {
@Serial
private static final long serialVersionUID = 1L;
}

@ -0,0 +1,71 @@
package org.springblade.desk.produce.pojo.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @ClassName PdaProRelevant
* @Description: 加载车间订单工序接受检验数据模型
* @Author qjh
* @Date 2022-10-28 17:42
* @Version 1.0
* 注意本内容仅限于内部传阅禁止外泄及用于其他的商业目的
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class PdaProRelevantVO {
/**
* 路线卡号
*/
private String cardNo;
/**
* 订单编号
*/
private String woCode;
/**
* 批次号
*/
private String batchNo;
/**
* 零件号
*/
private String partCode;
/**
* 零件名称
*/
private String partName;
/**
* 上序号
*/
private String frontOrders;
/**
* 上序名称
*/
private String frontPpsName;
/**
* 工序id
*/
private Long wpId;
/**
* 工序号
*/
private String orders;
/**
* 工序名称
*/
private String ppsName;
/**
* 班组
*/
private String makeTeam;
/**
* 加工数量
*/
private Double makeQty;
}

@ -0,0 +1,17 @@
package org.springblade.desk.produce.pojo.vo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
/**
* 分批准备数据 视图实体类
*
* @author litao
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class WorkPlanLoadVO extends WorkPlan {
}

@ -60,5 +60,11 @@ public class PdaLoadController {
public R loadSubOrder(@PathVariable String cardNo) {
return R.data(pdaLoadService.loadSubOrder(cardNo));
}
@GetMapping(value = "/loadProTest/{cardNo}")
@ApiOperationSupport(order = 6)
@Operation(summary = "加载当前工序检验数据", description = "传入cardNo")
public R loadProTest(@PathVariable String cardNo) {
return R.data(pdaLoadService.loadProTestWorkPlan(cardNo));
}
}

@ -0,0 +1,64 @@
package org.springblade.desk.produce.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.desk.produce.pojo.dto.MakeRecDTO;
import org.springblade.desk.produce.pojo.vo.MesMakeRecVO;
import org.springblade.desk.produce.pojo.vo.UnBingDeviceVo;
import org.springblade.desk.produce.pojo.vo.WorkPlanVO;
import org.springblade.desk.produce.service.IMakeRecService;
import org.springblade.desk.produce.service.IWorkPlanService;
import org.springframework.web.bind.annotation.*;
/**
* 加工记录 控制器
*
* @author BladeX
* @since 2025-11-28
*/
@RestController
@AllArgsConstructor
@RequestMapping("/prMakeRec")
@Tag(name = "加工记录", description = "接口")
public class PrMakeRecController extends BladeController {
private final IMakeRecService makeRecService;
@GetMapping(value = "/loadCurrentWp/{cardNo}")
@ApiOperationSupport(order = 1)
@Operation(summary = "加载当前工序", description = "传入cardNo")
public R loadSubOrder(@PathVariable String cardNo) {
return R.data(makeRecService.loadCurrentWp(cardNo));
}
@Operation(summary = "增加加工记录")
@PostMapping("/saveMakeRec")
public R saveMakeRec(@RequestBody MakeRecDTO makeRecDTO) {
makeRecService.saveMakeRec(makeRecDTO);
return R.success() ;
}
/**
* 加工记录
*/
@GetMapping("/queryMakeRec")
@ApiOperationSupport(order = 3)
@Operation(summary = "加工记录", description = "传入mesMakeRec")
public R<IPage<MesMakeRecVO>> page(MesMakeRecVO mesMakeRec, Query query) {
IPage<MesMakeRecVO> pages = makeRecService.selectMesMakeRecPage(Condition.getPage(query), mesMakeRec);
return R.data(pages);
}
@GetMapping(value = "/loadNotReceived/{cardNo}")
@Operation(summary = "任务接收查询", description = "传入cardNo")
public R loadNotReceived(@PathVariable String cardNo) {
return R.data(makeRecService.loadNotReceived(cardNo));
}
}

@ -1,7 +1,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.MakeRec;
import org.springblade.desk.produce.pojo.vo.MesMakeRecVO;
import java.util.List;
/**
* 加工记录 Mapper 接口
@ -10,4 +14,5 @@ import org.springblade.desk.produce.pojo.entity.MakeRec;
*/
public interface MakeRecMapper extends BaseMapper<MakeRec> {
List<MesMakeRecVO> selectMesMakeRecPage(IPage<MesMakeRecVO> page, MesMakeRecVO mesMakeRec);
}

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.springblade.desk.produce.mapper.MakeRecMapper">
<!-- 通用查询映射结果 -->
<resultMap id="mesMakeRecResultMap" type="org.springblade.desk.produce.pojo.entity.MakeRec">
<result column="FLAG_COLOUR_TWO" property="flagColourTwo"/>
<result column="FLAG_INK" property="flagInk"/>
<result column="FLAG_MATTER" property="flagMatter"/>
<result column="BELT_QTY" property="beltQty"/>
<result column="BELT_COLOUR_ONE" property="beltColourOne"/>
<result column="BELT_COLOUR_TWO" property="beltColourTwo"/>
<result column="BELT_INK" property="beltInk"/>
<result column="BELT_MATTER" property="beltMatter"/>
<result column="MEMO" property="memo"/>
<result column="CREATE_USER" property="createUser"/>
<result column="CREATE_DEPT" property="createDept"/>
<result column="CREATE_TIME" property="createTime"/>
<result column="UPDATE_USER" property="updateUser"/>
<result column="UPDATE_TIME" property="updateTime"/>
<result column="STATUS" property="status"/>
<result column="IS_DELETED" property="isDeleted"/>
<result column="ID" property="id"/>
<result column="WP_ID" property="wpId"/>
<result column="WORKER" property="worker"/>
<result column="WORK_QTY" property="workQty"/>
<result column="SCRAP_QTY" property="scrapQty"/>
<result column="MAKE_TIME" property="makeTime"/>
<result column="FLAG_QTY" property="flagQty"/>
<result column="FLAG_COLOUR_ONE" property="flagColourOne"/>
</resultMap>
<select id="selectMesMakeRecPage" resultMap="mesMakeRecResultMap">
select * from MES_MAKE_REC where is_deleted = 0
</select>
</mapper>

@ -1,7 +1,14 @@
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.dto.MakeRecDTO;
import org.springblade.desk.produce.pojo.dto.WorkPlanDto;
import org.springblade.desk.produce.pojo.entity.MakeRec;
import org.springblade.desk.produce.pojo.vo.MesMakeRecVO;
import org.springblade.desk.produce.pojo.vo.WorkPlanLoadVO;
import java.util.List;
/**
* 加工记录 服务类
@ -12,4 +19,14 @@ import org.springblade.desk.produce.pojo.entity.MakeRec;
public interface IMakeRecService extends BaseService<MakeRec> {
WorkPlanDto loadCurrentWp(String cardNo);
/**
* 增加工序记录
* @param makeRecDTO
*/
void saveMakeRec(MakeRecDTO makeRecDTO);
IPage<MesMakeRecVO> selectMesMakeRecPage(IPage<MesMakeRecVO> page, MesMakeRecVO mesMakeRec);
List<WorkPlanLoadVO> loadNotReceived(String cardNo);
}

@ -7,6 +7,7 @@ import org.springblade.desk.device.pojo.entity.RackSetEntity;
import org.springblade.desk.produce.pojo.entity.WorkOrder;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.pojo.vo.LoadSubOrderVO;
import org.springblade.desk.produce.pojo.vo.PdaProRelevantVO;
import java.util.List;
@ -52,4 +53,6 @@ public interface IPdaLoadService extends BaseService<WorkPlan> {
Object getEcByCode(String deviceCode);
LoadSubOrderVO loadSubOrder(String cardNo);
PdaProRelevantVO loadProTestWorkPlan(String cardNo);
}

@ -1,13 +1,45 @@
package org.springblade.desk.produce.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import jodd.bean.BeanUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.desk.basic.pojo.entity.RelTeamSetUser;
import org.springblade.desk.basic.pojo.entity.TeamSet;
import org.springblade.desk.basic.service.IRelTeamSetUserService;
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.pojo.entity.DsProcessEntity;
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.dashboard.service.IDsProcessService;
import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.order.service.IYieldOrderService;
import org.springblade.desk.produce.mapper.MakeRecMapper;
import org.springblade.desk.produce.mapper.WorkOrderMapper;
import org.springblade.desk.produce.mapper.WorkPlanMapper;
import org.springblade.desk.produce.pojo.dto.MakeRecDTO;
import org.springblade.desk.produce.pojo.dto.WorkPlanDto;
import org.springblade.desk.produce.pojo.entity.*;
import org.springblade.desk.produce.service.IMakeRecService;
import org.springblade.desk.produce.pojo.vo.MesMakeRecVO;
import org.springblade.desk.produce.pojo.vo.WorkPlanLoadVO;
import org.springblade.desk.produce.service.*;
import org.springblade.desk.quality.pojo.entity.AuditFile;
import org.springblade.desk.quality.service.IAuditFileService;
import org.springblade.system.pojo.entity.DataScope;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* 加工记录 服务实现类
*
@ -18,4 +50,251 @@ import org.springframework.stereotype.Service;
@RequiredArgsConstructor
public class MakeRecServiceImpl extends BaseServiceImpl<MakeRecMapper, MakeRec> implements IMakeRecService {
private final WorkOrderMapper workOrderMapper;
private final WorkPlanMapper workPlanMapper;
private final IMacToolUseService macToolUseService;
private final IYieldOrderService yieldOrderService;
private final IDsProcessService dsProcessService;
private final IMesQcProduceRunService mesQcProduceRunService;
private final IBsProcessSetService bsProcessSetService;
private final IAuditFileService auditFileService;
private final IBsTeamSetService teamSetService;
private final IDsPartService partService;
private final IRelTeamSetUserService relTeamSetUserService;
@Override
public WorkPlanDto loadCurrentWp(String cardNo) {
WorkOrder wo= workOrderMapper.getWorkOrderByCardNo(cardNo, (short) 0);
if (wo == null) {
throw new ServiceException("pda.prWorkOrder.absent");
}
if (!WorkOrder.RUN_STATUS_RECEIVE.equals(wo.getRunStatus())) {
throw new ServiceException("pda.prWorkOrder.runStatus"+wo.getRunStatus());
}
//验证当前当前登陆人是否可以填写加工记录
WorkPlan wp =workPlanMapper.selectById(wo.getWpId());
if (!WorkPlan.STATUS_START.equals(wp.getStatus())) {
throw new ServiceException("product.prWorkPlan.workOk");
}
//this.checkTeamWorkPlan(wp, prWorkPlanService.getTeamId(userInfo.getUserId()));
Boolean isBinging = false;
// 查询当前工序是否绑定了挂次号
MacToolUse prMacToolUse = macToolUseService.getOne(Wrappers.<MacToolUse>lambdaQuery().eq(MacToolUse::getWpId, wp.getId()));
if (prMacToolUse != null && prMacToolUse.getMtnCode() != null) {
isBinging = true;
}
YieldOrder yieldOrder = yieldOrderService.getById(wo.getYoId());
return WorkPlanDto.builder().workPlan(wp).workOrder( wo).yieldOrder(yieldOrder).isBinging(isBinging).build();
}
@Override
public void saveMakeRec(MakeRecDTO makeRecDTO) {
WorkPlan wp= workPlanMapper.selectById(makeRecDTO.getWpId());
if (!WorkPlan.STATUS_START.equals(wp.getStatus())) {
throw new ServiceException("product.prWorkPlan.workOk");
}
MacToolUse mtu = null;
DsProcessEntity dsProcess = dsProcessService.getById(wp.getPpsId());
//如果是上挂工序,需判定是否绑定挂具
if (dsProcess.getProcessName().equals("上挂")) {
mtu = macToolUseService.getOne(Wrappers.<MacToolUse>lambdaQuery().eq(MacToolUse::getWpId, wp.getId())
.isNotNull(MacToolUse::getBsRackSet));
if (mtu == null) {
throw new ServiceException("product.prWorkPlan.not.bing.bsRackSet");
}
// 如果上序是上挂工序、并且本序是主工序,则代表本序是 需要绑定飞靶及设备的工序 或者手动维护生产追溯信息
}else if(wp.getFrontWpId()!=null&&dsProcess.getProcessName().equals("上挂")&&wp.getCruxProcess().equals("是")){
mtu = macToolUseService.getOne(Wrappers.<MacToolUse>lambdaQuery().eq(MacToolUse::getWpId, wp.getId())
.isNotNull(MacToolUse::getBsRackSet).isNotNull(MacToolUse::getBsFeiBaSet).isNotNull(MacToolUse::getEquipmentCard));
if (mtu == null) {
// 验证是否维护了生产追溯信息
List<String> mtnCodeList=macToolUseService.listObjs(Wrappers.<MacToolUse>lambdaQuery().eq(MacToolUse::getWpId, wp.getId()).select(MacToolUse::getMtnCode));
List<MesQcProduceRunEntity> qcProduceRunList = mesQcProduceRunService.list(Wrappers.<MesQcProduceRunEntity>lambdaQuery()
.in(MesQcProduceRunEntity::getMtnCode,mtnCodeList));
if (!(qcProduceRunList != null && qcProduceRunList.size() > 0)) {
throw new ServiceException("product.prWorkPlan.not.bing");
}
}
}else if (dsProcess.getProcessName().contains("镀金")) {
mtu = macToolUseService.getOne(Wrappers.<MacToolUse>lambdaQuery().eq(MacToolUse::getWpId, wp.getId())
.isNotNull(MacToolUse::getBsFeiBaSet));
if (mtu == null) {
throw new ServiceException("此工序未绑定飞跋,请绑定飞跋!!!");
}
//验证是否绑定设备
mtu = macToolUseService.getOne(Wrappers.<MacToolUse>lambdaQuery().eq(MacToolUse::getWpId, wp.getId())
.isNotNull(MacToolUse::getBsRackSet).isNotNull(MacToolUse::getBsFeiBaSet).isNotNull(MacToolUse::getEquipmentCard));
if (mtu == null) {
List<MesQcProduceRunEntity> produceRunList = null;
List<String> mtnCodeList=macToolUseService.listObjs(Wrappers.<MacToolUse>lambdaQuery()
.eq(MacToolUse::getWpId, wp.getId()).eq(MacToolUse::getMtuIndex,1).select(MacToolUse::getMtnCode));
produceRunList = mesQcProduceRunService.list(Wrappers.<MesQcProduceRunEntity>lambdaQuery()
.in(MesQcProduceRunEntity::getMtnCode,mtnCodeList).ne(MesQcProduceRunEntity::getWorkSlot, "烘箱"));
if (produceRunList == null || produceRunList.size() == 0) {
List<String> mtnCodeList2=macToolUseService.listObjs(Wrappers.<MacToolUse>lambdaQuery()
.eq(MacToolUse::getWpId, wp.getId()).eq(MacToolUse::getMtuIndex,2).select(MacToolUse::getMtnCode));
produceRunList = mesQcProduceRunService.list(Wrappers.<MesQcProduceRunEntity>lambdaQuery()
.in(MesQcProduceRunEntity::getMtnCode,mtnCodeList2).ne(MesQcProduceRunEntity::getWorkSlot, "烘箱"));
}
if (!(produceRunList != null && produceRunList.size() > 0)) {
throw new ServiceException("未绑定飞跋和设备或未维护生产追溯信息!!!");
}
}
}else if (dsProcess.getProcessName().equals("玻璃封接清洗") || dsProcess.getProcessName().equals("玻璃封接退火") ||
dsProcess.getProcessName().equals("玻璃封接预氧化(箱式炉)") || dsProcess.getProcessName().equals("玻璃封接预氧化(链式炉)") ||
dsProcess.getProcessName().equals("玻璃封接(链式炉)") || dsProcess.getProcessName().equals("玻璃封接(真空炉)") ||
dsProcess.getProcessName().equals("玻璃封接灌胶") || dsProcess.getProcessName().equals("玻璃饼压制") ||
dsProcess.getProcessName().equals("玻璃饼排蜡玻化") || dsProcess.getProcessName().equals("玻璃饼振光") ||
dsProcess.getProcessName().equals("石墨模烘干") || dsProcess.getProcessName().equals("石墨模焙烧") ||
dsProcess.getProcessName().equals("真空炉灌胶") || dsProcess.getProcessName().equals("玻璃封接电镀去氧化皮") ||
dsProcess.getProcessName().equals("玻璃封接电化学抛光") || dsProcess.getProcessName().equals("玻璃封接湿喷砂") ||
dsProcess.getProcessName().equals("玻璃封接电镀") || dsProcess.getProcessName().equals("玻璃封接插针电镀") ||
dsProcess.getProcessName().equals("玻璃封接壳体电镀") || dsProcess.getProcessName().equals("玻璃封接电镀下挂") ||
dsProcess.getProcessName().equals("烧结浸保护剂")) {
mtu = macToolUseService.getOne(Wrappers.<MacToolUse>lambdaQuery().eq(MacToolUse::getWpId, wp.getId())
.isNotNull(MacToolUse::getBsRackSet).isNotNull(MacToolUse::getBsFeiBaSet).isNotNull(MacToolUse::getEquipmentCard));
if (mtu == null) {
// 验证是否维护了生产追溯信息
List<MesQcProduceRunEntity> qcProduceRunList = null;
List<String> mtnCodeList=macToolUseService.listObjs(Wrappers.<MacToolUse>lambdaQuery()
.eq(MacToolUse::getWpId, wp.getId()).select(MacToolUse::getMtnCode));
qcProduceRunList = mesQcProduceRunService.list(Wrappers.<MesQcProduceRunEntity>lambdaQuery()
.in(MesQcProduceRunEntity::getMtnCode,mtnCodeList));
if (!(qcProduceRunList != null && qcProduceRunList.size() > 0)) {
throw new ServiceException("product.prWorkPlan.not.bing");
}
}
}
//周新昊 20241114 验证手动维护设备使用记录的工序电子档案数据是否维护完备
Boolean aBoolean = true; //this.chkRfpDetail(wp);
if (!aBoolean) {
throw new ServiceException("生产记录未填写完整,不允许报工!!!!");
}
MakeRec mr= new MakeRec();
BeanUtils.copyProperties(makeRecDTO,MakeRec.class);
mr.setWpId(wp.getId());
mr.setWorker(makeRecDTO.getWorker());
mr.setMakeTime(new Date());
baseMapper.insertOrUpdate( mr);
if (mr.getScrapQty() > 0) {
wp.setScrapQty(wp.getScrapQty() + mr.getScrapQty());
WorkOrder wo= null;//workOrderService.getById(wp.getWoId());
wo.setMakeQty(wo.getMakeQty() - mr.getScrapQty());
}
wp.setWorkQty(wp.getWorkQty() + mr.getWorkQty());
if (wp.getQualifiedQty().equals(wp.getScrapQty() + wp.getWorkQty())) {
wp.setStatus(WorkPlan.STATUS_WORK_OK);
}
if ("热处理".equals(dsProcess.getProcessName())) {
wp.setPrintType((short) 1);
//workPlanService.saveOrUpdate(wp);
String code = macToolUseService.nextCode(2);
MacToolUse prMacToolUse = new MacToolUse();
prMacToolUse.setWpId(wp.getId());
prMacToolUse.setFinished(1);
prMacToolUse.setCreateTime(new Date());
prMacToolUse.setCreateMan(makeRecDTO.getWorker());
prMacToolUse.setMtnCode(code);
prMacToolUse.setMtuIndex(String.valueOf(0));
macToolUseService.save(prMacToolUse);
String deviceCode = prMacToolUse.getEquipmentCard() != null ? prMacToolUse.getMtnCode() : "";
log.info("修改设备绑定状态:设备编号:{},批次号:{},槽号:{},方法名:addMakeRec(),{}", deviceCode, prMacToolUse.getHangNum(), prMacToolUse.getMtnCode(), prMacToolUse.getFinished());
MesQcProduceRunEntity qcProduceRun = new MesQcProduceRunEntity();
qcProduceRun.setMtnCode(code);
qcProduceRun.setWorkSlot("热处理自检");
qcProduceRun.setInDate(new Date());
qcProduceRun.setDataOne(makeRecDTO.getResource());
qcProduceRun.setDataTwo(makeRecDTO.getNum());
qcProduceRun.setDataThree(makeRecDTO.getThickness());
qcProduceRun.setDataFour(makeRecDTO.getCode());
qcProduceRun.setDataFive(makeRecDTO.getInspectCode());
qcProduceRun.setDataSix(String.valueOf(makeRecDTO.getStatus()));
qcProduceRun.setDataSeven(makeRecDTO.getShape());
mesQcProduceRunService.save(qcProduceRun);
}
// 保存引用文件或版本号
WorkOrder prWorkOrder =null; //workOrderService.getById(wp.getWoId());
if (prWorkOrder != null && prWorkOrder.getId() != null) {
YieldOrder pjYieldOrder = yieldOrderService.getById(prWorkOrder.getYoId());
if (pjYieldOrder != null && pjYieldOrder.getId() != null) {
BsProcessSetEntity procedureSet = bsProcessSetService.getById(wp.getPpsId());
AuditFile dsAuditFile = null;
// 如果本序是涂色标或喷砂,直接查维护的数据
if ("涂色标".equals(procedureSet.getName()) || "喷砂".equals(procedureSet.getName())) {
dsAuditFile = auditFileService.getOne(Wrappers.<AuditFile>lambdaQuery()
.eq(AuditFile::getPpsId, procedureSet.getId()));
} else {
// 如果不是优先判断是否有生产标识
String prodIdent = pjYieldOrder.getProductIdent() ;
BsTeamSetEntity bsTeamSet = teamSetService.getOne(Wrappers.<BsTeamSetEntity>lambdaQuery()
.eq(BsTeamSetEntity::getId, wp.getMakeTeam()));
if (!"AH".equals(prodIdent)) {
prodIdent = null;
}
if (bsTeamSet != null && bsTeamSet.getId() != null) {
// BsCenterTeamEntity bsCenterTeam = bsCenterTeamService.getByTsId(bsTeamSet.getTsId());
DsPartEntity dsPart = partService.getOne(Wrappers.<DsPartEntity>lambdaQuery().eq(DsPartEntity::getPartCode, pjYieldOrder.getPartCode()));
String productApparea = null;
if (dsPart!=null && dsPart.getId()!=null){
productApparea = dsPart.getProductSeries() ;
}
// if (productApparea!=null){
// dsAuditFile = dsAuditFileDao.getDataByPpsIdAndApparea(procedureSet.getPpsId(), bsCenterTeam.getBsWorkCenter().getWcId(),productApparea);
// }
// if (bsCenterTeam != null && bsCenterTeam.getCtId() != null && dsAuditFile == null) {
// dsAuditFile = dsAuditFileDao.getDataByPpsIdAndPqName(procedureSet.getPpsId(), bsCenterTeam.getBsWorkCenter().getWcId(), prodIdent);
// }
}
}
if (dsAuditFile != null && dsAuditFile.getId() != null) {
wp.setPapers(dsAuditFile.getPapers());
wp.setReferenceFile(dsAuditFile.getReferenceFile());
//workPlanService.updateById(wp);
}
// 2025-07-23 线上迁移修改
MacToolUse macToolUse = macToolUseService.getOne(Wrappers.<MacToolUse>lambdaQuery()
.eq(MacToolUse::getWpId, wp.getId()));
if (macToolUse != null && macToolUse.getRfpId() != null && macToolUse.getFinished()!=1) {
macToolUse.setFinished(1);
String deviceCode = macToolUse.getEquipmentCard() != null ? macToolUse.getMtnCode() : "";
log.info("修改设备绑定状态:设备编号:{},批次号:{},槽号:{},方法名:addMakeRec(),{}", deviceCode, macToolUse.getHangNum(), macToolUse.getMtnCode(), macToolUse.getFinished());
macToolUseService.updateById(macToolUse);
}
}
}
}
@Override
public IPage<MesMakeRecVO> selectMesMakeRecPage(IPage<MesMakeRecVO> page, MesMakeRecVO mesMakeRec) {
return page.setRecords(baseMapper.selectMesMakeRecPage(page, mesMakeRec));
}
@Override
public List<WorkPlanLoadVO> loadNotReceived(String cardNo) {
List<Long> tsIds = relTeamSetUserService.
list(Wrappers.lambdaQuery(RelTeamSetUser.class)
.eq(RelTeamSetUser::getUserId, AuthUtil.getUserId()))
.stream().map(RelTeamSetUser::getUserId).collect(Collectors.toList());
WorkOrder wo = workOrderMapper.getWorkOrderByCardNo(cardNo, (short) 0);
List<WorkPlan> wpList= workPlanMapper.selectList(Wrappers.<WorkPlan>lambdaQuery()
.eq(WorkPlan::getWoId, wo.getId()).in(WorkPlan::getMakeTeam, tsIds));
List<WorkPlanLoadVO> wpLoadList = wpList.stream().map(wp -> {
WorkPlanLoadVO wpLoad = new WorkPlanLoadVO();
BeanUtils.copyProperties(wp, wpLoad);
return wpLoad;
}).collect(Collectors.toList());
return wpLoadList;
}
}

@ -12,10 +12,7 @@ import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.BladeUser;
import org.springblade.desk.basic.pojo.entity.RelTeamSetUser;
import org.springblade.desk.basic.service.IRelTeamSetUserService;
import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity;
import org.springblade.desk.dashboard.pojo.entity.BsTeamSetEntity;
import org.springblade.desk.dashboard.pojo.entity.DsProcessMeasuringToolEntity;
import org.springblade.desk.dashboard.pojo.entity.DsProcessProjectEntity;
import org.springblade.desk.dashboard.pojo.entity.*;
import org.springblade.desk.dashboard.service.*;
import org.springblade.desk.device.pojo.entity.FeiBaSetEntity;
import org.springblade.desk.device.pojo.entity.RackSetEntity;
@ -26,6 +23,7 @@ import org.springblade.desk.order.service.IYieldOrderService;
import org.springblade.desk.produce.mapper.WorkPlanMapper;
import org.springblade.desk.produce.pojo.entity.*;
import org.springblade.desk.produce.pojo.vo.LoadSubOrderVO;
import org.springblade.desk.produce.pojo.vo.PdaProRelevantVO;
import org.springblade.desk.produce.service.*;
import org.springblade.desk.quality.pojo.entity.InspectionTask;
import org.springblade.desk.quality.pojo.entity.WorkPlanItem;
@ -89,6 +87,8 @@ public class PdaLoadServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
private final IYieldOrderService yieldOrderService;
private final IDsPartService partService;
@Override
public WorkPlan loadBindData(BladeUser user, String cardNo) {
WorkPlan prWorkPlan = this.getCurrentWorkPlan(cardNo, user, false, false);
@ -145,6 +145,26 @@ public class PdaLoadServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
return jsonObj;
}
@Override
public PdaProRelevantVO loadProTestWorkPlan(String cardNo) {
WorkOrder prWorkOrder = this.checkPrWorkOrder(cardNo);
WorkPlan prWorkPlan = this.getOne(Wrappers.lambdaQuery(WorkPlan.class)
.eq(WorkPlan::getWoId, prWorkOrder.getId()));
DsPartEntity part = partService.getOne(Wrappers.lambdaQuery(DsPartEntity.class)
.eq(DsPartEntity::getPartCode, prWorkOrder.getPartCode()));
PdaProRelevantVO jsonObj =
PdaProRelevantVO.builder()
.cardNo(cardNo)
.woCode(prWorkOrder.getWoCode())
.batchNo(prWorkOrder.getBatchNo())
.partCode(prWorkOrder.getPartCode())
.partName(part.getPartName())
.frontOrders(prWorkPlan.getOrders())
.frontPpsName(part.getCraftWay())
.wpId(prWorkPlan.getId()).build();
return jsonObj;
}
private WorkPlan getCurrentWorkPlan(String cardNo, BladeUser user, boolean checkCurrentProcess, boolean checkAfterPlating) {
//获取并验证车间订单
WorkOrder prWorkOrder = this.checkPrWorkOrder(cardNo);

Loading…
Cancel
Save