Browse Source

2026-07-23

MRB异常单
master
fengyuan_yang 2 weeks ago
parent
commit
c6764c515e
  1. 4
      src/main/java/com/gaotao/modules/schedule/controller/ScheduleController.java
  2. 81
      src/main/java/com/gaotao/modules/schedule/entity/ScheduleMrbExceptionDetailEntity.java
  3. 13
      src/main/java/com/gaotao/modules/schedule/mapper/ScheduleMapper.java
  4. 32
      src/main/java/com/gaotao/modules/schedule/mapper/ScheduleMrbExceptionDetailMapper.java
  5. 6
      src/main/java/com/gaotao/modules/schedule/service/ScheduleService.java
  6. 133
      src/main/java/com/gaotao/modules/schedule/service/impl/ScheduleServiceImpl.java
  7. 28
      src/main/resources/mapper/schedule/ScheduleMapper.xml
  8. 99
      src/main/resources/mapper/schedule/ScheduleMrbExceptionDetailMapper.xml

4
src/main/java/com/gaotao/modules/schedule/controller/ScheduleController.java

@ -243,7 +243,7 @@ public class ScheduleController extends AbstractController {
}
/**
* 更新派工单MRB信息
* 保存MRB异常单明细工作台列表/代办审核单条
* @param inData
* @return com.gaotao.common.utils.R
**/
@ -256,7 +256,7 @@ public class ScheduleController extends AbstractController {
}
/**
* 查询派工单MRB信息
* 查询MRB异常单明细
* @param inData
* @return com.gaotao.common.utils.R
**/

81
src/main/java/com/gaotao/modules/schedule/entity/ScheduleMrbExceptionDetailEntity.java

@ -0,0 +1,81 @@
package com.gaotao.modules.schedule.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* MRB异常单明细
*/
@Data
@TableName("schedule_mrb_exception_detail")
public class ScheduleMrbExceptionDetailEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 自增ID
*/
private Long id;
/**
* 工厂
*/
private String site;
/**
* 工单号
*/
private String orderNo;
/**
* 派工单号
*/
private String seqNo;
/**
* 待办单号过站采集场景为空字符串
*/
private String todoInfoCode;
/**
* 卷号
*/
private String rollNo;
/**
* MRB异常单号
*/
private String mrbNo;
/**
* 制程异常单号
*/
private String processExceptionNo;
/**
* 备注
*/
private String remark;
/**
* 创建时间
*/
private Date createdTime;
/**
* 创建人
*/
private String createdBy;
/**
* 更新时间
*/
private Date updateTime;
/**
* 更新人
*/
private String updateBy;
}

13
src/main/java/com/gaotao/modules/schedule/mapper/ScheduleMapper.java

@ -129,19 +129,6 @@ public interface ScheduleMapper {
**/
void updateOperatorTime(Map<String, Object> inData);
/**
* 更新派工单MRB信息
* @param inData
*/
void updateScheduleMrbInfo(Map<String, Object> inData);
/**
* 查询派工单MRB信息
* @param inData
* @return Map<String, Object>
*/
Map<String, Object> getScheduleMrbInfo(Map<String, Object> inData);
/**
* 只更新操作员上岗时间
* @param inData

32
src/main/java/com/gaotao/modules/schedule/mapper/ScheduleMrbExceptionDetailMapper.java

@ -0,0 +1,32 @@
package com.gaotao.modules.schedule.mapper;
import com.gaotao.modules.schedule.entity.ScheduleMrbExceptionDetailEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
@Mapper
public interface ScheduleMrbExceptionDetailMapper {
int deleteByLinkKeys(@Param("site") String site,
@Param("orderNo") String orderNo,
@Param("seqNo") String seqNo,
@Param("todoInfoCode") String todoInfoCode);
int deleteByOrderSeq(@Param("site") String site,
@Param("orderNo") String orderNo,
@Param("seqNo") String seqNo);
int batchInsert(@Param("list") List<ScheduleMrbExceptionDetailEntity> list);
List<Map<String, Object>> getDetailList(@Param("site") String site,
@Param("orderNo") String orderNo,
@Param("seqNo") String seqNo,
@Param("todoInfoCode") String todoInfoCode);
List<Map<String, Object>> getDetailListByOrderSeq(@Param("site") String site,
@Param("orderNo") String orderNo,
@Param("seqNo") String seqNo);
}

6
src/main/java/com/gaotao/modules/schedule/service/ScheduleService.java

@ -142,13 +142,13 @@ public interface ScheduleService {
void batchUpdateOperatorTime(Map<String, Object> inData);
/**
* 更新派工单MRB信息
* @param inData
* 保存MRB异常单明细工作台列表/代办审核单条
* @param inData 请求参数site/orderNo/seqNo/infoCode/detailList
**/
void updateScheduleMrbInfo(Map<String, Object> inData);
/**
* 查询派工单MRB信息
* 查询MRB异常单明细
* @param inData
* @return Map<String, Object>
**/

133
src/main/java/com/gaotao/modules/schedule/service/impl/ScheduleServiceImpl.java

@ -15,10 +15,12 @@ import com.gaotao.modules.schedule.data.dto.ScheduleDateShifDto;
import com.gaotao.modules.schedule.data.dto.SfdcNewsfdcDto;
import com.gaotao.modules.schedule.data.dto.ShopOrderRollDto;
import com.gaotao.modules.schedule.data.dto.WorkbenchPostinspection;
import com.gaotao.modules.schedule.entity.ScheduleMrbExceptionDetailEntity;
import com.gaotao.modules.schedule.entity.ProductionReportData;
import com.gaotao.modules.schedule.entity.ScheduleTodoMessageEntity;
import com.gaotao.modules.schedule.entity.ShiftChangeProductionReportEntity;
import com.gaotao.modules.schedule.mapper.ProcedureMapper;
import com.gaotao.modules.schedule.mapper.ScheduleMrbExceptionDetailMapper;
import com.gaotao.modules.schedule.mapper.ScheduleMapper;
import com.gaotao.modules.schedule.mapper.ScheduleTodoMessageMapper;
import com.gaotao.modules.schedule.mapper.ShiftChangeProductionReportMapper;
@ -86,6 +88,8 @@ public class ScheduleServiceImpl implements ScheduleService {
@Autowired
private ScheduleTodoMessageMapper scheduleTodoMessageMapper;
@Autowired
private ScheduleMrbExceptionDetailMapper scheduleMrbExceptionDetailMapper;
@Autowired
private TransNoControlMapper transNoControlMapper;
@Autowired
private SysUserRoleService sysUserRoleService;
@ -250,12 +254,137 @@ public class ScheduleServiceImpl implements ScheduleService {
@Override
@Transactional(rollbackFor = Exception.class)
public void updateScheduleMrbInfo(Map<String, Object> inData) {
scheduleMapper.updateScheduleMrbInfo(inData);
String site = trimToEmpty(inData == null ? null : inData.get("site"));
String orderNo = trimToEmpty(inData == null ? null : inData.get("orderNo"));
String seqNo = trimToEmpty(inData == null ? null : inData.get("seqNo"));
if (!StringUtils.hasText(site) || !StringUtils.hasText(orderNo) || !StringUtils.hasText(seqNo)) {
throw new XJException("MRB异常单参数不完整");
}
String todoInfoCode = normalizeTodoInfoCode(inData == null ? null : inData.get("infoCode"));
boolean todoAuditContext = StringUtils.hasText(todoInfoCode);
List<Map<String, Object>> detailRows = extractMrbDetailRows(inData);
if (CollectionUtils.isEmpty(detailRows)) {
if (todoAuditContext) {
throw new XJException("请至少维护一条MRB异常单信息");
}
scheduleMrbExceptionDetailMapper.deleteByOrderSeq(site, orderNo, seqNo);
return;
}
if (todoAuditContext && detailRows.size() > 1) {
throw new XJException("待办审核仅允许录入一条MRB异常单信息");
}
List<ScheduleMrbExceptionDetailEntity> saveList = new ArrayList<>();
String createdBy = resolveTodoOperator(inData);
for (int i = 0; i < detailRows.size(); i++) {
Map<String, Object> row = detailRows.get(i);
String rowTag = "第" + (i + 1) + "行";
String rollNo = truncate(trimToEmpty(row.get("rollNo")), 100);
String mrbNo = truncate(trimToEmpty(row.get("mrb")), 100);
String processExceptionNo = truncate(trimToEmpty(row.get("mrbInspectionReport")), 100);
if (!StringUtils.hasText(processExceptionNo)) {
processExceptionNo = truncate(trimToEmpty(row.get("processExceptionNo")), 100);
}
if (!StringUtils.hasText(rollNo)) {
throw new XJException(rowTag + "卷号不能为空");
}
if (!StringUtils.hasText(mrbNo)) {
throw new XJException(rowTag + "MRB不能为空");
}
if (!StringUtils.hasText(processExceptionNo)) {
throw new XJException(rowTag + "制程异常单不能为空");
}
ScheduleMrbExceptionDetailEntity entity = new ScheduleMrbExceptionDetailEntity();
entity.setSite(site);
entity.setOrderNo(orderNo);
entity.setSeqNo(seqNo);
String rowInfoCode = todoAuditContext ? todoInfoCode : normalizeTodoInfoCode(row.get("infoCode"));
entity.setTodoInfoCode(rowInfoCode);
entity.setRollNo(rollNo);
entity.setMrbNo(mrbNo);
entity.setProcessExceptionNo(processExceptionNo);
String remark = truncate(trimToEmpty(row.get("mrbRemark")), 500);
entity.setRemark(StringUtils.hasText(remark) ? remark : null);
entity.setCreatedBy(createdBy);
entity.setUpdateBy(createdBy);
saveList.add(entity);
}
if (todoAuditContext) {
scheduleMrbExceptionDetailMapper.deleteByLinkKeys(site, orderNo, seqNo, todoInfoCode);
} else {
scheduleMrbExceptionDetailMapper.deleteByOrderSeq(site, orderNo, seqNo);
}
scheduleMrbExceptionDetailMapper.batchInsert(saveList);
}
@Override
public Map<String, Object> getScheduleMrbInfo(Map<String, Object> inData) {
return scheduleMapper.getScheduleMrbInfo(inData);
String site = trimToEmpty(inData == null ? null : inData.get("site"));
String orderNo = trimToEmpty(inData == null ? null : inData.get("orderNo"));
String seqNo = trimToEmpty(inData == null ? null : inData.get("seqNo"));
if (!StringUtils.hasText(site) || !StringUtils.hasText(orderNo) || !StringUtils.hasText(seqNo)) {
return new HashMap<>();
}
String todoInfoCode = normalizeTodoInfoCode(inData == null ? null : inData.get("infoCode"));
List<Map<String, Object>> detailList;
if (StringUtils.hasText(todoInfoCode)) {
detailList = scheduleMrbExceptionDetailMapper.getDetailList(site, orderNo, seqNo, todoInfoCode);
} else {
detailList = scheduleMrbExceptionDetailMapper.getDetailListByOrderSeq(site, orderNo, seqNo);
}
Map<String, Object> result = new HashMap<>();
result.put("detailList", detailList);
if (!CollectionUtils.isEmpty(detailList)) {
Map<String, Object> first = detailList.get(0);
result.put("mrb", first.get("mrb"));
result.put("mrbInspectionReport", first.get("mrbInspectionReport"));
result.put("mrbRemark", first.get("mrbRemark"));
}
return result;
}
private String normalizeTodoInfoCode(Object value) {
String infoCode = trimToEmpty(value);
return StringUtils.hasText(infoCode) ? truncate(infoCode, 50) : "";
}
@SuppressWarnings("unchecked")
private List<Map<String, Object>> extractMrbDetailRows(Map<String, Object> inData) {
List<Map<String, Object>> result = new ArrayList<>();
if (inData == null || inData.isEmpty()) {
return result;
}
Object detailListObj = inData.get("detailList");
if (detailListObj instanceof List) {
List<?> detailList = (List<?>) detailListObj;
for (Object item : detailList) {
if (item instanceof Map) {
result.add((Map<String, Object>) item);
}
}
}
if (!CollectionUtils.isEmpty(result)) {
return result;
}
// 兼容旧请求体单条字段转换为一行明细
String mrb = trimToEmpty(inData.get("mrb"));
String mrbInspectionReport = trimToEmpty(inData.get("mrbInspectionReport"));
String mrbRemark = trimToEmpty(inData.get("mrbRemark"));
if (StringUtils.hasText(mrb) || StringUtils.hasText(mrbInspectionReport) || StringUtils.hasText(mrbRemark)) {
Map<String, Object> oneRow = new HashMap<>();
oneRow.put("rollNo", trimToEmpty(inData.get("rollNo")));
oneRow.put("mrb", mrb);
oneRow.put("mrbInspectionReport", mrbInspectionReport);
oneRow.put("mrbRemark", mrbRemark);
result.add(oneRow);
}
return result;
}
@Override

28
src/main/resources/mapper/schedule/ScheduleMapper.xml

@ -554,34 +554,6 @@
</where>
</update>
<!--更新派工单MRB信息-->
<update id="updateScheduleMrbInfo" parameterType="java.util.Map">
UPDATE SOScheduledRouting
SET
mrb = #{mrb},
mrb_inspection_report = #{mrbInspectionReport},
mrb_remark = #{mrbRemark}
WHERE
Site = #{site}
AND OrderNo = #{orderNo}
AND ItemNo = #{itemNo}
AND SeqNo = #{seqNo}
</update>
<!--查询派工单MRB信息-->
<select id="getScheduleMrbInfo" parameterType="java.util.Map" resultType="java.util.Map">
SELECT
mrb,
mrb_inspection_report AS mrbInspectionReport,
mrb_remark AS mrbRemark
FROM SOScheduledRouting
WHERE
Site = #{site}
AND OrderNo = #{orderNo}
AND ItemNo = #{itemNo}
AND SeqNo = #{seqNo}
</select>
<!--只更新操作员上岗时间-->
<update id="updateOnDutyTime" parameterType="java.util.Map">
UPDATE sfdc_operator_list

99
src/main/resources/mapper/schedule/ScheduleMrbExceptionDetailMapper.xml

@ -0,0 +1,99 @@
<?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="com.gaotao.modules.schedule.mapper.ScheduleMrbExceptionDetailMapper">
<delete id="deleteByLinkKeys">
DELETE FROM schedule_mrb_exception_detail
WHERE site = #{site}
AND order_no = #{orderNo}
AND seq_no = #{seqNo}
AND todo_info_code = #{todoInfoCode}
</delete>
<delete id="deleteByOrderSeq">
DELETE FROM schedule_mrb_exception_detail
WHERE site = #{site}
AND order_no = #{orderNo}
AND seq_no = #{seqNo}
</delete>
<insert id="batchInsert">
INSERT INTO schedule_mrb_exception_detail (
site,
order_no,
seq_no,
todo_info_code,
roll_no,
mrb_no,
process_exception_no,
remark,
created_time,
created_by,
update_time,
update_by
) VALUES
<foreach collection="list" item="item" separator=",">
(
#{item.site},
#{item.orderNo},
#{item.seqNo},
#{item.todoInfoCode},
#{item.rollNo},
#{item.mrbNo},
#{item.processExceptionNo},
#{item.remark,jdbcType=VARCHAR},
GETDATE(),
#{item.createdBy,jdbcType=VARCHAR},
GETDATE(),
#{item.updateBy,jdbcType=VARCHAR}
)
</foreach>
</insert>
<select id="getDetailList" resultType="java.util.Map">
SELECT
id AS id,
site AS site,
order_no AS orderNo,
seq_no AS seqNo,
todo_info_code AS infoCode,
roll_no AS rollNo,
mrb_no AS mrb,
process_exception_no AS mrbInspectionReport,
process_exception_no AS processExceptionNo,
remark AS mrbRemark,
created_time AS createdTime,
created_by AS createdBy,
update_time AS updateTime,
update_by AS updateBy
FROM schedule_mrb_exception_detail
WHERE site = #{site}
AND order_no = #{orderNo}
AND seq_no = #{seqNo}
AND todo_info_code = #{todoInfoCode}
ORDER BY id ASC
</select>
<select id="getDetailListByOrderSeq" resultType="java.util.Map">
SELECT
id AS id,
site AS site,
order_no AS orderNo,
seq_no AS seqNo,
todo_info_code AS infoCode,
roll_no AS rollNo,
mrb_no AS mrb,
process_exception_no AS mrbInspectionReport,
process_exception_no AS processExceptionNo,
remark AS mrbRemark,
created_time AS createdTime,
created_by AS createdBy,
update_time AS updateTime,
update_by AS updateBy
FROM schedule_mrb_exception_detail
WHERE site = #{site}
AND order_no = #{orderNo}
AND seq_no = #{seqNo}
ORDER BY id ASC
</select>
</mapper>
Loading…
Cancel
Save