关锁业务处理:
1. 新增配置文件增加关锁通知接口地址配置 2. 新增关锁施解封逻辑判定 3. 新增关锁回调接口 4. 更新X21插入关锁通知判定逻辑 5. 更新gatherinfoHandle插入关锁判定 6. 流转申请实体类增加关锁字段
正在显示
22 个修改的文件
包含
863 行增加
和
5 行删除
@@ -84,5 +84,7 @@ nmms.interface.host=http://10.50.3.82:8081/ | @@ -84,5 +84,7 @@ nmms.interface.host=http://10.50.3.82:8081/ | ||
84 | nmms.site.host=http://nmms1.15miaoo.com:17999 | 84 | nmms.site.host=http://nmms1.15miaoo.com:17999 |
85 | custom.receptDirectory= bw/read/ | 85 | custom.receptDirectory= bw/read/ |
86 | 86 | ||
87 | +# 卡口指令通知接口 | ||
88 | +interface.lock.url=http://127.0.0.1:8848 | ||
87 | devdebug=true | 89 | devdebug=true |
88 | g2.onoff=false | 90 | g2.onoff=false |
1 | +package com.sy.controller; | ||
2 | + | ||
3 | + | ||
4 | +import com.alibaba.fastjson.JSON; | ||
5 | +import com.sy.model.GatherInfo; | ||
6 | +import com.sy.model.LockFeedBack; | ||
7 | +import com.sy.model.LockFeignResponse; | ||
8 | +import com.sy.model.NoticeLock; | ||
9 | +import com.sy.response.ResultJson; | ||
10 | +import com.sy.service.CommandLogService; | ||
11 | +import com.sy.service.CustomsLockService; | ||
12 | +import lombok.extern.slf4j.Slf4j; | ||
13 | +import org.apache.commons.lang.StringUtils; | ||
14 | +import org.springframework.beans.factory.annotation.Autowired; | ||
15 | +import org.springframework.web.bind.annotation.PostMapping; | ||
16 | +import org.springframework.web.bind.annotation.RequestBody; | ||
17 | +import org.springframework.web.bind.annotation.RequestMapping; | ||
18 | +import org.springframework.web.bind.annotation.RestController; | ||
19 | + | ||
20 | +@RestController | ||
21 | +@RequestMapping("/lock") | ||
22 | +@Slf4j | ||
23 | +public class CustomsLockController { | ||
24 | + | ||
25 | + @Autowired | ||
26 | + CustomsLockService customsLockService; | ||
27 | + | ||
28 | + @Autowired | ||
29 | + CommandLogService commandLogService; | ||
30 | + | ||
31 | + @PostMapping("response") | ||
32 | + public ResultJson lockResponse(@RequestBody LockFeedBack feedBack){ | ||
33 | + | ||
34 | + if (StringUtils.isEmpty(feedBack.barcode)){ | ||
35 | + return new ResultJson("400","缺少二维码信息","缺少二维码信息"); | ||
36 | + } | ||
37 | + | ||
38 | + log.info("收到关锁通知"); | ||
39 | + StringBuilder sb = new StringBuilder(); | ||
40 | + sb.append("施解封时间:").append(feedBack.locktime).append("\n") | ||
41 | + .append("关锁秘钥:").append(feedBack.secret).append("\n") | ||
42 | + .append("施解封内容:").append(feedBack.feedbackconten).append("\n") | ||
43 | + .append("施解封状态:").append(feedBack.feedbackcode).append("\n"); | ||
44 | + | ||
45 | + String LOCK_TYPE_UNLOCK = "2"; | ||
46 | + /** | ||
47 | + * 关锁施解封类型 | ||
48 | + * 1 施封 | ||
49 | + * 2 解封 | ||
50 | + */ | ||
51 | + String LOCK_TYPE_LOCK = "1"; | ||
52 | + if (LOCK_TYPE_LOCK.equals(feedBack.type)){ | ||
53 | + sb.append("施解封类型:").append("施封").append("\n"); | ||
54 | + }else if (LOCK_TYPE_UNLOCK.equals(feedBack.type)){ | ||
55 | + sb.append("施解封类型:").append("解封").append("\n"); | ||
56 | + }else { | ||
57 | + sb.append("施解封类型:").append("未知").append("\n"); | ||
58 | + sb.append("施解封类型:").append(feedBack.type).append("\n"); | ||
59 | + } | ||
60 | + | ||
61 | + | ||
62 | + //判定关锁返回结果,结果正常,继续走抬杆指令,结果异常 不走抬杆指令,转人工抬杆 | ||
63 | + /** | ||
64 | + * 关锁通知施解封状态 | ||
65 | + * 01 成功 | ||
66 | + * 02 失败 | ||
67 | + */ | ||
68 | + String LOCK_SUCCESS = "01"; | ||
69 | + if(LOCK_SUCCESS.equals(feedBack.feedbackcode)){ | ||
70 | + //读取缓存 | ||
71 | + GatherInfo gatherInfo = customsLockService.cacheRead(feedBack.barcode); | ||
72 | + sb.append("成功"); | ||
73 | + if (gatherInfo!=null){ | ||
74 | + commandLogService.commandlog(gatherInfo,true,sb.toString(),null,null,0.0,0.0,0.0,0.0); | ||
75 | + customsLockService.localGatherInfoHandle(gatherInfo); | ||
76 | + }else { | ||
77 | + sb.append("关锁缓存信息读取失败"); | ||
78 | + gatherInfo = new GatherInfo(); | ||
79 | + gatherInfo.setBarcode(feedBack.barcode); | ||
80 | + commandLogService.commandlog(gatherInfo,false,sb.toString(),null,null,0.0,0.0,0.0,0.0); | ||
81 | + log.info("[LOCK-RSP]-关锁缓存信息读取失败"); | ||
82 | + } | ||
83 | + }else { | ||
84 | + sb.append("关锁缓存信息读取失败"); | ||
85 | + GatherInfo gatherInfo = new GatherInfo(); | ||
86 | + gatherInfo.setBarcode(feedBack.barcode); | ||
87 | + commandLogService.commandlog(gatherInfo,false,sb.toString(),null,null,0.0,0.0,0.0,0.0); | ||
88 | + log.info("[LOCK-RSP]-关锁施解封失败"); | ||
89 | + } | ||
90 | + return new ResultJson("200","success"); | ||
91 | + } | ||
92 | + | ||
93 | +} |
1 | +package com.sy.controller; | ||
2 | + | ||
3 | + | ||
4 | +import com.alibaba.fastjson.JSON; | ||
5 | +import com.sy.model.GatherInfo; | ||
6 | +import com.sy.model.LockFeedBack; | ||
7 | +import com.sy.model.LockFeignResponse; | ||
8 | +import com.sy.model.NoticeLock; | ||
9 | +import com.sy.response.ResultJson; | ||
10 | +import com.sy.service.CommandLogService; | ||
11 | +import com.sy.service.CustomsLockService; | ||
12 | +import lombok.extern.slf4j.Slf4j; | ||
13 | +import org.springframework.beans.factory.annotation.Autowired; | ||
14 | +import org.springframework.web.bind.annotation.PostMapping; | ||
15 | +import org.springframework.web.bind.annotation.RequestBody; | ||
16 | +import org.springframework.web.bind.annotation.RequestMapping; | ||
17 | +import org.springframework.web.bind.annotation.RestController; | ||
18 | + | ||
19 | +@RestController | ||
20 | +@Slf4j | ||
21 | +public class CustomsLockTestController { | ||
22 | + | ||
23 | + @PostMapping("/bizApi/noticeLock") | ||
24 | + public LockFeignResponse lockTest(@RequestBody NoticeLock noticeLock){ | ||
25 | + log.info("测试接口接收到关锁通知施解封:{}", JSON.toJSONString(noticeLock)); | ||
26 | + LockFeignResponse lockFeignResponse = new LockFeignResponse(); | ||
27 | + lockFeignResponse.success=true; | ||
28 | + lockFeignResponse.code=0; | ||
29 | + lockFeignResponse.message="关锁通知测试接收成功"; | ||
30 | + return lockFeignResponse; | ||
31 | + } | ||
32 | +} |
@@ -59,4 +59,22 @@ public interface LandBusinessTypeListMapper { | @@ -59,4 +59,22 @@ public interface LandBusinessTypeListMapper { | ||
59 | //查询出场申请为最后一个 | 59 | //查询出场申请为最后一个 |
60 | int selectlaststation(@Param("trailerFrameNo") String trailerFrameNo, @Param("barcode") String barcode); | 60 | int selectlaststation(@Param("trailerFrameNo") String trailerFrameNo, @Param("barcode") String barcode); |
61 | 61 | ||
62 | + /** | ||
63 | + * 首次离场查询 | ||
64 | + * @param barcode 二维码 | ||
65 | + * @param trailerFrameNo 车牌 | ||
66 | + * @param turnoverflag 进出标识 | ||
67 | + * @return 0 代表首次离场,大于0代表非首次离场已经产生过离场记录 | ||
68 | + */ | ||
69 | + int selectFirstLeave(@Param("trailerFrameNo") String trailerFrameNo, @Param("barcode") String barcode, | ||
70 | + @Param("turnoverflag") String turnoverflag); | ||
71 | + | ||
72 | + /** | ||
73 | + * 查询二维码车辆进出场记录信息 | ||
74 | + * @param trailerFrameNo | ||
75 | + * @param barcode | ||
76 | + * @return | ||
77 | + */ | ||
78 | + List<LandBusinessTypeList> selectHistory (@Param("trailerFrameNo") String trailerFrameNo, @Param("barcode") String barcode); | ||
79 | + | ||
62 | } | 80 | } |
@@ -11,6 +11,13 @@ public interface LandListDao { | @@ -11,6 +11,13 @@ public interface LandListDao { | ||
11 | 11 | ||
12 | LandList selectByPrimaryKey(String id); | 12 | LandList selectByPrimaryKey(String id); |
13 | 13 | ||
14 | + /** | ||
15 | + * 根据二维码找申请单的关锁信息 | ||
16 | + * @param barcode 二维码, 二维码要做数据库的唯一索引 | ||
17 | + * @return 申请单信息 | ||
18 | + */ | ||
19 | + LandList selectLockInfoByBarcode(String barcode); | ||
20 | + | ||
14 | int updateByPrimaryKeySelective(LandList record); | 21 | int updateByPrimaryKeySelective(LandList record); |
15 | 22 | ||
16 | int updateByPrimaryKey(LandList record); | 23 | int updateByPrimaryKey(LandList record); |
@@ -13,6 +13,8 @@ public class LAND_BUSINEESTYPE_LIST_INFO { | @@ -13,6 +13,8 @@ public class LAND_BUSINEESTYPE_LIST_INFO { | ||
13 | 13 | ||
14 | private String applicationformid; | 14 | private String applicationformid; |
15 | 15 | ||
16 | + private String endcarlogo; | ||
17 | + | ||
16 | private String ext1; | 18 | private String ext1; |
17 | 19 | ||
18 | private String ext2; | 20 | private String ext2; |
@@ -21,6 +23,11 @@ public class LAND_BUSINEESTYPE_LIST_INFO { | @@ -21,6 +23,11 @@ public class LAND_BUSINEESTYPE_LIST_INFO { | ||
21 | 23 | ||
22 | private String ext4; | 24 | private String ext4; |
23 | 25 | ||
26 | + private String flightno; | ||
27 | + | ||
28 | + private String piece; | ||
29 | + | ||
30 | + | ||
24 | public String getId() { | 31 | public String getId() { |
25 | return id; | 32 | return id; |
26 | } | 33 | } |
@@ -100,4 +107,29 @@ public class LAND_BUSINEESTYPE_LIST_INFO { | @@ -100,4 +107,29 @@ public class LAND_BUSINEESTYPE_LIST_INFO { | ||
100 | public void setExt4(String ext4) { | 107 | public void setExt4(String ext4) { |
101 | this.ext4 = ext4 == null ? null : ext4.trim(); | 108 | this.ext4 = ext4 == null ? null : ext4.trim(); |
102 | } | 109 | } |
110 | + | ||
111 | + | ||
112 | + public String getEndcarlogo() { | ||
113 | + return endcarlogo; | ||
114 | + } | ||
115 | + | ||
116 | + public void setEndcarlogo(String endcarlogo) { | ||
117 | + this.endcarlogo = endcarlogo; | ||
118 | + } | ||
119 | + | ||
120 | + public String getFlightno() { | ||
121 | + return flightno; | ||
122 | + } | ||
123 | + | ||
124 | + public void setFlightno(String flightno) { | ||
125 | + this.flightno = flightno; | ||
126 | + } | ||
127 | + | ||
128 | + public String getPiece() { | ||
129 | + return piece; | ||
130 | + } | ||
131 | + | ||
132 | + public void setPiece(String piece) { | ||
133 | + this.piece = piece; | ||
134 | + } | ||
103 | } | 135 | } |
1 | package com.sy.model; | 1 | package com.sy.model; |
2 | 2 | ||
3 | import java.util.Date; | 3 | import java.util.Date; |
4 | +import java.util.List; | ||
4 | 5 | ||
5 | public class LandBusinessTypeList { | 6 | public class LandBusinessTypeList { |
6 | private String id; | 7 | private String id; |
@@ -69,6 +70,10 @@ public class LandBusinessTypeList { | @@ -69,6 +70,10 @@ public class LandBusinessTypeList { | ||
69 | 70 | ||
70 | private String veProperty; | 71 | private String veProperty; |
71 | 72 | ||
73 | + private List<String> endstationList; | ||
74 | + | ||
75 | + private List<LAND_BUSINEESTYPE_LIST_INFO> landBusineestypeListInfoList; | ||
76 | + | ||
72 | public String getIsthree() { | 77 | public String getIsthree() { |
73 | return isthree; | 78 | return isthree; |
74 | } | 79 | } |
@@ -342,4 +347,21 @@ public class LandBusinessTypeList { | @@ -342,4 +347,21 @@ public class LandBusinessTypeList { | ||
342 | public void setVeProperty(String veProperty) { | 347 | public void setVeProperty(String veProperty) { |
343 | this.veProperty = veProperty; | 348 | this.veProperty = veProperty; |
344 | } | 349 | } |
350 | + | ||
351 | + | ||
352 | + public List<String> getEndstationList() { | ||
353 | + return endstationList; | ||
354 | + } | ||
355 | + | ||
356 | + public void setEndstationList(List<String> endstationList) { | ||
357 | + this.endstationList = endstationList; | ||
358 | + } | ||
359 | + | ||
360 | + public List<LAND_BUSINEESTYPE_LIST_INFO> getLandBusineestypeListInfoList() { | ||
361 | + return landBusineestypeListInfoList; | ||
362 | + } | ||
363 | + | ||
364 | + public void setLandBusineestypeListInfoList(List<LAND_BUSINEESTYPE_LIST_INFO> landBusineestypeListInfoList) { | ||
365 | + this.landBusineestypeListInfoList = landBusineestypeListInfoList; | ||
366 | + } | ||
345 | } | 367 | } |
@@ -205,5 +205,11 @@ public class LandList implements Serializable { | @@ -205,5 +205,11 @@ public class LandList implements Serializable { | ||
205 | */ | 205 | */ |
206 | private String modeTransportation; | 206 | private String modeTransportation; |
207 | 207 | ||
208 | + /** | ||
209 | + * 关锁号 | ||
210 | + */ | ||
211 | + private String lockNum; | ||
212 | + | ||
213 | + | ||
208 | private static final long serialVersionUID = 1L; | 214 | private static final long serialVersionUID = 1L; |
209 | } | 215 | } |
src/main/java/com/sy/model/LockFeedBack.java
0 → 100644
1 | +package com.sy.model; | ||
2 | + | ||
3 | +/** | ||
4 | + * 关锁回调接口实体 | ||
5 | + * @author mrz | ||
6 | + */ | ||
7 | +public class LockFeedBack { | ||
8 | + /** | ||
9 | + * 二维码 | ||
10 | + */ | ||
11 | + public String barcode; | ||
12 | + /** | ||
13 | + * 施解封状态 | ||
14 | + */ | ||
15 | + public String feedbackcode; | ||
16 | + /** | ||
17 | + * 施解封描述 | ||
18 | + */ | ||
19 | + public String feedbackconten; | ||
20 | + /** | ||
21 | + * 关锁秘钥 | ||
22 | + */ | ||
23 | + public String secret; | ||
24 | + /** | ||
25 | + * 施解封时间 | ||
26 | + */ | ||
27 | + public String locktime; | ||
28 | + /** | ||
29 | + * 施解封类型 ,1 施封 2 解封 | ||
30 | + */ | ||
31 | + public String type; | ||
32 | +} |
1 | +package com.sy.model; | ||
2 | + | ||
3 | +/** | ||
4 | + * 关锁通知响应实体 | ||
5 | + */ | ||
6 | +public class LockFeignResponse { | ||
7 | + //接口成功失败标识 | ||
8 | + public boolean success; | ||
9 | + //返回码 0 成功,-1失败 | ||
10 | + public Integer code; | ||
11 | + //返回对象实体 | ||
12 | + public Object data; | ||
13 | + //返回信息描述 | ||
14 | + public String message; | ||
15 | + | ||
16 | + public LockFeignResponse(boolean success, Integer code) { | ||
17 | + this.success = success; | ||
18 | + this.code = code; | ||
19 | + } | ||
20 | + | ||
21 | + public LockFeignResponse() { | ||
22 | + } | ||
23 | +} |
src/main/java/com/sy/model/NoticeLock.java
0 → 100644
1 | +package com.sy.model; | ||
2 | + | ||
3 | +/** | ||
4 | + * 关锁通知实体 | ||
5 | + */ | ||
6 | +public class NoticeLock { | ||
7 | + //二维码 | ||
8 | + public String barcode; | ||
9 | + //车牌号 | ||
10 | + public String vehicleNo; | ||
11 | + //关锁号 | ||
12 | + public String lockNo; | ||
13 | + //场站编号 | ||
14 | + public String areaId; | ||
15 | + //通道编号 | ||
16 | + public String chnlNo; | ||
17 | + //1 施封,2解封,施解封类型 | ||
18 | + public String type; | ||
19 | +} |
1 | +package com.sy.response; | ||
2 | + | ||
3 | +import lombok.Data; | ||
4 | + | ||
5 | +import java.io.Serializable; | ||
6 | + | ||
7 | +/** | ||
8 | + * @author 子诚 | ||
9 | + * Description:返回结果封装类 | ||
10 | + * 时间:2020/7/01 10:06 | ||
11 | + */ | ||
12 | +@Data | ||
13 | +public class ResultJson<T> implements Serializable { | ||
14 | + | ||
15 | + private static final long serialVersionUID = 1L; | ||
16 | + | ||
17 | + /** | ||
18 | + * 响应业务状态,默认为200 | ||
19 | + */ | ||
20 | + private String code; | ||
21 | + | ||
22 | + /** | ||
23 | + * 响应消息 | ||
24 | + */ | ||
25 | + private String msg; | ||
26 | + | ||
27 | + /** | ||
28 | + * 错误消息内容 | ||
29 | + */ | ||
30 | + private String error; | ||
31 | + | ||
32 | + /** | ||
33 | + * 数据总条数 | ||
34 | + */ | ||
35 | + private Integer total; | ||
36 | + | ||
37 | + /** | ||
38 | + * 响应数据 | ||
39 | + */ | ||
40 | + private T data; | ||
41 | + | ||
42 | + /** | ||
43 | + * JWT令牌 | ||
44 | + */ | ||
45 | + private String jwtToken; | ||
46 | + | ||
47 | + | ||
48 | + /** | ||
49 | + * 无参,构造方法 | ||
50 | + */ | ||
51 | + public ResultJson() | ||
52 | + { | ||
53 | + } | ||
54 | + | ||
55 | + | ||
56 | + /** | ||
57 | + * 定义有参构造器 | ||
58 | + * | ||
59 | + * @param code 响应状态 | ||
60 | + * @param msg 响应消息 | ||
61 | + */ | ||
62 | + public ResultJson(String code, String msg) | ||
63 | + { | ||
64 | + this.code = code; | ||
65 | + this.msg = msg; | ||
66 | + } | ||
67 | + | ||
68 | + /** | ||
69 | + * 定义有参构造器 | ||
70 | + * | ||
71 | + * @param code 响应状态 | ||
72 | + * @param msg 响应消息 | ||
73 | + * @param data 响应数据 | ||
74 | + */ | ||
75 | + public ResultJson(String code, String msg, T data) | ||
76 | + { | ||
77 | + this.code = code; | ||
78 | + this.msg = msg; | ||
79 | + this.data = data; | ||
80 | + } | ||
81 | + | ||
82 | + public ResultJson(String code, String msg, String error) | ||
83 | + { | ||
84 | + this.code = code; | ||
85 | + this.msg = msg; | ||
86 | + this.error = error; | ||
87 | + } | ||
88 | + | ||
89 | + public ResultJson(String code, String msg, T data, Integer total) | ||
90 | + { | ||
91 | + this.code = code; | ||
92 | + this.msg = msg; | ||
93 | + this.data = data; | ||
94 | + this.total = total; | ||
95 | + } | ||
96 | + | ||
97 | + /** | ||
98 | + * 定义静态、成功方法(重载) | ||
99 | + * | ||
100 | + * @return 成功(没有响应数据) | ||
101 | + */ | ||
102 | + public static ResultJson success() | ||
103 | + { | ||
104 | + return new ResultJson<>("200", "success"); | ||
105 | + } | ||
106 | + | ||
107 | + public static ResultJson success(String msg) | ||
108 | + { | ||
109 | + return new ResultJson<>("200", msg); | ||
110 | + } | ||
111 | + | ||
112 | + | ||
113 | + /** | ||
114 | + * 定义静态、成功方法(重载) | ||
115 | + * | ||
116 | + * @return 成功(响应数据) | ||
117 | + */ | ||
118 | + public static ResultJson success(Object data) | ||
119 | + { | ||
120 | + return new ResultJson<>("200", "success", data); | ||
121 | + } | ||
122 | + | ||
123 | + /** | ||
124 | + * 定义静态、成功方法(重载) | ||
125 | + * | ||
126 | + * @return 成功(响应数据) | ||
127 | + */ | ||
128 | + public static ResultJson success(String message, Object data) | ||
129 | + { | ||
130 | + return new ResultJson<>("200", message, data); | ||
131 | + } | ||
132 | +} |
1 | +package com.sy.service; | ||
2 | + | ||
3 | +import com.sy.model.GatherInfo; | ||
4 | + | ||
5 | +/** | ||
6 | + * 关锁业务接口 | ||
7 | + * @author mrz | ||
8 | + */ | ||
9 | +public interface CustomsLockService { | ||
10 | + | ||
11 | + /** | ||
12 | + * 上关锁通知 | ||
13 | + */ | ||
14 | + void lockNotice(); | ||
15 | + | ||
16 | + /** | ||
17 | + * 解关锁通知 | ||
18 | + */ | ||
19 | + void unLockNotice(); | ||
20 | + | ||
21 | + /** | ||
22 | + * 关锁通知消息缓存 | ||
23 | + * key为二维码 | ||
24 | + * value 为GatherInfo | ||
25 | + */ | ||
26 | + void cacheWrite(GatherInfo info); | ||
27 | + | ||
28 | + /** | ||
29 | + * 读取关锁消息缓存 | ||
30 | + * 关锁回调处理 | ||
31 | + */ | ||
32 | + GatherInfo cacheRead(String barcode); | ||
33 | + | ||
34 | + /** | ||
35 | + * 回调读取缓存,继续处理抬杆业务 | ||
36 | + */ | ||
37 | + void localGatherInfoHandle(GatherInfo info); | ||
38 | + | ||
39 | + /** | ||
40 | + * 判断是否需要通知 | ||
41 | + * 判定要素 | ||
42 | + * 1. 流转申请携带关锁号-这个判定取消 | ||
43 | + * 2. 业务类型为分拨业务或者调拨业务 | ||
44 | + * 3. 场站含综保区不涉及关锁 | ||
45 | + * 4. 流转申请中的货物有单证又是多场站,多场站又不包含综保区必须为关锁业务 | ||
46 | + * 5. 顺丰上锁通知的问题 | ||
47 | + * @param info 车辆过卡信息 | ||
48 | + * @return true 需要通知,走关锁业务 | ||
49 | + */ | ||
50 | + boolean lockNoticeCheck(GatherInfo info); | ||
51 | + | ||
52 | + /** | ||
53 | + * 是否上锁通知判定 | ||
54 | + * @return | ||
55 | + */ | ||
56 | + boolean lockCheck(GatherInfo info); | ||
57 | + | ||
58 | + /** | ||
59 | + * 是否解锁通知判定 | ||
60 | + * @param info | ||
61 | + * @return | ||
62 | + */ | ||
63 | + boolean unLockCheck(GatherInfo info); | ||
64 | +} |
@@ -45,4 +45,15 @@ public interface LandBusListService { | @@ -45,4 +45,15 @@ public interface LandBusListService { | ||
45 | */ | 45 | */ |
46 | LandBusinessTypeList getLandBusinessTypeListByGather(GatherInfo info); | 46 | LandBusinessTypeList getLandBusinessTypeListByGather(GatherInfo info); |
47 | 47 | ||
48 | + List<LandBusinessTypeList> getLandBusinessTypeListsByGather(GatherInfo info); | ||
49 | + | ||
50 | + /** | ||
51 | + * 首次离场查询 | ||
52 | + * @param barcode 二维码 | ||
53 | + * @param trailerFrameNo 车牌 | ||
54 | + * @param turnoverflag 进出标识 | ||
55 | + * @return 0 代表首次离场,大于0代表非首次离场已经产生过离场记录 | ||
56 | + */ | ||
57 | + int selectFirstLeave(String trailerFrameNo, String barcode, String turnoverflag); | ||
58 | + | ||
48 | } | 59 | } |
1 | +package com.sy.service.feigin; | ||
2 | + | ||
3 | +import com.sy.model.LockFeignResponse; | ||
4 | +import com.sy.model.NoticeLock; | ||
5 | +import feign.hystrix.FallbackFactory; | ||
6 | +import lombok.extern.slf4j.Slf4j; | ||
7 | +import org.springframework.stereotype.Component; | ||
8 | + | ||
9 | +/** | ||
10 | + * @author mrz | ||
11 | + */ | ||
12 | +@Component | ||
13 | +@Slf4j | ||
14 | +public class LockFeignFallBackFactory implements FallbackFactory<LockFeignService> { | ||
15 | + @Override | ||
16 | + public LockFeignService create(Throwable throwable) { | ||
17 | + log.error("调用关锁通知接口异常",throwable); | ||
18 | + return new LockFeignService() { | ||
19 | + @Override | ||
20 | + public LockFeignResponse noticeLock(NoticeLock noticeLock) { | ||
21 | + return new LockFeignResponse(false,-1); | ||
22 | + } | ||
23 | + }; | ||
24 | + } | ||
25 | +} |
1 | +package com.sy.service.feigin; | ||
2 | + | ||
3 | + | ||
4 | +import com.sy.model.LockFeignResponse; | ||
5 | +import com.sy.model.NoticeLock; | ||
6 | +import org.springframework.cloud.openfeign.FeignClient; | ||
7 | +import org.springframework.stereotype.Component; | ||
8 | +import org.springframework.web.bind.annotation.PostMapping; | ||
9 | +import org.springframework.web.bind.annotation.RequestBody; | ||
10 | + | ||
11 | +import java.util.Map; | ||
12 | + | ||
13 | +/** | ||
14 | + * 关锁通知接口 | ||
15 | + * @author mrz | ||
16 | + */ | ||
17 | +@FeignClient(name = "LOCK-SERVER",url = "${interface.lock.url}",fallbackFactory = LockFeignFallBackFactory.class) | ||
18 | +public interface LockFeignService { | ||
19 | + | ||
20 | + @PostMapping("/bizApi/noticeLock") | ||
21 | + LockFeignResponse noticeLock(@RequestBody NoticeLock noticeLock); | ||
22 | +} | ||
23 | + |
@@ -10,6 +10,7 @@ import com.sy.service.RedisService; | @@ -10,6 +10,7 @@ import com.sy.service.RedisService; | ||
10 | import lombok.extern.slf4j.Slf4j; | 10 | import lombok.extern.slf4j.Slf4j; |
11 | import org.apache.commons.lang.StringUtils; | 11 | import org.apache.commons.lang.StringUtils; |
12 | 12 | ||
13 | +import org.apache.ibatis.annotations.Param; | ||
13 | import org.springframework.beans.factory.annotation.Autowired; | 14 | import org.springframework.beans.factory.annotation.Autowired; |
14 | import org.springframework.stereotype.Service; | 15 | import org.springframework.stereotype.Service; |
15 | 16 | ||
@@ -137,7 +138,7 @@ public class LandBusListServiceImpl implements LandBusListService { | @@ -137,7 +138,7 @@ public class LandBusListServiceImpl implements LandBusListService { | ||
137 | /** | 138 | /** |
138 | * 通道对碰有了.二维码不一致怎么办? | 139 | * 通道对碰有了.二维码不一致怎么办? |
139 | */ | 140 | */ |
140 | - if (item.getAisle().equals(gatherInfo.getChnlno())){ | 141 | + if (item.getBarcode().equals(gatherInfo.getBarcode()) && item.getAisle().equals(gatherInfo.getChnlno())){ |
141 | if (item.getBarcode().equals(gatherInfo.getBarcode())){ | 142 | if (item.getBarcode().equals(gatherInfo.getBarcode())){ |
142 | log.info("车辆-{}的申请缓存信息核碰成功,通道:{}",gatherInfo.getVename(),gatherInfo.getChnlno()); | 143 | log.info("车辆-{}的申请缓存信息核碰成功,通道:{}",gatherInfo.getVename(),gatherInfo.getChnlno()); |
143 | return item; | 144 | return item; |
@@ -160,4 +161,35 @@ public class LandBusListServiceImpl implements LandBusListService { | @@ -160,4 +161,35 @@ public class LandBusListServiceImpl implements LandBusListService { | ||
160 | 161 | ||
161 | return null; | 162 | return null; |
162 | } | 163 | } |
164 | + | ||
165 | + @Override | ||
166 | + public List<LandBusinessTypeList> getLandBusinessTypeListsByGather(GatherInfo gatherInfo){ | ||
167 | + try { | ||
168 | + //通过车牌号,二维码,场站,通道号,进出类型查询进出场站申请列表 | ||
169 | + String landBusinessJson = redisService.get(gatherInfo.getVename()); | ||
170 | + List<LandBusinessTypeList> list = new ArrayList<>(); | ||
171 | + if (StringUtils.isNotEmpty(landBusinessJson)){ | ||
172 | + list = JSONArray.parseArray(landBusinessJson,LandBusinessTypeList.class); | ||
173 | + //4. 若查询结果为null,返回无相对应进出场申请 | ||
174 | + if (list == null || list.isEmpty()) { | ||
175 | + log.error(gatherInfo.getVename()+"无相对应进出场申请"); | ||
176 | + return null; | ||
177 | + } | ||
178 | + return list; | ||
179 | + }else { | ||
180 | + log.error("未找到车辆-{}的申请缓存信息",gatherInfo.getVename()); | ||
181 | + log.info("未找到车辆-{}的申请缓存信息,或者流转已超期失效",gatherInfo.getVename()); | ||
182 | + return null; | ||
183 | + } | ||
184 | + }catch (Exception e){ | ||
185 | + log.error("{}获取流转缓存异常",gatherInfo.getVename(),e); | ||
186 | + return null; | ||
187 | + } | ||
188 | + } | ||
189 | + | ||
190 | + @Override | ||
191 | + public int selectFirstLeave(String trailerFrameNo, String barcode, String turnoverflag){ | ||
192 | + return listMapper.selectFirstLeave(trailerFrameNo, barcode, turnoverflag); | ||
193 | + } | ||
194 | + | ||
163 | } | 195 | } |
1 | +package com.sy.service.lock; | ||
2 | + | ||
3 | +import com.alibaba.fastjson.JSONObject; | ||
4 | +import com.sy.mapper.LandBusinessTypeListMapper; | ||
5 | +import com.sy.mapper.LandListDao; | ||
6 | +import com.sy.model.GatherInfo; | ||
7 | +import com.sy.model.LAND_BUSINEESTYPE_LIST_INFO; | ||
8 | +import com.sy.model.LandBusinessTypeList; | ||
9 | +import com.sy.model.LandList; | ||
10 | +import com.sy.service.CustomsLockService; | ||
11 | +import com.sy.service.LandBusListService; | ||
12 | +import com.sy.service.RedisService; | ||
13 | +import com.sy.service.impl.GatherInfoHandle; | ||
14 | +import lombok.extern.slf4j.Slf4j; | ||
15 | +import org.apache.commons.lang.StringUtils; | ||
16 | +import org.springframework.beans.factory.annotation.Autowired; | ||
17 | +import org.springframework.stereotype.Service; | ||
18 | + | ||
19 | +import javax.annotation.Resource; | ||
20 | +import java.util.List; | ||
21 | +import java.util.stream.Collectors; | ||
22 | + | ||
23 | +/** | ||
24 | + * 关锁业务处理 | ||
25 | + * @author mrz | ||
26 | + */ | ||
27 | +@Slf4j | ||
28 | +@Service | ||
29 | +public class CustomsLockServiceImpl implements CustomsLockService { | ||
30 | + | ||
31 | + @Resource | ||
32 | + private LandListDao landListDao; | ||
33 | + | ||
34 | + @Autowired | ||
35 | + private RedisService redisService; | ||
36 | + | ||
37 | + @Autowired | ||
38 | + private LandBusListService landBusListService; | ||
39 | + | ||
40 | + @Resource | ||
41 | + private LandBusinessTypeListMapper landBusinessTypeListMapper; | ||
42 | + | ||
43 | + /** | ||
44 | + * 缓存关锁相关前缀 | ||
45 | + */ | ||
46 | + private static String LOCK_PRE="LOCK-"; | ||
47 | + | ||
48 | + @Override | ||
49 | + public void lockNotice() { | ||
50 | + | ||
51 | + } | ||
52 | + | ||
53 | + @Override | ||
54 | + public void unLockNotice() { | ||
55 | + | ||
56 | + } | ||
57 | + | ||
58 | + @Override | ||
59 | + public void cacheWrite(GatherInfo info) { | ||
60 | + redisService.set(LOCK_PRE+info.getBarcode(), | ||
61 | + JSONObject.toJSONString(info), | ||
62 | + 60*60*6); | ||
63 | + } | ||
64 | + | ||
65 | + @Override | ||
66 | + public GatherInfo cacheRead(String barcode) { | ||
67 | + String jsonStr = redisService.get(LOCK_PRE+barcode); | ||
68 | + if (StringUtils.isNotEmpty(jsonStr)){ | ||
69 | + GatherInfo gatherInfo = JSONObject.parseObject(jsonStr, GatherInfo.class); | ||
70 | + return gatherInfo; | ||
71 | + } | ||
72 | + return null; | ||
73 | + } | ||
74 | + | ||
75 | + @Override | ||
76 | + public void localGatherInfoHandle(GatherInfo gatherInfo) { | ||
77 | + GatherInfoHandle gatherInfoHandle = new GatherInfoHandle(); | ||
78 | + gatherInfoHandle.handel(gatherInfo); | ||
79 | + } | ||
80 | + | ||
81 | + @Override | ||
82 | + public boolean lockNoticeCheck(GatherInfo info) { | ||
83 | + if (info!=null && StringUtils.isNotEmpty(info.getBarcode())) { | ||
84 | + /** | ||
85 | + * 申请业务类型检查 | ||
86 | + * 调拨业务及分拨业务装载货物为单证的,必须有关锁号 | ||
87 | + * 就算申请信息里面没关锁号也要通知 | ||
88 | + */ | ||
89 | + LandBusinessTypeList landBusinessTypeList = landBusListService.getLandBusinessTypeListByGather(info); | ||
90 | + if (landBusinessTypeList!=null){ | ||
91 | + if ("调拨业务".equals(landBusinessTypeList.getBusinesstype()) || "分拨业务".equals(landBusinessTypeList.getBusinesstype())) { | ||
92 | + //综保区场站及内三不通知 | ||
93 | + if ("4600329012".equals(landBusinessTypeList.getEndstation()) || "4612199001".equals(landBusinessTypeList.getEndstation())) { | ||
94 | + log.info("[LOCK-CHECK]-综保区及内三场站不处理关锁业务,当前场站:{}",landBusinessTypeList.getEndstation()); | ||
95 | + return false; | ||
96 | + //场站检查,todo:快邮场站特殊判定 | ||
97 | + }else { | ||
98 | + return true; | ||
99 | + /** | ||
100 | + * 单证验证-取消 | ||
101 | + */ | ||
102 | +// List<LAND_BUSINEESTYPE_LIST_INFO> land_busineestype_list_infos = landBusinessTypeList.getLandBusineestypeListInfoList(); | ||
103 | +// if (!land_busineestype_list_infos.isEmpty()){ | ||
104 | +// LAND_BUSINEESTYPE_LIST_INFO list_info = land_busineestype_list_infos.stream().parallel() | ||
105 | +// .filter(item -> "B".equals(item.getExt4())) | ||
106 | +// .findAny().orElse(null); | ||
107 | +// | ||
108 | +// //包含单证 | ||
109 | +// if (list_info!=null){ | ||
110 | +// log.info("[LOCK-CHECK]-包含单证,开始关锁通知"); | ||
111 | +// return true; | ||
112 | +// } | ||
113 | +// } | ||
114 | + } | ||
115 | + } | ||
116 | + }else { | ||
117 | + log.info("[LOCK-CHECK]-无对应进出场申请"); | ||
118 | + return false; | ||
119 | + } | ||
120 | + } | ||
121 | + return false; | ||
122 | + } | ||
123 | + | ||
124 | + @Override | ||
125 | + public boolean lockCheck(GatherInfo info) { | ||
126 | + int e = landBusListService.selectFirstLeave(info.getVename(), info.getBarcode(), "E"); | ||
127 | + if (e==0){ | ||
128 | + //首次离场,通知关锁接口 上锁 | ||
129 | + log.info("[UNLOCK-NOTICE]-上锁通知"); | ||
130 | + return true; | ||
131 | + } | ||
132 | + | ||
133 | + return false; | ||
134 | + } | ||
135 | + | ||
136 | + | ||
137 | + | ||
138 | + @Override | ||
139 | + public boolean unLockCheck(GatherInfo info){ | ||
140 | + | ||
141 | + //从缓存获取通道流转列表信息 | ||
142 | + List<LandBusinessTypeList> landBusinessTypeListsByGather = landBusListService.getLandBusinessTypeListsByGather(info); | ||
143 | + List<LandBusinessTypeList> temp = landBusinessTypeListsByGather; | ||
144 | + //已经过场的记录 | ||
145 | + List<LandBusinessTypeList> landBusinessTypeLists = landBusinessTypeListMapper.selectHistory(info.getVename(), info.getBarcode()); | ||
146 | + | ||
147 | + for (LandBusinessTypeList formItem : landBusinessTypeLists) { | ||
148 | + List<LandBusinessTypeList> r = landBusinessTypeListsByGather.stream().filter(item -> { | ||
149 | + if (item.getEndstation().equals(formItem.getEndstation())) { | ||
150 | + log.info("[Lock-Stream-loop]-缓存元素场站:[{}],已出入记录场站:[{}]-核销判定对碰成功", item.getEndstation(), formItem.getEndstation()); | ||
151 | + return true; | ||
152 | + } else { | ||
153 | + return false; | ||
154 | + } | ||
155 | + }).collect(Collectors.toList()); | ||
156 | + temp.removeAll(r); | ||
157 | + } | ||
158 | + | ||
159 | + | ||
160 | + //筛选出未入场的申请 | ||
161 | + List<String> stationList = temp.stream().map(LandBusinessTypeList::getEndstation).distinct().collect(Collectors.toList()); | ||
162 | + log.info("[unLockCheck]-未走的流转申请:{}",temp.size()); | ||
163 | + | ||
164 | + //判定是否还剩最后一个场站未入场 | ||
165 | + if (stationList.size() == 1){ | ||
166 | + //场站信息 与 当前GatherInfo信息又对的上 | ||
167 | + if (stationList.get(0).equals(info.getAreaid())) { | ||
168 | + //通知解锁 | ||
169 | + log.info("[UNLOCK-NOTICE]-解锁通知"); | ||
170 | + return true; | ||
171 | + } | ||
172 | + } | ||
173 | + | ||
174 | + return false; | ||
175 | + } | ||
176 | +} |
@@ -3,14 +3,14 @@ package com.sy.service.router; | @@ -3,14 +3,14 @@ package com.sy.service.router; | ||
3 | import com.alibaba.fastjson.JSON; | 3 | import com.alibaba.fastjson.JSON; |
4 | import com.sy.bwAnalysis.GatherInfoAnalysis; | 4 | import com.sy.bwAnalysis.GatherInfoAnalysis; |
5 | import com.sy.bwAssist.Message; | 5 | import com.sy.bwAssist.Message; |
6 | +import com.sy.mapper.LandListDao; | ||
6 | import com.sy.mapper.LandRouterConfigDao; | 7 | import com.sy.mapper.LandRouterConfigDao; |
7 | -import com.sy.model.G2Bean; | ||
8 | -import com.sy.model.GatherInfo; | ||
9 | -import com.sy.model.LandBusinessTypeList; | ||
10 | -import com.sy.model.LandRouterConfig; | 8 | +import com.sy.model.*; |
11 | import com.sy.service.CommandLogService; | 9 | import com.sy.service.CommandLogService; |
10 | +import com.sy.service.CustomsLockService; | ||
12 | import com.sy.service.LandBusListService; | 11 | import com.sy.service.LandBusListService; |
13 | import com.sy.service.RedisService; | 12 | import com.sy.service.RedisService; |
13 | +import com.sy.service.feigin.LockFeignService; | ||
14 | import com.sy.service.impl.GatherInfoHandle; | 14 | import com.sy.service.impl.GatherInfoHandle; |
15 | import com.sy.socket.CommandClient; | 15 | import com.sy.socket.CommandClient; |
16 | import lombok.extern.slf4j.Slf4j; | 16 | import lombok.extern.slf4j.Slf4j; |
@@ -19,6 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired; | @@ -19,6 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired; | ||
19 | import org.springframework.stereotype.Service; | 19 | import org.springframework.stereotype.Service; |
20 | 20 | ||
21 | import javax.annotation.Resource; | 21 | import javax.annotation.Resource; |
22 | +import java.net.ConnectException; | ||
22 | import java.util.List; | 23 | import java.util.List; |
23 | 24 | ||
24 | /** | 25 | /** |
@@ -49,6 +50,24 @@ public class MessageRouterX21 implements MessageRouter { | @@ -49,6 +50,24 @@ public class MessageRouterX21 implements MessageRouter { | ||
49 | @Autowired | 50 | @Autowired |
50 | private CommandLogService commandLogService; | 51 | private CommandLogService commandLogService; |
51 | 52 | ||
53 | + @Autowired | ||
54 | + private CustomsLockService customsLockService; | ||
55 | + | ||
56 | + @Autowired | ||
57 | + private LockFeignService lockFeignService; | ||
58 | + | ||
59 | + @Resource | ||
60 | + private LandListDao landListDao; | ||
61 | + | ||
62 | + /** | ||
63 | + * 入场标识 | ||
64 | + */ | ||
65 | + private static String IN_TYPE="I"; | ||
66 | + /** | ||
67 | + * 离场标识 | ||
68 | + */ | ||
69 | + private static String OUT_TYPE="E"; | ||
70 | + | ||
52 | @Override | 71 | @Override |
53 | public void route(Message message) { | 72 | public void route(Message message) { |
54 | log.info("处理X21:gatherInfo,[switch]-G2开关状态:[{}]",g2Bean.getOnoff()); | 73 | log.info("处理X21:gatherInfo,[switch]-G2开关状态:[{}]",g2Bean.getOnoff()); |
@@ -202,14 +221,73 @@ public class MessageRouterX21 implements MessageRouter { | @@ -202,14 +221,73 @@ public class MessageRouterX21 implements MessageRouter { | ||
202 | * 本地处理 | 221 | * 本地处理 |
203 | */ | 222 | */ |
204 | private void X21Local(GatherInfo info){ | 223 | private void X21Local(GatherInfo info){ |
224 | + //先判定关锁业务 | ||
225 | + if (lockHandle(info)) { | ||
226 | + log.info("[{}]-关锁通知,等待回调",info.getBarcode()); | ||
227 | + }else { | ||
205 | GatherInfoHandle gatherInfoHandle = new GatherInfoHandle(); | 228 | GatherInfoHandle gatherInfoHandle = new GatherInfoHandle(); |
206 | gatherInfoHandle.handel(info); | 229 | gatherInfoHandle.handel(info); |
207 | } | 230 | } |
208 | 231 | ||
232 | + } | ||
233 | + | ||
209 | /** | 234 | /** |
210 | * 车辆过卡指令日志记录 | 235 | * 车辆过卡指令日志记录 |
211 | */ | 236 | */ |
212 | private void record(GatherInfo info,boolean result,String reason,LandBusinessTypeList landBusinessTypeList){ | 237 | private void record(GatherInfo info,boolean result,String reason,LandBusinessTypeList landBusinessTypeList){ |
213 | commandLogService.commandlog(info,result,reason,landBusinessTypeList,null,0.0,0.0,0.0,0.0); | 238 | commandLogService.commandlog(info,result,reason,landBusinessTypeList,null,0.0,0.0,0.0,0.0); |
214 | } | 239 | } |
240 | + | ||
241 | + //关锁施解封通知判定 | ||
242 | + private boolean lockHandle(GatherInfo info){ | ||
243 | + //需要关锁业务通知 | ||
244 | + if (customsLockService.lockNoticeCheck(info)){ | ||
245 | + | ||
246 | + /** | ||
247 | + * 关锁号申请检查 | ||
248 | + * 根据二维码查申请是否有关锁信息,没有查到实体返回null | ||
249 | + */ | ||
250 | + LandList landList = landListDao.selectLockInfoByBarcode(info.getBarcode()); | ||
251 | + if (landList!=null && StringUtils.isNotEmpty(landList.getLockNum())) { | ||
252 | + log.info("[LOCK-CHECK]-流转申请携带关锁,二维码:{}",info.getBarcode()); | ||
253 | + | ||
254 | + NoticeLock noticeLock = new NoticeLock(); | ||
255 | + noticeLock.barcode = info.getBarcode(); | ||
256 | + noticeLock.areaId = info.getAreaid(); | ||
257 | + noticeLock.chnlNo = info.getChnlno(); | ||
258 | + noticeLock.vehicleNo = info.getVename(); | ||
259 | + | ||
260 | + //1. 判定是上锁通知还是解锁通知 | ||
261 | + if (OUT_TYPE.equals(info.getIetype()) && customsLockService.lockCheck(info)) { | ||
262 | + //写入缓存 | ||
263 | + customsLockService.cacheWrite(info); | ||
264 | + //接口通知 | ||
265 | + noticeLock.lockNo =landList.getLockNum(); | ||
266 | + noticeLock.type = "1"; | ||
267 | + LockFeignResponse lockFeignResponse = lockFeignService.noticeLock(noticeLock); | ||
268 | + log.info("[LOCK-API-RSP]-关锁通知接口返回,code:{},message:{},success:{}",lockFeignResponse.code,lockFeignResponse.message,lockFeignResponse.success); | ||
269 | + record(info,false,"关锁施封通知中,等待下一步指令",null); | ||
270 | + return true; | ||
271 | + }else { | ||
272 | + if (IN_TYPE.equals(info.getIetype()) && customsLockService.unLockCheck(info)) { | ||
273 | + customsLockService.cacheWrite(info); | ||
274 | + | ||
275 | + //接口通知 | ||
276 | + noticeLock.lockNo =landList.getLockNum(); | ||
277 | + noticeLock.type = "2"; | ||
278 | + LockFeignResponse lockFeignResponse = lockFeignService.noticeLock(noticeLock); | ||
279 | + log.info("[LOCK-API-RSP]-关锁通知接口返回,code:{},message:{},success:{}",lockFeignResponse.code,lockFeignResponse.message,lockFeignResponse.success); | ||
280 | + record(info,false,"关锁解封通知中,等待下一步指令",null); | ||
281 | + return true; | ||
282 | + } | ||
283 | + } | ||
284 | + }else { | ||
285 | + CommandClient.Client(info,"流转业务-未申请关锁号"); | ||
286 | + record(info,false,"业务异常:流转业务-未申请关锁号",null); | ||
287 | + //这里需要返回true,是关锁业务,但是中断,不抬杆不放行,给予关锁业务异常通知 | ||
288 | + return true; | ||
289 | + } | ||
290 | + } | ||
291 | + return false; | ||
292 | + } | ||
215 | } | 293 | } |
@@ -84,6 +84,25 @@ | @@ -84,6 +84,25 @@ | ||
84 | and TURNOVERFLAG = #{turnoverflag,jdbcType=VARCHAR} | 84 | and TURNOVERFLAG = #{turnoverflag,jdbcType=VARCHAR} |
85 | AND AISLEWT IS NOT NULL AND REMARK IS NOT NULL | 85 | AND AISLEWT IS NOT NULL AND REMARK IS NOT NULL |
86 | </select> | 86 | </select> |
87 | + <select id="selectFirstLeave" parameterType="java.lang.String" resultType="java.lang.Integer"> | ||
88 | + select | ||
89 | + count(BARCODE) | ||
90 | + from land_businesstype_list | ||
91 | + where | ||
92 | + BARCODE = #{barcode,jdbcType=VARCHAR} | ||
93 | + and TRAILER_FRAME_NO = #{trailerFrameNo,jdbcType=VARCHAR} | ||
94 | + and TURNOVERFLAG = 'E' | ||
95 | + and ISVALID = '1' | ||
96 | + </select> | ||
97 | + <select id="selectHistory" parameterType="java.lang.String" resultMap="BaseResultMap"> | ||
98 | + select | ||
99 | + <include refid="Base_Column_List" /> | ||
100 | + from land_businesstype_list | ||
101 | + where | ||
102 | + BARCODE = #{barcode,jdbcType=VARCHAR} | ||
103 | + and TRAILER_FRAME_NO = #{trailerFrameNo,jdbcType=VARCHAR} | ||
104 | + and ISVALID = '1' | ||
105 | + </select> | ||
87 | <update id="updateisvalid" parameterType="java.lang.String"> | 106 | <update id="updateisvalid" parameterType="java.lang.String"> |
88 | update land_businesstype_list set ISVALID = '1' where | 107 | update land_businesstype_list set ISVALID = '1' where |
89 | TRAILER_FRAME_NO = #{trailerFrameNo,jdbcType=VARCHAR} | 108 | TRAILER_FRAME_NO = #{trailerFrameNo,jdbcType=VARCHAR} |
@@ -44,6 +44,7 @@ | @@ -44,6 +44,7 @@ | ||
44 | <result column="ORGANIZATION_CODE" jdbcType="VARCHAR" property="organizationCode" /> | 44 | <result column="ORGANIZATION_CODE" jdbcType="VARCHAR" property="organizationCode" /> |
45 | <result column="DECLARE_PERSONNEL_NUMBERS" jdbcType="VARCHAR" property="declarePersonnelNumbers" /> | 45 | <result column="DECLARE_PERSONNEL_NUMBERS" jdbcType="VARCHAR" property="declarePersonnelNumbers" /> |
46 | <result column="MODE_TRANSPORTATION" jdbcType="VARCHAR" property="modeTransportation" /> | 46 | <result column="MODE_TRANSPORTATION" jdbcType="VARCHAR" property="modeTransportation" /> |
47 | + <result column="LOCK_NUM" jdbcType="VARCHAR" property="lockNum" /> | ||
47 | </resultMap> | 48 | </resultMap> |
48 | <sql id="Base_Column_List"> | 49 | <sql id="Base_Column_List"> |
49 | id, MASSAGE_ID, TRAILER_FRAME_NO, TRAILER_LICENSE_NO, MASTER_LIST, PRODECT_TIME, | 50 | id, MASSAGE_ID, TRAILER_FRAME_NO, TRAILER_LICENSE_NO, MASTER_LIST, PRODECT_TIME, |
@@ -60,6 +61,13 @@ | @@ -60,6 +61,13 @@ | ||
60 | from land_list | 61 | from land_list |
61 | where id = #{id,jdbcType=VARCHAR} | 62 | where id = #{id,jdbcType=VARCHAR} |
62 | </select> | 63 | </select> |
64 | + <select id="selectLockInfoByBarcode" parameterType="java.lang.String" resultMap="BaseResultMap"> | ||
65 | + select | ||
66 | + LOCK_NUM | ||
67 | + from land_list | ||
68 | + where BARCODE = #{barcode,jdbcType=VARCHAR} | ||
69 | + and ISVALID = '0' | ||
70 | + </select> | ||
63 | <delete id="deleteByPrimaryKey" parameterType="java.lang.String"> | 71 | <delete id="deleteByPrimaryKey" parameterType="java.lang.String"> |
64 | delete from land_list | 72 | delete from land_list |
65 | where id = #{id,jdbcType=VARCHAR} | 73 | where id = #{id,jdbcType=VARCHAR} |
-
请 注册 或 登录 后发表评论