From 897bf0f381e16c51cea0581e8bd8913d8bb9d047 Mon Sep 17 00:00:00 2001
From: skyouc <creaycat@gmail.com>
Date: 星期六, 06 十二月 2025 15:46:13 +0800
Subject: [PATCH] 1. 添加AGV站点与堆垛机站点绑定关系 2. 获取并板入库托盘 3. 生成AGV任务 4. 生成堆垛机任务
---
src/main/java/com/zy/asrs/controller/StationRelaController.java | 123 +++++++++++++
src/main/java/com/zy/asrs/service/impl/StationRelaServiceImpl.java | 12 +
src/main/java/com/zy/common/model/enums/IoWorkType.java | 1
src/main/java/com/zy/asrs/mapper/StationRelaMapper.java | 12 +
src/main/java/com/zy/asrs/controller/MobileController.java | 2
src/main/java/com/zy/common/CodeBuilder.java | 2
src/main/java/com/zy/asrs/enums/CommonStation.java | 24 ++
src/main/java/com/zy/api/enums/MatLocType.java | 26 ++
src/main/java/stationRela.sql | 18 ++
src/main/java/com/zy/asrs/entity/StationRela.java | 60 ++++++
src/main/java/com/zy/asrs/service/StationRelaService.java | 8
src/main/resources/mapper/StationRelaMapper.xml | 14 +
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 164 ++++++++++++++++-
src/main/java/com/zy/asrs/enums/TaskIOType.java | 51 +++++
src/main/java/com/zy/asrs/service/MobileService.java | 7
15 files changed, 502 insertions(+), 22 deletions(-)
diff --git a/src/main/java/com/zy/api/enums/MatLocType.java b/src/main/java/com/zy/api/enums/MatLocType.java
new file mode 100644
index 0000000..faa771c
--- /dev/null
+++ b/src/main/java/com/zy/api/enums/MatLocType.java
@@ -0,0 +1,26 @@
+package com.zy.api.enums;
+
+/**
+ * 鐗╂枡鎵�灞炲簱浣嶇被鍨�
+ * @author Ryan
+ * @date 2025/12/6 10:41
+ * @return null
+ */
+public enum MatLocType {
+
+ /** 灏忎欢 */
+ AUTOMATED("12", "灏忎欢"),
+ /** 涓欢 */
+ SO_HOLDING("13", "涓欢"),
+ /** 澶т欢 */
+ EO_HOLDING("14", "婊よ姱");
+
+ public String type;
+
+ public String desc;
+
+ MatLocType(String type, String desc) {
+ this.type = type;
+ this.desc = desc;
+ }
+}
diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java
index cca516c..fabce93 100644
--- a/src/main/java/com/zy/asrs/controller/MobileController.java
+++ b/src/main/java/com/zy/asrs/controller/MobileController.java
@@ -177,7 +177,7 @@
/**
* @author Ryan
* @date 2025/11/3
- * @description: 鍛煎彨AGV鎼繍缂撳瓨鍖�/EO/SO
+ * @description: 鍛煎彨AGV鎼繍鍏ュ簱缂撳瓨鍖�/EO/SO
* @version 1.0
*/
@PostMapping("/cache/out/call")
diff --git a/src/main/java/com/zy/asrs/controller/StationRelaController.java b/src/main/java/com/zy/asrs/controller/StationRelaController.java
new file mode 100644
index 0000000..9d5b95b
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/StationRelaController.java
@@ -0,0 +1,123 @@
+package com.zy.asrs.controller;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.core.common.DateUtils;
+import com.zy.asrs.entity.StationRela;
+import com.zy.asrs.service.StationRelaService;
+import com.core.annotations.ManagerAuth;
+import com.core.common.BaseRes;
+import com.core.common.Cools;
+import com.core.common.R;
+import com.zy.common.web.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.*;
+
+@RestController
+public class StationRelaController extends BaseController {
+
+ @Autowired
+ private StationRelaService stationRelaService;
+
+ @RequestMapping(value = "/stationRela/{id}/auth")
+ @ManagerAuth
+ public R get(@PathVariable("id") String id) {
+ return R.ok(stationRelaService.selectById(String.valueOf(id)));
+ }
+
+ @RequestMapping(value = "/stationRela/list/auth")
+ @ManagerAuth
+ public R list(@RequestParam(defaultValue = "1")Integer curr,
+ @RequestParam(defaultValue = "10")Integer limit,
+ @RequestParam(required = false)String orderByField,
+ @RequestParam(required = false)String orderByType,
+ @RequestParam Map<String, Object> param){
+ EntityWrapper<StationRela> wrapper = new EntityWrapper<>();
+ excludeTrash(param);
+ convert(param, wrapper);
+ if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+ return R.ok(stationRelaService.selectPage(new Page<>(curr, limit), wrapper));
+ }
+
+ private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
+ for (Map.Entry<String, Object> entry : map.entrySet()){
+ String val = String.valueOf(entry.getValue());
+ if (val.contains(RANGE_TIME_LINK)){
+ String[] dates = val.split(RANGE_TIME_LINK);
+ wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
+ wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
+ } else {
+ wrapper.like(entry.getKey(), val);
+ }
+ }
+ }
+
+ @RequestMapping(value = "/stationRela/add/auth")
+ @ManagerAuth
+ public R add(StationRela stationRela) {
+ stationRelaService.insert(stationRela);
+ return R.ok();
+ }
+
+ @RequestMapping(value = "/stationRela/update/auth")
+ @ManagerAuth
+ public R update(StationRela stationRela){
+ if (Cools.isEmpty(stationRela) || null==stationRela.getId()){
+ return R.error();
+ }
+ stationRelaService.updateById(stationRela);
+ return R.ok();
+ }
+
+ @RequestMapping(value = "/stationRela/delete/auth")
+ @ManagerAuth
+ public R delete(@RequestParam(value="ids[]") Long[] ids){
+ for (Long id : ids){
+ stationRelaService.deleteById(id);
+ }
+ return R.ok();
+ }
+
+ @RequestMapping(value = "/stationRela/export/auth")
+ @ManagerAuth
+ public R export(@RequestBody JSONObject param){
+ EntityWrapper<StationRela> wrapper = new EntityWrapper<>();
+ List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
+ Map<String, Object> map = excludeTrash(param.getJSONObject("stationRela"));
+ convert(map, wrapper);
+ List<StationRela> list = stationRelaService.selectList(wrapper);
+ return R.ok(exportSupport(list, fields));
+ }
+
+ @RequestMapping(value = "/stationRelaQuery/auth")
+ @ManagerAuth
+ public R query(String condition) {
+ EntityWrapper<StationRela> wrapper = new EntityWrapper<>();
+ wrapper.like("id", condition);
+ Page<StationRela> page = stationRelaService.selectPage(new Page<>(0, 10), wrapper);
+ List<Map<String, Object>> result = new ArrayList<>();
+ for (StationRela stationRela : page.getRecords()){
+ Map<String, Object> map = new HashMap<>();
+ map.put("id", stationRela.getId());
+ map.put("value", stationRela.getId());
+ result.add(map);
+ }
+ return R.ok(result);
+ }
+
+ @RequestMapping(value = "/stationRela/check/column/auth")
+ @ManagerAuth
+ public R query(@RequestBody JSONObject param) {
+ Wrapper<StationRela> wrapper = new EntityWrapper<StationRela>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
+ if (null != stationRelaService.selectOne(wrapper)){
+ return R.parse(BaseRes.REPEAT).add(getComment(StationRela.class, String.valueOf(param.get("key"))));
+ }
+ return R.ok();
+ }
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/StationRela.java b/src/main/java/com/zy/asrs/entity/StationRela.java
new file mode 100644
index 0000000..9e16dca
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/StationRela.java
@@ -0,0 +1,60 @@
+package com.zy.asrs.entity;
+
+import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.baomidou.mybatisplus.annotations.TableField;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+@Data
+@TableName("agv_station_rela")
+public class StationRela implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty(value= "")
+ @TableId(value = "id", type = IdType.INPUT)
+ private Long id;
+
+ /**
+ * AGV绔欑偣
+ */
+ @ApiModelProperty(value= "AGV绔欑偣")
+ @TableField("agv_sta")
+ private String agvSta;
+
+ /**
+ * 鍫嗗灈鏈虹珯鐐�
+ */
+ @ApiModelProperty(value= "鍫嗗灈鏈虹珯鐐�")
+ @TableField("crn_sta")
+ private String crnSta;
+
+ /**
+ * 绔欑偣鐘舵��
+ */
+ @ApiModelProperty(value= "绔欑偣鐘舵��")
+ @TableField("use_status")
+ private String useStatus;
+
+ public StationRela() {}
+
+ public StationRela(Long id,String agvSta,String crnSta,String useStatus) {
+ this.id = id;
+ this.agvSta = agvSta;
+ this.crnSta = crnSta;
+ this.useStatus = useStatus;
+ }
+
+// StationRela stationRela = new StationRela(
+// null, // [闈炵┖]
+// null, // AGV绔欑偣
+// null, // 鍫嗗灈鏈虹珯鐐�
+// null // 绔欑偣鐘舵��
+// );
+
+
+}
diff --git a/src/main/java/com/zy/asrs/enums/CommonStation.java b/src/main/java/com/zy/asrs/enums/CommonStation.java
new file mode 100644
index 0000000..97e4d5b
--- /dev/null
+++ b/src/main/java/com/zy/asrs/enums/CommonStation.java
@@ -0,0 +1,24 @@
+package com.zy.asrs.enums;
+
+/**
+ * 閫氱敤绔欑偣
+ * @author Ryan
+ * @date 2025/12/6 13:56
+ * @return null
+ */
+public enum CommonStation {
+
+ //閫氱敤绫诲瀷
+ COMMON_STATION_Y("Y", "鏄�"),
+ //閫氱敤
+ COMMON_STATION_N("N", "鍚�");
+
+ public String type;
+
+ public String desc;
+
+ CommonStation(String type, String desc) {
+ this.type = type;
+ this.desc = desc;
+ }
+}
diff --git a/src/main/java/com/zy/asrs/enums/TaskIOType.java b/src/main/java/com/zy/asrs/enums/TaskIOType.java
new file mode 100644
index 0000000..8b24ea5
--- /dev/null
+++ b/src/main/java/com/zy/asrs/enums/TaskIOType.java
@@ -0,0 +1,51 @@
+package com.zy.asrs.enums;
+
+/**
+ * 浠诲姟鍑哄叆搴撶被鍨�
+ * @author Ryan
+ * @date 2025/12/6 14:55
+ * @param null
+ * @return null
+ */
+public enum TaskIOType {
+
+ //鏂欑
+ ALL_IN("1", "1.鍏ュ簱"),
+ //鎵樼洏
+ STATION_STATION("3", "3.绔欏埌绔�"),
+
+ DEVICE_OUT("6", "6.璁惧涓婇��鍑�"),
+
+ PICKING_MEGER("8", "8.鎷f枡閫斾腑骞舵澘"),
+
+ EMPTY_IN("10", "10.绌烘澘鍏ュ簱"),
+
+ MOVE("11", "11.搴撴牸绉昏浇"),
+
+ PICK_IN("53", "53.鎷f枡鍏ュ簱"),
+
+ MERGE_IN("54", "53.骞舵澘鍏ュ簱"),
+
+ CHECK_IN("57", "57.鐩樼偣鍏ュ簱"),
+
+ ALL_OUT("101", "101.鍑哄簱"),
+
+ PICK_OUT("103", "103.鎷f枡鍑哄簱"),
+
+ MERGE_OUT("104", "104.骞舵澘鍑哄簱"),
+
+ CHECK_OUT("107", "107.鐩樼偣鍑哄簱"),
+
+ EMPTY_OUT("110", "110.绌烘澘鍑哄簱"),
+
+ ;
+
+ public Integer type;
+
+ public String desc;
+
+ TaskIOType(String type, String desc) {
+ this.type = Integer.valueOf(type);
+ this.desc = desc;
+ }
+}
diff --git a/src/main/java/com/zy/asrs/mapper/StationRelaMapper.java b/src/main/java/com/zy/asrs/mapper/StationRelaMapper.java
new file mode 100644
index 0000000..1e6ce9f
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/StationRelaMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.mapper;
+
+import com.zy.asrs.entity.StationRela;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface StationRelaMapper extends BaseMapper<StationRela> {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/MobileService.java b/src/main/java/com/zy/asrs/service/MobileService.java
index f1d2985..16715df 100644
--- a/src/main/java/com/zy/asrs/service/MobileService.java
+++ b/src/main/java/com/zy/asrs/service/MobileService.java
@@ -2,10 +2,7 @@
import com.alibaba.fastjson.JSONObject;
import com.core.common.R;
-import com.zy.asrs.entity.BasDevp;
-import com.zy.asrs.entity.LocCache;
-import com.zy.asrs.entity.LocDetl;
-import com.zy.asrs.entity.OrderDetl;
+import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.*;
import java.util.Date;
@@ -108,7 +105,7 @@
* @date 2025/12/3 8:07
* @param locCaches
*/
- void generateCRNOutTask(LocCache locCaches);
+ void generateCRNOutTask(BasStation station, LocCache locCaches, Long userId);
R callEmptyCar(AgvCallParams params);
}
diff --git a/src/main/java/com/zy/asrs/service/StationRelaService.java b/src/main/java/com/zy/asrs/service/StationRelaService.java
new file mode 100644
index 0000000..8e65286
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/StationRelaService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.service;
+
+import com.zy.asrs.entity.StationRela;
+import com.baomidou.mybatisplus.service.IService;
+
+public interface StationRelaService extends IService<StationRela> {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index 2f151ef..15df4a6 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -11,8 +11,7 @@
import com.zy.asrs.entity.result.ForwardAGVTaskDTO;
import com.zy.asrs.entity.result.HIKApiDTO;
import com.zy.asrs.entity.result.HIKResultDTO;
-import com.zy.asrs.enums.LocAreaType;
-import com.zy.asrs.enums.LocStsType;
+import com.zy.asrs.enums.*;
import com.zy.asrs.enums.OrderSettle;
import com.zy.asrs.mapper.LocMastMapper;
import com.zy.asrs.mapper.ManLocDetlMapper;
@@ -23,7 +22,9 @@
import com.zy.common.constant.MesConstant;
import com.zy.common.entity.Parameter;
import com.zy.common.model.DetlDto;
+import com.zy.common.model.LocDetlDto;
import com.zy.common.model.MesCombParam;
+import com.zy.common.model.enums.IoWorkType;
import com.zy.common.model.enums.WorkNoType;
import com.zy.common.service.CommonService;
import com.zy.common.utils.HttpHandler;
@@ -121,6 +122,8 @@
private BasContainerService basContainerService;
@Autowired
private BasAreasService basAreasService;
+ @Autowired
+ private StationRelaService stationRelaService;
@Override
@Transactional
@@ -653,7 +656,7 @@
}
if (elem.getAnfme() > detls.getEnableQty()) {
- throw new CoolException(detls.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�");
+ throw new CoolException(detls.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎瑙勫垯");
}
OrderInAndOutUtil.increaseWorkQty(Boolean.TRUE, order.getId(), elem.getMatnr(), elem.getBatch(), elem.getBrand(), elem.getStandby1(), elem.getStandby2(), elem.getStandby3(),
elem.getBoxType1(), elem.getBoxType2(), elem.getBoxType3(), elem.getAnfme());
@@ -1276,8 +1279,8 @@
/**鐢熸垚缂撳瓨鍖哄嚭搴撲换鍔�*/
generateCacheOutTask(station, locCaches, userId);
- /**鐢熸垚绔嬪簱鍑哄簱浠诲姟*/
- generateCRNOutTask(locCaches);
+// /**鐢熸垚绔嬪簱鍑哄簱浠诲姟*/
+ generateCRNOutTask(station, locCaches, userId);
return R.ok();
}
@@ -1314,31 +1317,165 @@
*/
@Override
@Transactional(rollbackFor = Exception.class)
- public void generateCRNOutTask(LocCache locCaches) {
+ public void generateCRNOutTask(BasStation station, LocCache locCaches, Long userId) {
if (Objects.isNull(locCaches)) {
throw new CoolException("搴撲綅涓嶈兘涓虹┖锛侊紒");
}
+ //鑾峰彇缂撳瓨鍖轰俊鎭�
BasAreas basAreas = basAreasService.selectOne(new EntityWrapper<BasAreas>().eq("whs_type_id", LocAreaType.LOC_AREA_TYPE_IN_CACHE.type));
if (Objects.isNull(basAreas)) {
throw new CoolException("搴撳尯涓嶅瓨鍦紒锛�");
}
List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>()
- .eq("area_id", basAreas.getAreaNo())
+ .eq("area_id", basAreas.getId())
.eq("loc_id", locCaches.getId()));
-
if (Objects.isNull(locDetls)) {
throw new CoolException("搴撳瓨鏄庣粏涓嶅瓨鍦紒锛�");
}
+ //鑾峰彇绔嬪簱鍖轰俊鎭�
+ BasAreas one = basAreasService.selectOne(new EntityWrapper<BasAreas>().eq("whs_type_id", LocAreaType.LOC_AREA_TYPE_CRN.type));
+ if (Objects.isNull(one)) {
+ throw new CoolException("鏁版嵁閿欒锛氬簱鍖轰笉瀛樺湪锛侊紒");
+ }
- //鎸夌墿鏂欑紪鐮佸垎绫�
+ List<StationRela> relas = stationRelaService.selectList(new EntityWrapper<StationRela>().eq("agv_sta", station.getDevNo()));
+ if (Objects.isNull(relas) || relas.isEmpty()) {
+ throw new CoolException("绔欑偣鏈叧鑱斿爢鍨涙満浣滀笟绔欑偣锛侊紒");
+ }
+
+ Set<String> crnStas = relas.stream().map(StationRela::getCrnSta).collect(Collectors.toSet());
+
+ List<BasDevp> devps = basDevpService.selectList(new EntityWrapper<BasDevp>().in("dev_no", crnStas).eq("loading", CommonStation.COMMON_STATION_Y.type));
+ if (Objects.isNull(devps) || devps.isEmpty()) {
+ throw new CoolException("鏃犵珯鐐瑰彲鐢紒");
+ }
+ Collections.shuffle(devps);
+ BasDevp basDevp = devps.stream().findFirst().get();
+
+ List<LocMast> locMasts = new ArrayList<>();
Map<String, List<LocDetl>> listMap = locDetls.stream().collect(Collectors.groupingBy(LocDetl::getMatnr));
- listMap.forEach((key, detls) -> {
+ listMap.forEach((matnr, detls) -> {
+ //鏍规嵁supId(渚涘簲鍟�)鍒嗙被锛屽緱鍒板嚭搴撴�绘暟
+ Map<String, List<LocDetl>> supIds = detls.stream().collect(Collectors.groupingBy(LocDetl::getStandby1));
+ supIds.forEach((supId, sups) -> {
+ Double sum = sups.stream().mapToDouble(LocDetl::getAnfme).sum();
+ //鑾峰彇褰撳墠渚涘簲鍟�+ 鐗╂枡鍦ㄥ簱
+ List<LocDetl> detlList = locDetlService.selectList(new EntityWrapper<LocDetl>()
+ .eq("matnr", matnr)
+ .eq("area_id", one.getId())
+ .eq("standby1", supId).orderAsc(Arrays.asList("appe_time")));
+ //TODO銆� 鍒ゆ柇鏄惁鏈夋柊搴撲綅锛屾病鏈夋柊搴撲綅锛屽啀鎵炬湁绌烘牸鐨勪綅缃斁 1. 鍒ゆ柇褰撳墠鐗╂枡鏄惁鏈夊簱瀛� 2. 娌℃湁浣欐枡鏌ヨ鏂板簱浣�
+ if (!Objects.isNull(detlList) && !detlList.isEmpty()) {
+ Map<String, List<LocDetl>> locMaps = detlList.stream().collect(Collectors.groupingBy(LocDetl::getLocNo));
+ locMaps.forEach((locNo, adetls) -> {
+ LocMast locMast = locMastService.selectById(locNo);
+ if (Objects.isNull(locMast)) {
+ throw new CoolException("鏁版嵁閿欒锛屽簱浣嶄俊鎭笉瀛樺湪锛侊紒");
+ }
+ BasContainer container = basContainerService.selectOne(new EntityWrapper<BasContainer>().eq("barcode", locMast.getBarcode()));
+ if (Objects.isNull(container)) {
+ throw new CoolException("鏁版嵁閿欒锛屽鍣ㄤ笉瀛樺湪锛侊紒");
+ }
+ Set<String> sets = adetls.stream().map(LocDetl::getMatnr).collect(Collectors.toSet());
+ //鍒ゆ柇瀹瑰櫒鏄惁杩樺彲娣锋斁,鍙婂綋鍓嶇墿鏂欏彲鏀惧灏�
+ if (container.getMixMax() > sets.size()) {
+ int suplus = container.getMixMax() - sets.size();
+ Mat mats = matService.selectOne(new EntityWrapper<Mat>().eq("matnr", matnr));
+ if (Objects.isNull(mats)) {
+ throw new CoolException("鐗╂枡涓嶅瓨鍦紒锛�");
+ }
+ Double v = mats.getUpQty() * suplus;
+ //灏忎簬闆�
+ if (sum.compareTo(v) <= 0) {
+ //鍙斁涓�
+ locMasts.add(locMast);
+ }
+ }
+ });
+ }
+ });
});
- locDetls.forEach(locDetl -> {
+ if (!locMasts.isEmpty()) {
+ //鐢熸垚鍫嗗灈鏈哄嚭搴撲换鍔�
+ generateOutTask(locMasts, TaskIOType.MERGE_OUT.type, basDevp, userId);
+ }
+ }
- });
+ /**
+ * 鐢熸垚鍫嗗灈鏈哄嚭搴撲换鍔�
+ * @author Ryan
+ * @date 2025/12/6 14:44
+ * @param locMasts
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public void generateOutTask(List<LocMast> locMasts, Integer ioType, BasDevp devp, Long userId) {
+ Date now = new Date();
+ for (LocMast locMast : locMasts) {
+ if (Objects.isNull(ioType)) {
+ continue;
+ }
+ Integer outSta = devp.getDevNo();
+ // 鑾峰彇璺緞
+ StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), outSta);
+ // 鐢熸垚宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(now);
+ wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶被鍨�
+ wrkMast.setIoPri(13D); // 浼樺厛绾э細13
+ wrkMast.setCrnNo(locMast.getCrnNo());
+ wrkMast.setSourceStaNo(staDesc.getCrnStn() + ""); // 婧愮珯
+ wrkMast.setStaNo(staDesc.getStnNo() + ""); // 鐩爣绔�
+ wrkMast.setSourceLocNo(locMast.getLocNo()); // 婧愬簱浣�
+ wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("N"); // 绌烘澘
+ wrkMast.setLinkMis("N");
+ wrkMast.setBarcode(locMast.getBarcode());
+ wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiUser(userId);
+ wrkMast.setModiTime(now);
+ if (!wrkMastService.insert(wrkMast)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細" + locMast.getLocNo());
+ }
+
+ List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo()));
+
+ // 鐢熸垚宸ヤ綔妗f槑缁�
+ for (LocDetl detlDto : locDetls) {
+ WrkDetl wrkDetl = new WrkDetl();
+ BeanUtils.copyProperties(detlDto, wrkDetl);
+ wrkDetl.setOrderNo(""); // 鎵嬪姩鍑哄簱涓嶉渶瑕佸甫鍑哄簱瀛樹腑鐨勫崟鎹紪鍙�
+ wrkDetl.setWrkNo(workNo);
+ wrkDetl.setIoTime(now);
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setAppeUser(userId);
+ wrkDetl.setModiTime(now);
+ wrkDetl.setModiUser(userId);
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+ }
+ }
+ // 淇敼搴撲綅鐘舵��: F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
+ locMast = locMastService.selectById(locMast.getLocNo());
+ if (locMast.getLocSts().equals(LocStsType.LOC_STS_TYPE_F.type)) {
+ locMast.setLocSts(ioType == 101 ? "R" : "P");
+ locMast.setModiUser(userId);
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + locMast.getLocNo());
+ }
+ } else {
+ throw new CoolException(locMast.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
+ }
+ }
}
/**
@@ -1397,9 +1534,6 @@
.setModiUser(userId);
taskDetls.add(wrkDetl);
});
-
-
-
//淇濆瓨宸ヤ綔妗f槑缁�
if (!taskDetlService.insertBatch(taskDetls)) {
throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
diff --git a/src/main/java/com/zy/asrs/service/impl/StationRelaServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/StationRelaServiceImpl.java
new file mode 100644
index 0000000..4735086
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/StationRelaServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.service.impl;
+
+import com.zy.asrs.mapper.StationRelaMapper;
+import com.zy.asrs.entity.StationRela;
+import com.zy.asrs.service.StationRelaService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service("stationRelaService")
+public class StationRelaServiceImpl extends ServiceImpl<StationRelaMapper, StationRela> implements StationRelaService {
+
+}
diff --git a/src/main/java/com/zy/common/CodeBuilder.java b/src/main/java/com/zy/common/CodeBuilder.java
index 0e31eae..02e069c 100644
--- a/src/main/java/com/zy/common/CodeBuilder.java
+++ b/src/main/java/com/zy/common/CodeBuilder.java
@@ -20,7 +20,7 @@
generator.url="192.168.4.15:1433;databasename=jsxsasrs";
generator.username="sa";
generator.password="sa@123";
- generator.table="man_check_order_detl";
+ generator.table="agv_station_rela";
generator.packagePath="com.zy.asrs";
generator.html = false;
generator.js = false;
diff --git a/src/main/java/com/zy/common/model/enums/IoWorkType.java b/src/main/java/com/zy/common/model/enums/IoWorkType.java
index 0077d5c..0083e3e 100644
--- a/src/main/java/com/zy/common/model/enums/IoWorkType.java
+++ b/src/main/java/com/zy/common/model/enums/IoWorkType.java
@@ -6,6 +6,7 @@
PICK_IN,
ALL_OUT,
PICK_OUT,
+ MERGE_OUT,
CHECK_OUT,
;
diff --git a/src/main/java/stationRela.sql b/src/main/java/stationRela.sql
new file mode 100644
index 0000000..0f7521d
--- /dev/null
+++ b/src/main/java/stationRela.sql
@@ -0,0 +1,18 @@
+-- save stationRela record
+-- mysql
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'stationRela/stationRela.html', 'stationRela绠$悊', null , '2', null , '1');
+
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'stationRela#view', '鏌ヨ', '', '3', '0', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'stationRela#btn-add', '鏂板', '', '3', '1', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'stationRela#btn-edit', '缂栬緫', '', '3', '2', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'stationRela#btn-delete', '鍒犻櫎', '', '3', '3', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'stationRela#btn-export', '瀵煎嚭', '', '3', '4', '1');
+
+-- sqlserver
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'stationRela/stationRela.html', N'stationRela绠$悊', null, '2', null, '1');
+
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'stationRela#view', N'鏌ヨ', '', '3', '0', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'stationRela#btn-add', N'鏂板', '', '3', '1', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'stationRela#btn-edit', N'缂栬緫', '', '3', '2', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'stationRela#btn-delete', N'鍒犻櫎', '', '3', '3', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'stationRela#btn-export', N'瀵煎嚭', '', '3', '4', '1');
diff --git a/src/main/resources/mapper/StationRelaMapper.xml b/src/main/resources/mapper/StationRelaMapper.xml
new file mode 100644
index 0000000..c9628af
--- /dev/null
+++ b/src/main/resources/mapper/StationRelaMapper.xml
@@ -0,0 +1,14 @@
+<?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.zy.asrs.mapper.StationRelaMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.zy.asrs.entity.StationRela">
+ <result column="id" property="id" />
+ <result column="agv_sta" property="agvSta" />
+ <result column="crn_sta" property="crnSta" />
+ <result column="use_status" property="useStatus" />
+
+ </resultMap>
+
+</mapper>
--
Gitblit v1.9.1