Browse Source

更新

master
常熟吴彦祖 6 months ago
parent
commit
30e72201a9
  1. 11
      src/main/java/com/gaotao/modules/automatedWarehouse/mapper/WcsIntegrationMapper.java
  2. 37
      src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/WcsIntegrationServiceImpl.java
  3. 3
      src/main/java/com/gaotao/modules/warehouse/entity/Pallet.java
  4. 49
      src/main/resources/mapper/automatedWarehouse/WcsIntegrationMapper.xml

11
src/main/java/com/gaotao/modules/automatedWarehouse/mapper/WcsIntegrationMapper.java

@ -89,4 +89,15 @@ public interface WcsIntegrationMapper {
*/
void deletePalletDetail(@Param("site") String site, @Param("palletId") String palletId,
@Param("serialNo") String serialNo);
/**
* 更新栈板调用状态 - AI制作
*/
void updatePalletCallingFlag(@Param("site") String site, @Param("palletId") String palletId,
@Param("callingFlag") String callingFlag, @Param("updatedBy") String updatedBy);
/**
* 检查栈板是否正在被调用 - AI制作
*/
String checkPalletCallingFlag(@Param("site") String site, @Param("palletId") String palletId);
}

37
src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/WcsIntegrationServiceImpl.java

@ -45,12 +45,18 @@ public class WcsIntegrationServiceImpl implements WcsIntegrationService {
Date currentTime = new Date();
//查询下这些栈板有没有不是结束 取消 失败状态的运输单
//查询下这些栈板有没有不是结束 取消 失败状态的运输单以及是否正在被调用
for (int i = 0; i < data.size(); i++) {
List<WmsTransportTask> checkPalletTask = wcsIntegrationMapper.checkPalletTask(data.get(i).getSite(),data.get(i).getPalletId());
if(checkPalletTask != null && !checkPalletTask.isEmpty()){
throw new RuntimeException(checkPalletTask.getFirst().getPalletId()+ "栈板已有未完成的运输任务,请选择其他栈板");
}
// 再次检查栈板是否已经被调用双重保险
String callingFlag = wcsIntegrationMapper.checkPalletCallingFlag(data.get(i).getSite(), data.get(i).getPalletId());
if ("Y".equals(callingFlag)) {
throw new RuntimeException(data.get(i).getPalletId() + "栈板正在被调用中,请选择其他栈板");
}
}
// 生成任务编号
TransNoControl transData = transNoService.getTransNo(data.getFirst().getSite(), "WTT", 10);
@ -92,6 +98,11 @@ public class WcsIntegrationServiceImpl implements WcsIntegrationService {
// 批量插入运输任务
wcsIntegrationMapper.batchSaveTransportTask(saveList);
// 更新栈板调用状态为Y
for (WmsLabelAndPalletData item : data) {
wcsIntegrationMapper.updatePalletCallingFlag(item.getSite(), item.getPalletId(), "Y", username);
}
// TODO: 这里可以调用WCS接口通知立库执行运输任务
wcsApiService.pushAgvTaskApi(saveList);
}
@ -113,6 +124,12 @@ public class WcsIntegrationServiceImpl implements WcsIntegrationService {
throw new Exception("栈板不存在");
}
// 检查栈板是否正在被调用
String callingFlag = (String) palletInfo.get("calling_flag");
if ("Y".equals(callingFlag)) {
throw new Exception("栈板正在被调用中,无法进行打托操作");
}
// 获取栈板类型的位置信息
String palletType = (String) palletInfo.get("pallet_type");
List<String> positions = wcsIntegrationMapper.getPalletTypePositions(site, palletType);
@ -169,6 +186,12 @@ public class WcsIntegrationServiceImpl implements WcsIntegrationService {
throw new Exception("参数不能为空");
}
// 检查栈板是否正在被调用
String callingFlag = wcsIntegrationMapper.checkPalletCallingFlag(site, palletId);
if ("Y".equals(callingFlag)) {
throw new Exception("栈板正在被调用中,无法进行打托操作");
}
// 1. 验证标签
Map<String, Object> labelInfo = wcsIntegrationMapper.validateLabel(site, serialNo);
if (labelInfo == null) {
@ -250,6 +273,12 @@ public class WcsIntegrationServiceImpl implements WcsIntegrationService {
throw new Exception("参数不能为空");
}
// 检查栈板是否正在被调用
String callingFlag = wcsIntegrationMapper.checkPalletCallingFlag(site, palletId);
if ("Y".equals(callingFlag)) {
throw new Exception("栈板正在被调用中,无法进行扫出操作");
}
// 检查标签是否在本栈板中
Map<String, Object> existingPalletInfo = wcsIntegrationMapper.findPalletByLabel(site, serialNo);
if (existingPalletInfo == null) {
@ -325,6 +354,12 @@ public class WcsIntegrationServiceImpl implements WcsIntegrationService {
throw new Exception("参数不能为空");
}
// 检查栈板是否正在被调用
String callingFlag = wcsIntegrationMapper.checkPalletCallingFlag(site, palletId);
if ("Y".equals(callingFlag)) {
throw new Exception("栈板正在被调用中,无法进行位置调整");
}
// 验证标签是否在当前栈板中
Map<String, Object> currentDetail = wcsIntegrationMapper.findPalletByLabel(site, serialNo);
if (currentDetail == null || !palletId.equals(currentDetail.get("palletId"))) {

3
src/main/java/com/gaotao/modules/warehouse/entity/Pallet.java

@ -39,6 +39,9 @@ public class Pallet {
private String updatedBy; // 最后修改人
private String warehouseId;
private String callingFlag; // 调用标志Y=正在被调用, N=未被调用
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updatedTime; // 最后修改时间

49
src/main/resources/mapper/automatedWarehouse/WcsIntegrationMapper.xml

@ -5,10 +5,14 @@
<select id="palletListForPartNo" resultType="WmsLabelAndPalletData">
select b.site,a.pallet_id,b.part_no,sum(b.qty) as qty
from pallet_detail a ,wms_label b
from pallet_detail a ,handling_unit b, pallet c
<where>
and a.site = b.site
and a.serial_no = b.serial_no
and a.serial_no = b.unit_id
and a.site = c.site
and a.pallet_id = c.pallet_id
and c.is_deleted = '0'
and (c.calling_flag IS NULL OR c.calling_flag != 'Y')
and a.site = #{site}
@ -62,7 +66,7 @@
<!-- 检查栈板是否存在并获取栈板信息 - AI制作 -->
<select id="getPalletInfo" resultType="java.util.Map">
SELECT pallet_id, pallet_type, status, location_code, site, warehouse_id
SELECT pallet_id, pallet_type, status, location_code, site, warehouse_id, calling_flag
FROM pallet
WHERE site = #{site} AND pallet_id = #{palletId} AND is_deleted = '0'
</select>
@ -77,17 +81,17 @@
<!-- 获取栈板明细 - AI制作 -->
<select id="getPalletDetails" resultType="java.util.Map">
SELECT site, pallet_id as palletId, position, layer, serial_no as serialNo, part_no as partNo,
create_date as createDate, create_by as createBy
FROM pallet_detail
WHERE site = #{site} AND pallet_id = #{palletId}
SELECT a.site, a.pallet_id as palletId, a.position, a.layer, a.serial_no as serialNo, a.part_no as partNo,
a.create_date as createDate, a.create_by as createBy
FROM pallet_detail a
WHERE a.site = #{site} AND a.pallet_id = #{palletId}
<if test="position != null and position != ''">
AND position = #{position}
AND a.position = #{position}
</if>
<if test="layer != null">
AND layer = #{layer}
AND a.layer = #{layer}
</if>
ORDER BY position, layer, serial_no
ORDER BY a.position, a.layer, a.serial_no
</select>
<!-- 根据位置获取层数 - AI制作 -->
@ -100,11 +104,11 @@
<!-- 验证标签 - AI制作 -->
<select id="validateLabel" resultType="java.util.Map">
SELECT site, serial_no as serialNo, part_no as partNo, qty, in_stock_flag as inStockFlag,
label_type as labelType, batch_no as batchNo, warehouse_id as warehouseId,
SELECT site, unit_id as serialNo, part_no as partNo, qty, in_stock_flag as inStockFlag,
unit_type as labelType, batch_no as batchNo, warehouse_id as warehouseId,
location_id as locationId, remark, tid, epc
FROM wms_label
WHERE site = #{site} AND serial_no = #{serialNo}
FROM handling_unit
WHERE site = #{site} AND unit_id = #{serialNo}
</select>
<!-- 获取栈板类型区域信息(用于校验层级规则) - AI制作 -->
@ -163,4 +167,21 @@
AND serial_no = #{serialNo}
</update>
<!-- 更新栈板调用状态 - AI制作 -->
<update id="updatePalletCallingFlag">
UPDATE pallet
SET calling_flag = #{callingFlag},
updated_by = #{updatedBy},
updated_time = GETDATE()
WHERE site = #{site}
AND pallet_id = #{palletId}
</update>
<!-- 检查栈板是否正在被调用 - AI制作 -->
<select id="checkPalletCallingFlag" resultType="java.lang.String">
SELECT calling_flag
FROM pallet
WHERE site = #{site} AND pallet_id = #{palletId} AND is_deleted = '0'
</select>
</mapper>
Loading…
Cancel
Save