规程添加绑定功能
This commit is contained in:
@@ -7,6 +7,7 @@ import com.klp.common.core.page.TableDataInfo;
|
||||
import com.klp.domain.bo.WmsProcessCoilRecordBo;
|
||||
import com.klp.domain.vo.WmsProcessCoilRecordVo;
|
||||
import com.klp.service.IWmsProcessCoilRecordService;
|
||||
import lombok.Data;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
@@ -42,10 +43,28 @@ public class WmsProcessCoilRecordController extends BaseController {
|
||||
return R.ok(wmsProcessCoilRecordService.countByVersion(versionId));
|
||||
}
|
||||
|
||||
/** 新增或更新(幂等接口,前端每次点击钢卷行时调用) */
|
||||
/** 新增或更新(幂等接口) */
|
||||
@PostMapping("/upsert")
|
||||
public R<Void> upsert(@RequestBody WmsProcessCoilRecordBo bo) {
|
||||
wmsProcessCoilRecordService.upsert(bo);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量重绑:将所选钢卷从 oldVersionId 迁移到 newVersionId。
|
||||
* oldVersionId 可为空(此时只新增,不删除旧记录)。
|
||||
*/
|
||||
@PostMapping("/batchRebind")
|
||||
public R<Void> batchRebind(@RequestBody BatchRebindRequest req) {
|
||||
wmsProcessCoilRecordService.batchRebind(req.getCoilIds(), req.getNewVersionId(), req.getOldVersionId());
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@Data
|
||||
static class BatchRebindRequest {
|
||||
private List<String> coilIds;
|
||||
private Long newVersionId;
|
||||
/** 可为空;非空时先删除该版本下的旧记录 */
|
||||
private Long oldVersionId;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,4 +25,12 @@ public class WmsProcessCoilRecordVo {
|
||||
private Date createTime;
|
||||
|
||||
private String remark;
|
||||
|
||||
// ── 连接字段(来自 wms_process_spec_version / wms_process_spec) ──
|
||||
private String versionCode;
|
||||
private Integer isActive;
|
||||
private String versionStatus;
|
||||
private Long specId;
|
||||
private String specCode;
|
||||
private String specName;
|
||||
}
|
||||
|
||||
@@ -1,11 +1,23 @@
|
||||
package com.klp.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.klp.common.core.mapper.BaseMapperPlus;
|
||||
import com.klp.domain.WmsProcessCoilRecord;
|
||||
import com.klp.domain.bo.WmsProcessCoilRecordBo;
|
||||
import com.klp.domain.vo.WmsProcessCoilRecordVo;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 版本钢卷服役记录 Mapper
|
||||
*/
|
||||
public interface WmsProcessCoilRecordMapper extends BaseMapperPlus<WmsProcessCoilRecordMapper, WmsProcessCoilRecord, WmsProcessCoilRecordVo> {
|
||||
|
||||
/** 带版本/规程名称的分页列表(JOIN 查询) */
|
||||
IPage<WmsProcessCoilRecordVo> selectVoPageJoin(Page<WmsProcessCoilRecordVo> page, @Param("bo") WmsProcessCoilRecordBo bo);
|
||||
|
||||
/** 带版本/规程名称的不分页列表 */
|
||||
List<WmsProcessCoilRecordVo> selectVoListJoin(@Param("bo") WmsProcessCoilRecordBo bo);
|
||||
}
|
||||
|
||||
@@ -12,13 +12,20 @@ import java.util.List;
|
||||
*/
|
||||
public interface IWmsProcessCoilRecordService {
|
||||
|
||||
/** 分页列表,携带版本/规程名称(JOIN) */
|
||||
TableDataInfo<WmsProcessCoilRecordVo> queryPageList(WmsProcessCoilRecordBo bo, PageQuery pageQuery);
|
||||
|
||||
List<WmsProcessCoilRecordVo> queryList(WmsProcessCoilRecordBo bo);
|
||||
|
||||
/** 按版本统计服役钢卷总数(含异常数) */
|
||||
/** 按版本统计服役钢卷总数 */
|
||||
long countByVersion(Long versionId);
|
||||
|
||||
/** 新增或更新(按 version_id + coil_id 唯一键) */
|
||||
void upsert(WmsProcessCoilRecordBo bo);
|
||||
|
||||
/**
|
||||
* 批量重绑:将指定钢卷的服役记录从旧版本迁移到新版本。
|
||||
* oldVersionId 非空时先删除旧记录,再写入新版本记录。
|
||||
*/
|
||||
void batchRebind(List<String> coilIds, Long newVersionId, Long oldVersionId);
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ import com.klp.mapper.WmsProcessCoilRecordMapper;
|
||||
import com.klp.service.IWmsProcessCoilRecordService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -27,13 +28,13 @@ public class WmsProcessCoilRecordServiceImpl implements IWmsProcessCoilRecordSer
|
||||
|
||||
@Override
|
||||
public TableDataInfo<WmsProcessCoilRecordVo> queryPageList(WmsProcessCoilRecordBo bo, PageQuery pageQuery) {
|
||||
Page<WmsProcessCoilRecordVo> result = baseMapper.selectVoPage(pageQuery.build(), buildQueryWrapper(bo));
|
||||
return TableDataInfo.build(result);
|
||||
Page<WmsProcessCoilRecordVo> page = pageQuery.build();
|
||||
return TableDataInfo.build(baseMapper.selectVoPageJoin(page, bo));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<WmsProcessCoilRecordVo> queryList(WmsProcessCoilRecordBo bo) {
|
||||
return baseMapper.selectVoList(buildQueryWrapper(bo));
|
||||
return baseMapper.selectVoListJoin(bo);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -60,6 +61,24 @@ public class WmsProcessCoilRecordServiceImpl implements IWmsProcessCoilRecordSer
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void batchRebind(List<String> coilIds, Long newVersionId, Long oldVersionId) {
|
||||
for (String coilId : coilIds) {
|
||||
if (oldVersionId != null) {
|
||||
baseMapper.delete(Wrappers.<WmsProcessCoilRecord>lambdaQuery()
|
||||
.eq(WmsProcessCoilRecord::getVersionId, oldVersionId)
|
||||
.eq(WmsProcessCoilRecord::getCoilId, coilId));
|
||||
}
|
||||
WmsProcessCoilRecordBo bo = new WmsProcessCoilRecordBo();
|
||||
bo.setVersionId(newVersionId);
|
||||
bo.setCoilId(coilId);
|
||||
bo.setHasAnomaly(0);
|
||||
bo.setAnomalyCnt(0);
|
||||
upsert(bo);
|
||||
}
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<WmsProcessCoilRecord> buildQueryWrapper(WmsProcessCoilRecordBo bo) {
|
||||
LambdaQueryWrapper<WmsProcessCoilRecord> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(bo.getVersionId() != null, WmsProcessCoilRecord::getVersionId, bo.getVersionId());
|
||||
|
||||
@@ -18,4 +18,58 @@
|
||||
<result property="remark" column="remark"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap type="com.klp.domain.vo.WmsProcessCoilRecordVo" id="WmsProcessCoilRecordVoJoinResult">
|
||||
<result property="recordId" column="record_id"/>
|
||||
<result property="versionId" column="version_id"/>
|
||||
<result property="coilId" column="coil_id"/>
|
||||
<result property="enCoilId" column="en_coil_id"/>
|
||||
<result property="hasAnomaly" column="has_anomaly"/>
|
||||
<result property="anomalyCnt" column="anomaly_cnt"/>
|
||||
<result property="processTime" column="process_time"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
<result property="remark" column="remark"/>
|
||||
<result property="versionCode" column="version_code"/>
|
||||
<result property="isActive" column="is_active"/>
|
||||
<result property="versionStatus" column="version_status"/>
|
||||
<result property="specId" column="spec_id"/>
|
||||
<result property="specCode" column="spec_code"/>
|
||||
<result property="specName" column="spec_name"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="joinSpec">
|
||||
FROM wms_process_coil_record r
|
||||
LEFT JOIN wms_process_spec_version v ON r.version_id = v.version_id AND v.del_flag = 0
|
||||
LEFT JOIN wms_process_spec s ON v.spec_id = s.spec_id AND s.del_flag = 0
|
||||
WHERE r.del_flag = 0
|
||||
<if test="bo.versionId != null">
|
||||
AND r.version_id = #{bo.versionId}
|
||||
</if>
|
||||
<if test="bo.coilId != null and bo.coilId != ''">
|
||||
AND r.coil_id LIKE CONCAT('%', #{bo.coilId}, '%')
|
||||
</if>
|
||||
<if test="bo.enCoilId != null and bo.enCoilId != ''">
|
||||
AND r.en_coil_id LIKE CONCAT('%', #{bo.enCoilId}, '%')
|
||||
</if>
|
||||
<if test="bo.hasAnomaly != null">
|
||||
AND r.has_anomaly = #{bo.hasAnomaly}
|
||||
</if>
|
||||
ORDER BY r.process_time DESC
|
||||
</sql>
|
||||
|
||||
<select id="selectVoPageJoin" resultMap="WmsProcessCoilRecordVoJoinResult">
|
||||
SELECT r.record_id, r.version_id, r.coil_id, r.en_coil_id,
|
||||
r.has_anomaly, r.anomaly_cnt, r.process_time, r.create_time, r.remark,
|
||||
v.version_code, v.is_active, v.status AS version_status,
|
||||
s.spec_id, s.spec_code, s.spec_name
|
||||
<include refid="joinSpec"/>
|
||||
</select>
|
||||
|
||||
<select id="selectVoListJoin" resultMap="WmsProcessCoilRecordVoJoinResult">
|
||||
SELECT r.record_id, r.version_id, r.coil_id, r.en_coil_id,
|
||||
r.has_anomaly, r.anomaly_cnt, r.process_time, r.create_time, r.remark,
|
||||
v.version_code, v.is_active, v.status AS version_status,
|
||||
s.spec_id, s.spec_code, s.spec_name
|
||||
<include refid="joinSpec"/>
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
||||
Reference in New Issue
Block a user