From 66c0b88183228f18e7f5acf45bece80ecbe43a70 Mon Sep 17 00:00:00 2001 From: zelian_wu Date: Wed, 17 Jan 2024 17:33:24 +0800 Subject: [PATCH] =?UTF-8?q?2024/1/17=20=E8=BF=94=E5=B7=A5=E8=BF=94?= =?UTF-8?q?=E4=BF=AE=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DailyPlanController.java | 27 ++++ .../production/dao/ReworkRecordMapper.java | 38 +++++ .../production/entity/ReworkRecord.java | 150 ++++++++++++++++++ .../production/entity/ReworkRecordData.java | 31 ++++ .../service/ReworkRecordService.java | 28 ++++ .../service/impl/ReworkRecordServiceImpl.java | 86 ++++++++++ .../mapper/production/ReworkRecordMapper.xml | 77 +++++++++ 7 files changed, 437 insertions(+) create mode 100644 src/main/java/com/heai/modules/production/dao/ReworkRecordMapper.java create mode 100644 src/main/java/com/heai/modules/production/entity/ReworkRecord.java create mode 100644 src/main/java/com/heai/modules/production/entity/ReworkRecordData.java create mode 100644 src/main/java/com/heai/modules/production/service/ReworkRecordService.java create mode 100644 src/main/java/com/heai/modules/production/service/impl/ReworkRecordServiceImpl.java create mode 100644 src/main/resources/mapper/production/ReworkRecordMapper.xml diff --git a/src/main/java/com/heai/modules/production/controller/DailyPlanController.java b/src/main/java/com/heai/modules/production/controller/DailyPlanController.java index 8dd15bf..946f4aa 100644 --- a/src/main/java/com/heai/modules/production/controller/DailyPlanController.java +++ b/src/main/java/com/heai/modules/production/controller/DailyPlanController.java @@ -6,6 +6,7 @@ import com.heai.modules.app.entity.SoBomData; import com.heai.modules.board.entity.ViewKanbanSoHunlianPlanData; import com.heai.modules.production.entity.*; import com.heai.modules.production.service.DailyPlanService; +import com.heai.modules.production.service.ReworkRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.expression.spel.ast.Operator; import org.springframework.web.bind.annotation.PostMapping; @@ -16,6 +17,7 @@ import org.springframework.web.bind.annotation.RestController; import java.math.BigDecimal; import java.util.List; import java.util.Map; +import java.util.Objects; /** * @@ -29,6 +31,9 @@ public class DailyPlanController { @Autowired private DailyPlanService dailyPlanService; + @Autowired + private ReworkRecordService reworkRecordService; + /** * @Description 获取shoporder数据 * @Title getShopOrderData @@ -952,4 +957,26 @@ public class DailyPlanController { List toolingHistDataList = dailyPlanService.selectToolHist(toolingHistData); return R.ok().put("rows",toolingHistDataList); } + + @PostMapping("/startRework") + public R startRework(@RequestBody ReworkRecord reworkRecord){ + reworkRecordService.startRework(reworkRecord.getSeqNo(),reworkRecord.getSite(),reworkRecord.getCreateTime(),reworkRecord.getCreateBy()); + return R.ok("操作成功"); + } + + @PostMapping("/selectRework") + public R selectRework(@RequestBody ReworkRecordData reworkRecord){ + List list = reworkRecordService.selectRework(reworkRecord); + return R.ok().put("rows",list); + } + + @PostMapping("/saveRework") + public R saveRework(@RequestBody ReworkRecord reworkRecord){ + if (Objects.isNull(reworkRecord)){ + throw new RuntimeException("未接收到参数"); + } + reworkRecord.setReworkStatus("已结束"); + reworkRecordService.updateById(reworkRecord); + return R.ok("操作成功!"); + } } diff --git a/src/main/java/com/heai/modules/production/dao/ReworkRecordMapper.java b/src/main/java/com/heai/modules/production/dao/ReworkRecordMapper.java new file mode 100644 index 0000000..00c1035 --- /dev/null +++ b/src/main/java/com/heai/modules/production/dao/ReworkRecordMapper.java @@ -0,0 +1,38 @@ +package com.heai.modules.production.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.heai.modules.production.entity.ReworkRecord; +import com.heai.modules.production.entity.ReworkRecordData; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.math.BigDecimal; +import java.util.List; + +@Mapper +public interface ReworkRecordMapper extends BaseMapper { + + /** + * 查询单位重量 + * @param site 工厂编号 + * @param partNo 产品编码 + * @return + */ + BigDecimal getUnitWeight(@Param("site") String site, @Param("partNo") String partNo); + + /** + * 查询 模具孔数 + * @param site + * @param partNo + * @param orderNo + * @return + */ + BigDecimal getPartCavity(@Param("site") String site, @Param("partNo") String partNo,@Param("orderNo")String orderNo); + + /** + * 查询 返工返修记录 + * @param reworkRecordData + * @return + */ + List selectReworkRecord(ReworkRecordData reworkRecordData); +} diff --git a/src/main/java/com/heai/modules/production/entity/ReworkRecord.java b/src/main/java/com/heai/modules/production/entity/ReworkRecord.java new file mode 100644 index 0000000..bb5b7c0 --- /dev/null +++ b/src/main/java/com/heai/modules/production/entity/ReworkRecord.java @@ -0,0 +1,150 @@ +package com.heai.modules.production.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 返工记录表(so_rework_record)表实体类 + */ +@TableName("so_rework_record") +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ReworkRecord { + /** + * 返工主键编号 + */ + @TableId(type = IdType.AUTO) + private Long reworkNo; + /** + * 工厂编码 + */ + private String site; + /** + * 派工单号 + */ + private Integer seqNo; + /** + * 产品编码 + */ + private String partNo; + /** + * 加工中心编码 + */ + private String workCenterNo; + /** + * 操作员编码 + */ + private String operatorId; + /** + * 返修开始日期 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private Date reworkStartDate; + /** + * 返修结束时间 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private Date reworkEndDate; + /** + * 单位重量 + */ + private BigDecimal unitWeight; + /** + * 工序号 + */ + private BigDecimal itemNo; + /** + * 派工单数量 + */ + private BigDecimal requiredQty; + /** + * 合格数量 + */ + private BigDecimal qualifiedQty; + /** + * 缺失数量 + */ + private BigDecimal missingQty; + /** + * 带框合格重量(KG) + */ + private BigDecimal qualifiedWeightFrame; + /** + * 缺失重量(KG) + */ + private BigDecimal missingWeight; + /** + * 模具孔数 + */ + private BigDecimal dieHoleNumber; + /** + * 框重(KG) + */ + private BigDecimal frameWeight; + /** + * 废边重量(G) + */ + private BigDecimal wasteEdgeWeight; + /** + * 理论数量 + */ + private BigDecimal theoreticalQuantity; + /** + * 报废数量 + */ + private BigDecimal scrapQuantity; + /** + * 报废原因 + */ + private String scrapReason; + /** + * 接受数量 + */ + private BigDecimal acceptedQuantity; + /** + * 瑕疵原因 + */ + private String causeDefect; + /** + * 准备时间 + */ + private BigDecimal readinessTime; + /** + * 制造时间 + */ + private BigDecimal productionTime; + /** + * 备注 + */ + private String remark; + /** + * 返工状态(未开始,返工中,已结束) + */ + private String reworkStatus; + /** + * 创建时间 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + /** + * 创建者 + */ + private String createBy; + + private String orderNo; + +} + diff --git a/src/main/java/com/heai/modules/production/entity/ReworkRecordData.java b/src/main/java/com/heai/modules/production/entity/ReworkRecordData.java new file mode 100644 index 0000000..089e49a --- /dev/null +++ b/src/main/java/com/heai/modules/production/entity/ReworkRecordData.java @@ -0,0 +1,31 @@ +package com.heai.modules.production.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 返工记录表(so_rework_record)表实体类 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class ReworkRecordData extends ReworkRecord{ + + private String partDesc; + + private String operatorName; + + private String workCenterDesc; + + private String itemDesc; +} + diff --git a/src/main/java/com/heai/modules/production/service/ReworkRecordService.java b/src/main/java/com/heai/modules/production/service/ReworkRecordService.java new file mode 100644 index 0000000..d623994 --- /dev/null +++ b/src/main/java/com/heai/modules/production/service/ReworkRecordService.java @@ -0,0 +1,28 @@ +package com.heai.modules.production.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.heai.modules.production.entity.ReworkRecord; +import com.heai.modules.production.entity.ReworkRecordData; + +import java.util.Date; +import java.util.List; + +public interface ReworkRecordService extends IService { + /** + * 开始返修 + * @param seqNo 派工单 + * @param site 工厂编号 + * @author zelian_wu + * date 2024/1/17 + */ + void startRework(Integer seqNo, String site, Date createTime, String createBy); + + /** + * 查询返工返修单 + * @param reworkRecord 查询条件对象 + * @author zelian_wu + * date 2024/1/17 + * @return List + */ + List selectRework(ReworkRecordData reworkRecord); +} diff --git a/src/main/java/com/heai/modules/production/service/impl/ReworkRecordServiceImpl.java b/src/main/java/com/heai/modules/production/service/impl/ReworkRecordServiceImpl.java new file mode 100644 index 0000000..b7c21a7 --- /dev/null +++ b/src/main/java/com/heai/modules/production/service/impl/ReworkRecordServiceImpl.java @@ -0,0 +1,86 @@ +package com.heai.modules.production.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.heai.modules.production.dao.DailyPlanMapper; +import com.heai.modules.production.dao.ReworkRecordMapper; +import com.heai.modules.production.entity.ReworkRecord; +import com.heai.modules.production.entity.ReworkRecordData; +import com.heai.modules.production.entity.SOScheduledRoutingOutData; +import com.heai.modules.production.service.ReworkRecordService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +@Service +public class ReworkRecordServiceImpl extends ServiceImpl implements ReworkRecordService { + @Autowired + private DailyPlanMapper dailyPlanMapper; + @Override + @Transactional + public void startRework(Integer seqNo, String site, Date createTime,String createBy) { + if (Objects.isNull(seqNo)){ + throw new RuntimeException("输入派工单号为空"); + } + if (!StringUtils.hasText(site)){ + throw new RuntimeException("工厂编号为空"); + } + SOScheduledRoutingOutData routing = verifySeqNo(seqNo, site); + // 校验是否已存在返工返修记录 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(ReworkRecord::getSeqNo,seqNo).eq(ReworkRecord::getSite,site).ne(ReworkRecord::getReworkStatus,"已结束"); + List list = list(wrapper); + if (null != list && !list.isEmpty()){ + throw new RuntimeException("当前存在未完成的返工返修记录"); + } + BigDecimal unitWeight = baseMapper.getUnitWeight(routing.getSite(), routing.getPartNo()); + if (!Objects.isNull(unitWeight) && unitWeight.compareTo(BigDecimal.ZERO) != 0){ + unitWeight = unitWeight.divide(new BigDecimal("1000"),6, RoundingMode.HALF_UP); + } + // 新增返工返修单 (单位重量) + ReworkRecord reworkRecord = new ReworkRecord(null, routing.getSite(), routing.getSeqNo(), routing.getPartNo(), routing.getsWorkCenterNo(), + null, null, null,unitWeight, BigDecimal.valueOf(routing.getItemNo()), + routing.getQtyRequired(), new BigDecimal("0"), new BigDecimal("0"), new BigDecimal("0"), + new BigDecimal("0"), new BigDecimal("0"), new BigDecimal("0"), new BigDecimal("0"), new BigDecimal("0"), + new BigDecimal("0"), "", new BigDecimal("0"), "", new BigDecimal("0"), + new BigDecimal("0"), "", "返工中", createTime, createBy,routing.getOrderNo()); + save(reworkRecord); + } + + @Override + public List selectRework(ReworkRecordData reworkRecord) { + return baseMapper.selectReworkRecord(reworkRecord); + } + + /** + * 校验派工单信息 + * @param seqNo + * @param site + * @return + */ + public SOScheduledRoutingOutData verifySeqNo(Integer seqNo,String site){ + // 查询 派工单 + SOScheduledRoutingOutData scheduledRouting = new SOScheduledRoutingOutData(); + scheduledRouting.setSeqNo(seqNo); + scheduledRouting.setSite(site); + SOScheduledRoutingOutData routing = dailyPlanMapper.searchSeqNo(scheduledRouting); + // 派工单类型 + if (Objects.isNull(routing)){ + throw new RuntimeException("派工单号不存在"); + } + if ("日计划派工单".equals(routing.getScheduleType())){ + throw new RuntimeException("硫化派工单不能返工返修"); + } + if (Objects.isNull(routing.getQtyReported()) || routing.getQtyReported().compareTo(new BigDecimal("0")) < 1){ + throw new RuntimeException("该派工单未报工"); + } + return routing; + } +} diff --git a/src/main/resources/mapper/production/ReworkRecordMapper.xml b/src/main/resources/mapper/production/ReworkRecordMapper.xml new file mode 100644 index 0000000..0d50e84 --- /dev/null +++ b/src/main/resources/mapper/production/ReworkRecordMapper.xml @@ -0,0 +1,77 @@ + + + + + + + + + + \ No newline at end of file