Browse Source

2024/1/17 返工返修记录

master
zelian_wu 2 years ago
parent
commit
66c0b88183
  1. 27
      src/main/java/com/heai/modules/production/controller/DailyPlanController.java
  2. 38
      src/main/java/com/heai/modules/production/dao/ReworkRecordMapper.java
  3. 150
      src/main/java/com/heai/modules/production/entity/ReworkRecord.java
  4. 31
      src/main/java/com/heai/modules/production/entity/ReworkRecordData.java
  5. 28
      src/main/java/com/heai/modules/production/service/ReworkRecordService.java
  6. 86
      src/main/java/com/heai/modules/production/service/impl/ReworkRecordServiceImpl.java
  7. 77
      src/main/resources/mapper/production/ReworkRecordMapper.xml

27
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<ToolingHistData> 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<ReworkRecordData> 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("操作成功!");
}
}

38
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<ReworkRecord> {
/**
* 查询单位重量
* @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<ReworkRecordData> selectReworkRecord(ReworkRecordData reworkRecordData);
}

150
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;
}

31
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;
}

28
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<ReworkRecord> {
/**
* 开始返修
* @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<ReworkRecordData>
*/
List<ReworkRecordData> selectRework(ReworkRecordData reworkRecord);
}

86
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<ReworkRecordMapper,ReworkRecord> 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<ReworkRecord> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ReworkRecord::getSeqNo,seqNo).eq(ReworkRecord::getSite,site).ne(ReworkRecord::getReworkStatus,"已结束");
List<ReworkRecord> 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<ReworkRecordData> 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;
}
}

77
src/main/resources/mapper/production/ReworkRecordMapper.xml

@ -0,0 +1,77 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.heai.modules.production.dao.ReworkRecordMapper">
<select id="getUnitWeight" resultType="java.math.BigDecimal">
select dbo.Get_Part_NetWeight(#{site},#{partNo})
</select>
<select id="getPartCavity" resultType="java.math.BigDecimal">
select dbo.Get_Part_Cavity(#{site},#{partNo},#{orderNo})
</select>
<select id="selectReworkRecord" resultType="com.heai.modules.production.entity.ReworkRecordData">
select
rw.rework_no,
rw.site,
rw.seq_no,
rw.part_no,
dbo.Get_Part_DescSpec(rw.site,rw.part_no) as partDesc,
rw.work_center_no,
dbo.Get_WorkCenterDesc(rw.site,rw.work_center_no) as workCenterDesc,
rw.operator_id,
dbo.Get_OperatorDesc(rw.site,rw.operator_id) as operatorName,
rw.rework_start_date,
rw.rework_end_date,
rw.unit_weight,
rw.item_no,
dbo.Get_ItemDesc(rw.site,rw.order_no,rw.item_no) as itemDesc,
rw.required_qty,
rw.qualified_qty,
rw.missing_qty,
rw.qualified_weight_frame,
rw.missing_weight,
rw.die_hole_number,
rw.frame_weight,
rw.waste_edge_weight,
rw.theoretical_quantity,
rw.scrap_quantity,
rw.scrap_reason,
rw.accepted_quantity,
rw.cause_defect,
rw.readiness_time,
rw.production_time,
rw.remark,
rw.rework_status,
rw.create_time,
rw.create_by,
rw.order_no
from so_rework_record rw
<where>
<if test="site != null and site != ''">
and rw.site = #{site}
</if>
<if test="orderNo != null and orderNo != ''">
and rw.order_no like #{orderNo}
</if>
<if test="seqNo != null">
and rw.seq_no = #{seqNo}
</if>
<if test="workCenterNo != null and workCenterNo != ''">
and rw.work_center_no like #{workCenterNo}
</if>
<if test="partNo != null and partNo != ''">
and rw.part_no like #{partNo}
</if>
<if test="operatorId != null and operatorId != ''">
and rw.operator_id like #{operatorId}
</if>
<if test="partDesc != null and partDesc != ''">
and dbo.Get_Part_DescSpec(rw.site,rw.part_no) like #{partDesc}
</if>
<if test="operatorName != null and operatorName != ''">
and dbo.Get_OperatorDesc(rw.site,rw.operator_id) like #{operatorName}
</if>
</where>
</select>
</mapper>
Loading…
Cancel
Save