7 changed files with 437 additions and 0 deletions
-
27src/main/java/com/heai/modules/production/controller/DailyPlanController.java
-
38src/main/java/com/heai/modules/production/dao/ReworkRecordMapper.java
-
150src/main/java/com/heai/modules/production/entity/ReworkRecord.java
-
31src/main/java/com/heai/modules/production/entity/ReworkRecordData.java
-
28src/main/java/com/heai/modules/production/service/ReworkRecordService.java
-
86src/main/java/com/heai/modules/production/service/impl/ReworkRecordServiceImpl.java
-
77src/main/resources/mapper/production/ReworkRecordMapper.xml
@ -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); |
|||
} |
|||
@ -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; |
|||
|
|||
} |
|||
|
|||
@ -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; |
|||
} |
|||
|
|||
@ -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); |
|||
} |
|||
@ -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; |
|||
} |
|||
} |
|||
@ -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> |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue