Browse Source

更新

master
常熟吴彦祖 9 months ago
parent
commit
fdd226b46e
  1. 58
      src/main/java/com/gaotao/modules/automatedWarehouse/controller/WcsIntegrationController.java
  2. 17
      src/main/java/com/gaotao/modules/automatedWarehouse/mapper/WcsIntegrationMapper.java
  3. 22
      src/main/java/com/gaotao/modules/automatedWarehouse/service/WcsIntegrationService.java
  4. 98
      src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/WcsIntegrationServiceImpl.java
  5. 38
      src/main/resources/mapper/automatedWarehouse/WcsIntegrationMapper.xml

58
src/main/java/com/gaotao/modules/automatedWarehouse/controller/WcsIntegrationController.java

@ -152,4 +152,62 @@ public class WcsIntegrationController {
return R.error(e.getMessage());
}
}
// ==================== 运输任务相关接口 - AI制作 ====================
/**
* 获取AGV站点列表 - AI制作
*/
@PostMapping(value="/getAgvStations")
@ResponseBody
public R getAgvStations(@RequestBody Map<String, Object> params) {
try {
List<Map<String, Object>> stations = wcsIntegrationService.getAgvStations(params);
return R.ok().put("stations", stations);
} catch (Exception e) {
return R.error(e.getMessage());
}
}
/**
* 根据起点站点获取可达目标站点 - AI制作
*/
@PostMapping(value="/getTargetStations")
@ResponseBody
public R getTargetStations(@RequestBody Map<String, Object> params) {
try {
List<Map<String, Object>> targets = wcsIntegrationService.getTargetStations(params);
return R.ok().put("targets", targets);
} catch (Exception e) {
return R.error(e.getMessage());
}
}
/**
* 创建栈板运输任务 - AI制作
*/
@PostMapping(value="/createPalletTransportTask")
@ResponseBody
public R createPalletTransportTask(@RequestBody Map<String, Object> params) {
try {
wcsIntegrationService.createPalletTransportTask(params);
return R.ok();
} catch (Exception e) {
return R.error(e.getMessage());
}
}
/**
* Call栈板到指定站点 - AI制作
*/
@PostMapping(value="/callPalletToStation")
@ResponseBody
public R callPalletToStation(@RequestBody Map<String, Object> params) {
try {
wcsIntegrationService.callPalletToStation(params);
return R.ok();
} catch (Exception e) {
return R.error(e.getMessage());
}
}
}

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

@ -100,4 +100,21 @@ public interface WcsIntegrationMapper {
* 检查栈板是否正在被调用 - AI制作
*/
String checkPalletCallingFlag(@Param("site") String site, @Param("palletId") String palletId);
// ==================== 运输任务相关方法 - AI制作 ====================
/**
* 获取AGV站点列表 - AI制作
*/
List<Map<String, Object>> getAgvStations();
/**
* 根据起点站点获取可达目标站点 - AI制作
*/
List<Map<String, Object>> getTargetStationsByStart(@Param("startStation") String startStation);
/**
* 插入单个运输任务 - AI制作
*/
void insertTransportTask(WmsTransportTask task);
}

22
src/main/java/com/gaotao/modules/automatedWarehouse/service/WcsIntegrationService.java

@ -47,4 +47,26 @@ public interface WcsIntegrationService {
* 更新栈板明细位置 - AI制作
*/
void updatePalletDetailPosition(Map<String, Object> params) throws Exception;
// ==================== 运输任务相关方法 - AI制作 ====================
/**
* 获取AGV站点列表 - AI制作
*/
List<Map<String, Object>> getAgvStations(Map<String, Object> params) throws Exception;
/**
* 根据起点站点获取可达目标站点 - AI制作
*/
List<Map<String, Object>> getTargetStations(Map<String, Object> params) throws Exception;
/**
* 创建栈板运输任务 - AI制作
*/
void createPalletTransportTask(Map<String, Object> params) throws Exception;
/**
* Call栈板到指定站点 - AI制作
*/
void callPalletToStation(Map<String, Object> params) throws Exception;
}

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

@ -403,4 +403,102 @@ public class WcsIntegrationServiceImpl implements WcsIntegrationService {
String username = ((SysUserEntity) SecurityUtils.getSubject().getPrincipal()).getUsername();
wcsIntegrationMapper.updatePalletDetailPosition(site, palletId, serialNo, newPosition, newLayer, username);
}
// ==================== 运输任务相关方法实现 - AI制作 ====================
@Override
public List<Map<String, Object>> getAgvStations(Map<String, Object> params) throws Exception {
return wcsIntegrationMapper.getAgvStations();
}
@Override
public List<Map<String, Object>> getTargetStations(Map<String, Object> params) throws Exception {
String startStation = (String) params.get("startStation");
if (!StringUtils.hasText(startStation)) {
throw new Exception("起点站点不能为空");
}
return wcsIntegrationMapper.getTargetStationsByStart(startStation);
}
@Override
@Transactional
public void createPalletTransportTask(Map<String, Object> params) throws Exception {
String site = (String) params.get("site");
String palletId = (String) params.get("palletId");
String startStation = (String) params.get("startStation");
String endStation = (String) params.get("endStation");
if (!StringUtils.hasText(site) || !StringUtils.hasText(palletId) ||
!StringUtils.hasText(startStation) || !StringUtils.hasText(endStation)) {
throw new Exception("参数不能为空");
}
String username = ((SysUserEntity) SecurityUtils.getSubject().getPrincipal()).getUsername();
Date currentTime = new Date();
// 检查栈板calling_flag状态
String callingFlag = wcsIntegrationMapper.checkPalletCallingFlag(site, palletId);
if ("Y".equals(callingFlag)) {
throw new Exception("栈板正在被调用中,无法创建运输任务");
}
// 生成任务编号
TransNoControl transData = transNoService.getTransNo(site, "WTT", 10);
// 创建运输任务
WmsTransportTask task = new WmsTransportTask();
task.setSite(site);
task.setTaskNo(transData.getNewTransNo());
task.setItemNo(1);
task.setSourceType("运输栈板");
task.setSourceBillNo("");
task.setSourceLineId(0L);
task.setPartNo(""); // 栈板运输不需要物料信息
task.setQty(BigDecimal.ZERO);
task.setBatchNo("");
task.setSerialNo("");
task.setFromLocation(startStation);
task.setToLocation(endStation);
task.setPalletId(palletId);
task.setAgvCode("");
task.setPriority(0);
task.setStatus("CREATED");
task.setWmsSendTime(currentTime);
task.setCreatedBy(username);
task.setCreatedTime(currentTime);
task.setUpdatedTime(currentTime);
task.setFinishQty(BigDecimal.ZERO);
// 插入运输任务
wcsIntegrationMapper.insertTransportTask(task);
// 更新栈板calling_flag为Y
wcsIntegrationMapper.updatePalletCallingFlag(site, palletId, "Y", username);
}
@Override
@Transactional
public void callPalletToStation(Map<String, Object> params) throws Exception {
String site = (String) params.get("site");
String palletId = (String) params.get("palletId");
String station = (String) params.get("station");
if (!StringUtils.hasText(site) || !StringUtils.hasText(palletId) || !StringUtils.hasText(station)) {
throw new Exception("参数不能为空");
}
// 检查栈板calling_flag状态
String callingFlag = wcsIntegrationMapper.checkPalletCallingFlag(site, palletId);
if ("Y".equals(callingFlag)) {
throw new Exception("栈板正在被调用中,无法执行Call操作");
}
String username = ((SysUserEntity) SecurityUtils.getSubject().getPrincipal()).getUsername();
// TODO: 后期在这里调用WCS接口实现Call栈板功能
// 示例wcsApiService.callPalletToStation(site, palletId, station);
// 更新栈板calling_flag为Y
// wcsIntegrationMapper.updatePalletCallingFlag(site, palletId, "Y", username);
}
}

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

@ -184,4 +184,42 @@
WHERE site = #{site} AND pallet_id = #{palletId} AND is_deleted = '0'
</select>
<!-- ==================== 运输任务相关SQL - AI制作 ==================== -->
<!-- 获取AGV站点列表 - AI制作 -->
<select id="getAgvStations" resultType="java.util.Map">
SELECT station_code as stationCode, station_name as stationName,
area_type as areaType, warehouse_code as warehouseCode
FROM agv_station
WHERE active = 'Y'
ORDER BY station_code
</select>
<!-- 根据起点站点获取可达目标站点 - AI制作 -->
<select id="getTargetStationsByStart" resultType="java.util.Map">
SELECT DISTINCT r.end_station as stationCode, s.station_name as stationName,
r.estimated_time as estimatedTime, r.distance as distance
FROM agv_route_config r
LEFT JOIN agv_station s ON r.end_station = s.station_code
WHERE r.start_station = #{startStation}
AND r.active = 'Y'
AND (s.active IS NULL OR s.active = 'Y')
ORDER BY r.end_station
</select>
<!-- 插入单个运输任务 - AI制作 -->
<insert id="insertTransportTask">
INSERT INTO wms_transport_task (
site, task_no, item_no, source_type, source_bill_no, source_line_id,
part_no, qty, batch_no, serial_no, from_location, to_location,
pallet_id, agv_code, priority, status, wms_send_time,
created_by, created_time, updated_time
) VALUES (
#{site}, #{taskNo}, #{itemNo}, #{sourceType}, #{sourceBillNo}, #{sourceLineId},
#{partNo}, #{qty}, #{batchNo}, #{serialNo}, #{fromLocation}, #{toLocation},
#{palletId}, #{agvCode}, #{priority}, #{status}, #{wmsSendTime},
#{createdBy}, #{createdTime}, #{updatedTime}
)
</insert>
</mapper>
Loading…
Cancel
Save