Commit 04d072940106e9a3758da840e9f441ab32744ecf

Authored by 肖超群
2 parents ade2759e b1503e5a

Merge branch 'develop4' of http://www.huahengrobot.com:90/wms/wms4 into develop4

ant-design-vue-jeecg/src/views/system/UserList.vue
... ... @@ -22,8 +22,6 @@
22 22 </a-select>
23 23 </a-form-item>
24 24 </a-col>
25   -
26   -
27 25 <template v-if="toggleSearchStatus">
28 26 <a-col :md="6" :sm="8">
29 27 <a-form-item label="真实名字">
... ... @@ -58,7 +56,6 @@
58 56 </a>
59 57 </span>
60 58 </a-col>
61   -
62 59 </a-row>
63 60 </a-form>
64 61 </div>
... ... @@ -106,6 +103,7 @@
106 103 </div>
107 104  
108 105 <a-table
  106 + :scroll="{x: 1200}"
109 107 ref="table"
110 108 bordered
111 109 size="middle"
... ... @@ -117,7 +115,7 @@
117 115 :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
118 116 @change="handleTableChange">
119 117  
120   - <template slot="avatarslot" slot-scope="text, record, index">
  118 + <template slot="avatarslot" slot-scope="text, record">
121 119 <div class="anty-img-wrap">
122 120 <a-avatar shape="square" :src="getAvatarView(record.avatar)" icon="user"/>
123 121 </div>
... ... @@ -240,7 +238,7 @@ export default {
240 238 {
241 239 title: '头像',
242 240 align: "center",
243   - width: 120,
  241 + width: 100,
244 242 dataIndex: 'avatar',
245 243 scopedSlots: {customRender: "avatarslot"}
246 244 },
... ... @@ -273,7 +271,6 @@ export default {
273 271 {
274 272 title: '负责部门',
275 273 align: "center",
276   - width: 180,
277 274 dataIndex: 'departIds_dictText'
278 275 },
279 276 {
... ... @@ -285,9 +282,10 @@ export default {
285 282 {
286 283 title: '操作',
287 284 dataIndex: 'action',
  285 + fixed: 'right',
288 286 scopedSlots: {customRender: 'action'},
289 287 align: "center",
290   - width: 170
  288 + width: 150
291 289 }
292 290  
293 291 ],
... ...
huaheng-wms-core/src/main/java/org/jeecg/JeecgSystemApplication.java
1 1 package org.jeecg;
2 2  
  3 +import java.net.Inet4Address;
  4 +import java.net.Inet6Address;
3 5 import java.net.InetAddress;
4 6 import java.net.NetworkInterface;
  7 +import java.net.SocketException;
5 8 import java.net.UnknownHostException;
6 9 import java.util.Enumeration;
7 10  
  11 +import javax.transaction.SystemException;
  12 +
8 13 import org.jeecg.common.util.oConvertUtils;
9 14 import org.springframework.boot.SpringApplication;
10 15 //import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
... ... @@ -32,7 +37,7 @@ public class JeecgSystemApplication extends SpringBootServletInitializer {
32 37 return application.sources(JeecgSystemApplication.class);
33 38 }
34 39  
35   - public static void main(String[] args) throws UnknownHostException {
  40 + public static void main(String[] args) throws SystemException, UnknownHostException {
36 41 ConfigurableApplicationContext application = SpringApplication.run(JeecgSystemApplication.class, args);
37 42 Environment env = application.getEnvironment();
38 43 String ip = getLocalHostExactAddress().getHostAddress();
... ... @@ -46,40 +51,29 @@ public class JeecgSystemApplication extends SpringBootServletInitializer {
46 51 + "WEB External: \thttp://" + ip + ":" + port + path + "/index.html\n\t"
47 52 + "API External: \thttp://" + ip + ":" + port + path + "/\n\n\t"
48 53 + "Swagger文档: \thttp://" + ip + ":" + port + path + "/doc.html\n\n\t"
49   - + "The following profiles are active: " + profiles + "\n"
  54 + + "The following profiles are active: [" + profiles + "]\n"
50 55 + "----------------------------------------------------------");
51 56 }
52   -
  57 +
53 58 public static InetAddress getLocalHostExactAddress() {
54 59 try {
55   - InetAddress candidateAddress = null;
  60 + InetAddress inetAddress = null;
56 61  
57 62 Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
58 63 while (networkInterfaces.hasMoreElements()) {
59   - NetworkInterface iface = networkInterfaces.nextElement();
60   - // 该网卡接口下的ip会有多个,也需要一个个的遍历,找到自己所需要的
61   - for (Enumeration<InetAddress> inetAddrs = iface.getInetAddresses(); inetAddrs.hasMoreElements();) {
62   - InetAddress inetAddr = inetAddrs.nextElement();
63   - // 排除loopback回环类型地址(不管是IPv4还是IPv6 只要是回环地址都会返回true)
64   - if (!inetAddr.isLoopbackAddress()) {
65   - if (inetAddr.isSiteLocalAddress()) {
66   - // 如果是site-local地址,就是它了 就是我们要找的
67   - // ~~~~~~~~~~~~~绝大部分情况下都会在此处返回你的ip地址值~~~~~~~~~~~~~
68   - return inetAddr;
69   - }
70   -
71   - // 若不是site-local地址 那就记录下该地址当作候选
72   - if (candidateAddress == null) {
73   - candidateAddress = inetAddr;
74   - }
75   -
  64 + NetworkInterface netInterface = networkInterfaces.nextElement();
  65 + // System.out.println(netInterface.getName());
  66 + Enumeration<InetAddress> addresses = netInterface.getInetAddresses();
  67 + while (addresses.hasMoreElements()) {
  68 + InetAddress ipTmp = addresses.nextElement();
  69 + if (ipTmp != null && ipTmp instanceof Inet4Address && ipTmp.isSiteLocalAddress() && !ipTmp.isLoopbackAddress()
  70 + && ipTmp.getHostAddress().indexOf(":") == -1) {
  71 + inetAddress = ipTmp;
76 72 }
77 73 }
78 74 }
79   -
80   - // 如果出去loopback回环地之外无其它地址了,那就回退到原始方案吧
81   - return candidateAddress == null ? InetAddress.getLocalHost() : candidateAddress;
82   - } catch (Exception e) {
  75 + return inetAddress == null ? InetAddress.getLocalHost() : inetAddress;
  76 + } catch (SocketException | UnknownHostException e) {
83 77 e.printStackTrace();
84 78 }
85 79 return null;
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/location/mapper/xml/LocationMapper.xml
... ... @@ -3,24 +3,30 @@
3 3 <mapper namespace="org.jeecg.modules.wms.config.location.mapper.LocationMapper">
4 4  
5 5 <select id="getAllLocation" resultType="org.jeecg.modules.wms.config.location.entity.Location">
6   - select max(row) as row,max(icolumn) as icolumn,max(layer) as layer,max(grid) as grid from location where warehouse_code=#{warehouseCode} AND location_type_code=#{type}
  6 + SELECT max(row) as row,
  7 + max(icolumn) as icolumn,
  8 + max(layer) as layer,
  9 + max(grid) as grid
  10 + FROM location
  11 + WHERE warehouse_code = #{warehouseCode}
  12 + AND location_type_code = #{type}
7 13 </select>
  14 +
8 15 <select id="getFirstRowOfZone" resultType="java.lang.Integer">
9   - select min(row) from location where warehouse_code=#{warehouseCode} and location_type_code = #{locationType}
  16 + select min(row) from location where warehouse_code=#{warehouseCode} and location_type_code = #{locationType}
10 17 </select>
  18 +
11 19 <select id="listEmptyContainerInLocation" parameterType="org.jeecg.modules.wms.config.location.entity.Location"
12   - resultType="org.jeecg.modules.wms.config.location.entity.Location">
13   - SELECT *
14   - FROM location t
  20 + resultType="org.jeecg.modules.wms.config.location.entity.Location">
  21 + SELECT *
  22 + FROM location t
15 23 <where>
16 24 AND t.warehouse_code = #{location.warehouseCode}
17   - AND t.status='empty'
18   - AND t.container_code !=''
  25 + AND t.status = 'empty'
  26 + AND t.container_code != ''
19 27 AND t.container_code is not NULL
20   - AND t.container_code NOT in (SELECT h.container_code from task_header h WHERE status &lt; 100 AND
21   - warehouse_code=#{location.warehouseCode})
22   - and t.`code` in(select cc.location_code from container cc where cc.`status`='empty' and cc.warehouse_code
23   - =#{location.warehouseCode})
  28 + AND t.container_code NOT IN (SELECT h.container_code from task_header h WHERE status &lt; 100 AND warehouse_code = #{location.warehouseCode})
  29 + AND t.`code` IN (SELECT cc.location_code FROM container cc WHERE cc.`status`='empty' AND cc.warehouse_code = #{location.warehouseCode})
24 30 <if test="location.zoneCode != null and location.zoneCode !=''">
25 31 and t.zone_code = #{location.zoneCode}
26 32 </if>
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/controller/HuahengBaseController.java
... ... @@ -4,14 +4,10 @@ import java.util.concurrent.TimeUnit;
4 4  
5 5 import javax.annotation.Nonnull;
6 6  
7   -import org.apache.poi.ss.formula.functions.T;
8 7 import org.jeecg.common.api.vo.Result;
9   -import org.jeecg.common.system.base.controller.JeecgController;
10 8 import org.jeecg.utils.RedissonDistributedLocker;
11 9 import org.springframework.beans.factory.annotation.Autowired;
12 10  
13   -import com.baomidou.mybatisplus.extension.service.IService;
14   -
15 11 import cn.hutool.core.date.SystemClock;
16 12 import cn.hutool.core.util.StrUtil;
17 13 import lombok.extern.slf4j.Slf4j;
... ... @@ -26,7 +22,7 @@ public class HuahengBaseController {
26 22 private RedissonDistributedLocker redissonDistributedLocker;
27 23  
28 24 public interface MultiProcessListener {
29   - Result<?> doProcess();
  25 + Result<?> doProcess() throws Exception;
30 26 }
31 27  
32 28 /** 等待时间 */
... ... @@ -69,17 +65,20 @@ public class HuahengBaseController {
69 65 final boolean tryLock = redissonDistributedLocker.tryLock(fullLockKey, TimeUnit.SECONDS, WAIT_TIME, LEASE_TIME);
70 66 final long endTime = SystemClock.now();
71 67 if (!tryLock) {
72   - log.error("[{}]获取分布式锁失败,lockKey = {},耗时 {}ms", taskName, fullLockKey, endTime - startTime);
73   - throw new RuntimeException(StrUtil.format("[{}]获取分布式锁失败,lockKey = {},等待时间超出10秒", taskName, fullLockKey));
  68 + log.error("[{}] 获取分布式锁失败 lockKey = {},等待锁耗时:{}ms", taskName, fullLockKey, endTime - startTime);
  69 + throw new RuntimeException(StrUtil.format("[{}] 获取分布式锁失败 lockKey = {},等待时间超出10秒", taskName, fullLockKey));
74 70 }
75 71 // 注意:一定是获取锁成功后,才进行try{}finally{释放锁}
76 72 try {
77   - log.info("[{}]获取分布式锁成功,lockKey = {},耗时 {}ms", taskName, fullLockKey, endTime - startTime);
  73 + log.info("[{}] 开始分布式事务 lockKey = {},获取锁耗时: {}ms", taskName, fullLockKey, endTime - startTime);
78 74 result = multiProcessListener.doProcess();
79 75 } catch (Exception e) {
80   - throw new RuntimeException(StrUtil.format("[{}]执行分布式事务失败,lockKey = {}", taskName, fullLockKey), e);
  76 + final long finishTime = SystemClock.now();
  77 + throw new RuntimeException(StrUtil.format("[{}] 执行分布式事务失败 lockKey = {},事务耗时:{}ms", taskName, fullLockKey, finishTime - endTime), e);
81 78 } finally {
82 79 redissonDistributedLocker.unlock(fullLockKey);
  80 + final long finishTime = SystemClock.now();
  81 + log.info("[{}] 结束分布式事务 lockKey = {},事务耗时:{}ms", taskName, fullLockKey, finishTime - endTime);
83 82 }
84 83  
85 84 return result;
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/controller/TestController.java
1 1 package org.jeecg.modules.wms.framework.controller;
2 2  
  3 +import java.security.NoSuchAlgorithmException;
  4 +import java.security.SecureRandom;
  5 +import java.util.Date;
3 6 import java.util.Map;
4   -import java.util.concurrent.ConcurrentHashMap;
5 7  
6 8 import javax.servlet.http.HttpServletRequest;
7 9  
8 10 import org.jeecg.common.api.vo.Result;
9 11 import org.jeecg.common.aspect.annotation.AutoLog;
10   -import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptHeader;
  12 +import org.jeecg.modules.system.entity.SysDataLog;
  13 +import org.jeecg.modules.system.service.ISysDataLogService;
11 14 import org.jeecg.utils.HuahengRedisUtil;
12 15 import org.springframework.beans.factory.annotation.Autowired;
  16 +import org.springframework.transaction.annotation.Transactional;
13 17 import org.springframework.web.bind.annotation.PostMapping;
14 18 import org.springframework.web.bind.annotation.RequestBody;
15 19 import org.springframework.web.bind.annotation.RequestMapping;
... ... @@ -17,7 +21,8 @@ import org.springframework.web.bind.annotation.ResponseBody;
17 21 import org.springframework.web.bind.annotation.RestController;
18 22  
19 23 import com.alibaba.fastjson.JSON;
20   -import com.alibaba.fastjson.TypeReference;
  24 +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  25 +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
21 26  
22 27 import lombok.extern.slf4j.Slf4j;
23 28  
... ... @@ -34,43 +39,51 @@ public class TestController extends HuahengBaseController {
34 39 @Autowired
35 40 private HuahengRedisUtil redisUtil;
36 41  
  42 + @Autowired
  43 + private ISysDataLogService sysDataLogService;
  44 +
37 45 @AutoLog(value = "TestController-testRedis")
38 46 @ResponseBody
39 47 @PostMapping(value = "/testRedis")
40   - public Result<?> testRedis(@RequestBody Map<String, String> paramMap, HttpServletRequest request) throws InterruptedException {
41   -
42   -// log.info(JSON.toJSONString(paramMap));
43   - String key = "testKey";
44   - Map<String, ReceiptHeader> receiptHeaderMap = new ConcurrentHashMap<String, ReceiptHeader>();
45   - ReceiptHeader value = new ReceiptHeader();
46   - value.setCode("001");
47   - receiptHeaderMap.put("receiptHeader1", value);
48   - redisUtil.set(key, receiptHeaderMap);
49   -// Map<String, ReceiptHeader> result = redisUtil.get(key, new TypeReference<Map<String, ReceiptHeader>>() {});
50   -// log.info("redisUtil.get -> " + JSON.toJSONString(result));
  48 + public Result<?> testRedis(@RequestBody Map<String, String> paramMap, HttpServletRequest request) {
  49 +
  50 +// log.info("testRedis in paramMap:{}", JSON.toJSONString(paramMap));
  51 +// String key = "testKey";
  52 +// Map<String, ReceiptHeader> receiptHeaderMap = new ConcurrentHashMap<String, ReceiptHeader>();
  53 +// ReceiptHeader receiptHeader = new ReceiptHeader();
  54 +// receiptHeader.setCode("001");
  55 +// receiptHeaderMap.put("receiptHeaderKey", receiptHeader);
  56 +// Map<String, ReceiptHeader> value = redisUtil.getAndSet(key, receiptHeaderMap, new TypeReference<Map<String, ReceiptHeader>>() {}, 10);
51 57 // Long rxpireTime = redisUtil.getExpire(key);
52   -// log.info("rxpireTime -> " + rxpireTime);
53   -// redisUtil.expire(key, 100);
  58 +// log.info("redisUtil.getAndSet {} -> {} rxpireTime -> {}", key, JSON.toJSONString(value), rxpireTime);
  59 +//
  60 +// Thread.sleep(2000l);
  61 +// receiptHeaderMap = redisUtil.get(key, new TypeReference<Map<String, ReceiptHeader>>() {});
54 62 // rxpireTime = redisUtil.getExpire(key);
55   -// log.info("rxpireTime -> " + rxpireTime);
56   -// value.setCode("2222222222222222");
57   - redisUtil.delete(key);
58   - Map<String, ReceiptHeader> result = redisUtil.getAndSet(key, receiptHeaderMap, new TypeReference<Map<String, ReceiptHeader>>() {}, 10);
59   - Long rxpireTime = redisUtil.getExpire(key);
60   - log.info("redisUtil.get -> {} rxpireTime -> {}", JSON.toJSONString(result), rxpireTime);
61   -
62   - Thread.sleep(2000l);
63   - result = redisUtil.get(key, new TypeReference<Map<String, ReceiptHeader>>() {});
64   - rxpireTime = redisUtil.getExpire(key);
65   - log.info("redisUtil.get sleep 2s -> {} rxpireTime -> {}", JSON.toJSONString(result), rxpireTime);
66   -
67   - Long count = redisUtil.decr("countKey", 10);
68   - rxpireTime = redisUtil.getExpire("countKey");
69   - log.info("countKey decr count -> {} rxpireTime -> {}", count, rxpireTime);
70   - count = redisUtil.decr("countKey", 100);
71   - rxpireTime = redisUtil.getExpire("countKey");
72   - log.info("countKey decr count -> {} rxpireTime -> {}", count, rxpireTime);
73   -
  63 +// log.info("redisUtil.get {} sleep 2s -> {} rxpireTime -> {}", key, JSON.toJSONString(value), rxpireTime);
  64 +
  65 + Result result = handleMultiProcess("testRedis", paramMap.get("username"), new MultiProcessListener() {
  66 +
  67 + @Override
  68 + @Transactional(timeout = 10)
  69 + public Result<?> doProcess() throws Exception {
  70 + LambdaUpdateWrapper<SysDataLog> updateWrapper = new UpdateWrapper().lambda();
  71 + updateWrapper.set(SysDataLog::getUpdateTime, new Date());
  72 + updateWrapper.eq(SysDataLog::getId, 10);
  73 + Thread.sleep(1000);
  74 + sysDataLogService.update(updateWrapper);
  75 + return new Result<>();
  76 + }
  77 +
  78 + });
  79 +
  80 +// Long count = redisUtil.decr("countKey", 10);
  81 +// rxpireTime = redisUtil.getExpire("countKey");
  82 +// log.info("countKey decr count -> {} rxpireTime -> {}", count, rxpireTime);
  83 +// count = redisUtil.decr("countKey", 100);
  84 +// rxpireTime = redisUtil.getExpire("countKey");
  85 +// log.info("countKey decr count -> {} rxpireTime -> {}", count, rxpireTime);
  86 +
74 87 // Thread.sleep(2000l);
75 88 // count = redisUtil.get("countKey", Long.class);
76 89 // rxpireTime = redisUtil.getExpire("countKey");
... ... @@ -95,8 +108,11 @@ public class TestController extends HuahengBaseController {
95 108 // rxpireTime = redisUtil.getExpire("countKey");
96 109 // log.info("countKey sleep 10s get -> {} rxpireTime -> {}", count, rxpireTime);
97 110 // log.info("countKey hasKey -> {}",redisUtil.hasKey("countKey"));
98   -
99 111  
100   - return Result.OK(count);
  112 + return result;
  113 + }
  114 +
  115 + private int generateInt(int min, int max) throws NoSuchAlgorithmException {
  116 + return (int)(min + SecureRandom.getInstanceStrong().nextDouble() * (max - min + 1));
101 117 }
102 118 }
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/home/service/impl/HomePageViewServiceImpl.java
... ... @@ -4,6 +4,7 @@ import cn.hutool.core.util.ArrayUtil;
4 4 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
5 5 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
6 6 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  7 +import com.baomidou.mybatisplus.extension.service.IService;
7 8 import com.github.abel533.echarts.Option;
8 9 import com.github.abel533.echarts.axis.Axis;
9 10 import com.github.abel533.echarts.axis.CategoryAxis;
... ... @@ -145,20 +146,16 @@ public class HomePageViewServiceImpl implements HomePageViewService {
145 146  
146 147 @Override
147 148 public Result<String> inventoryUtilization() {
148   - // 查询所有容器 select限制字段速度更快
149   - LambdaQueryWrapper<Location> locationLambdaQueryWrapper = Wrappers.lambdaQuery();
150   - locationLambdaQueryWrapper.select(Location::getContainerCode);
151   - List<Location> locations = locationServiceImpl.list(locationLambdaQueryWrapper);
152   -
153 149 // 先存储总数
154   - int inStock = locations.size();
155   -
156   - // 总库位删除为空的数量长度 == 有货数量
157   - locations.removeIf(location -> StringUtils.isEmpty(location.getContainerCode()));
158   -
159   - // 总数-有货数量 == 无货数量
160   - inStock = inStock - locations.size();
161   -
  150 + Integer allStock = locationServiceImpl.count();
  151 +
  152 + // 有货数量 = 总库位删除为空的数量长度
  153 + LambdaQueryWrapper<Location> locationLambdaQueryWrapper = Wrappers.lambdaQuery();
  154 + locationLambdaQueryWrapper.isNotNull(Location::getContainerCode).ne(Location::getContainerCode, "");
  155 + int locationStock = locationServiceImpl.count(locationLambdaQueryWrapper);
  156 +
  157 + // 无货数量 = 总数 - 有货数量
  158 + Integer inStock = allStock - locationStock;
162 159 Option option = new Option();
163 160 // option.title("库存状态分布").title().x("center");
164 161 option.tooltip(Trigger.item).tooltip().formatter("{a} <br/>{b} : {c} ({d}%)");
... ... @@ -187,7 +184,7 @@ public class HomePageViewServiceImpl implements HomePageViewService {
187 184 pie.itemStyle().emphasis().setShadowColor("rgba(0, 0, 0, 0.4)");
188 185  
189 186 option.legend().data().add("有货");
190   - pie.data().add(new ChartData("有货", Convert.toDouble(locations.size())));
  187 + pie.data().add(new ChartData("有货", Convert.toDouble(locationStock)));
191 188  
192 189 option.legend().data().add("无货");
193 190 pie.data().add(new ChartData("无货", Convert.toDouble(inStock)));
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java
... ... @@ -1076,6 +1076,9 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
1076 1076 */
1077 1077 @Transactional(rollbackFor = Exception.class)
1078 1078 public Result completeReceiptTask(TaskHeader taskHeader) {
  1079 + if (taskHeader == null) {
  1080 + return Result.error("任务未找到,执行中止");
  1081 + }
1079 1082 String warehouseCode = taskHeader.getWarehouseCode();
1080 1083 String fromLocationCode = taskHeader.getFromLocationCode();
1081 1084 String toLocationCode = taskHeader.getToLocationCode();
... ... @@ -1084,9 +1087,6 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
1084 1087 int taskType = taskHeader.getTaskType();
1085 1088 List<TaskDetail> taskDetailList = taskDetailService.getTaskDetailListByTaskId(taskHeader.getId());
1086 1089 boolean success = false;
1087   - if (taskHeader == null) {
1088   - return Result.error("任务未找到,执行中止");
1089   - }
1090 1090 if (taskHeader.getStatus().equals(QuantityConstant.TASK_STATUS_COMPLETED)) {
1091 1091 return Result.ok("任务(" + taskHeader.getId() + ")任务已经是完成的!");
1092 1092 }
... ... @@ -1234,6 +1234,9 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
1234 1234 */
1235 1235 @Transactional(rollbackFor = Exception.class)
1236 1236 public Result completeShipmentTask(TaskHeader taskHeader) {
  1237 + if (taskHeader == null) {
  1238 + return Result.error("完成出库任务未找到,执行中止");
  1239 + }
1237 1240 String warehouseCode = taskHeader.getWarehouseCode();
1238 1241 String fromLocationCode = taskHeader.getFromLocationCode();
1239 1242 String toLocationCode = taskHeader.getToLocationCode();
... ... @@ -1242,9 +1245,6 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
1242 1245 int taskType = taskHeader.getTaskType();
1243 1246 List<TaskDetail> taskDetailList = taskDetailService.getTaskDetailListByTaskId(taskHeader.getId());
1244 1247 boolean success = false;
1245   - if (taskHeader == null) {
1246   - return Result.error("完成出库任务未找到,执行中止");
1247   - }
1248 1248 if (taskHeader.getStatus().equals(QuantityConstant.TASK_STATUS_COMPLETED)) {
1249 1249 return Result.ok("完成出库任务,(" + taskHeader.getId() + ")任务已经是完成的!");
1250 1250 }
... ...
huaheng-wms-core/src/main/resources/application-dev.yml
... ... @@ -47,7 +47,7 @@ spring:
47 47 org:
48 48 quartz:
49 49 scheduler:
50   - instanceName: Scheduler_Dev
  50 + instanceName: dev
51 51 instanceId: AUTO
52 52 jobStore:
53 53 class: org.quartz.impl.jdbcjobstore.JobStoreTX
... ... @@ -167,10 +167,12 @@ mybatis-plus:
167 167 # 默认数据库表下划线命名
168 168 table-underline: true
169 169 configuration:
  170 + map-underscore-to-camel-case: true
  171 + auto-mapping-behavior: full
170 172 # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
171   - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  173 + # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
172 174 # 返回类型为Map,显示null对应的字段
173   - call-setters-on-nulls: false
  175 + call-setters-on-nulls: true
174 176 #jeecg专用配置
175 177 minidao:
176 178 base-package: org.jeecg.modules.jmreport.*
... ... @@ -271,8 +273,8 @@ cas:
271 273 #Mybatis输出sql日志
272 274 logging:
273 275 level:
274   - org.jeecg.modules.base.mapper: debug
275 276 org.jeecg.modules.wms: debug
  277 + org.springframework: info
276 278 #swagger
277 279 knife4j:
278 280 #开启增强配置
... ...
huaheng-wms-core/src/main/resources/application-prod.yml
... ... @@ -47,7 +47,7 @@ spring:
47 47 org:
48 48 quartz:
49 49 scheduler:
50   - instanceName: Scheduler_Prod
  50 + instanceName: prod
51 51 instanceId: AUTO
52 52 jobStore:
53 53 class: org.quartz.impl.jdbcjobstore.JobStoreTX
... ... @@ -167,6 +167,8 @@ mybatis-plus:
167 167 # 默认数据库表下划线命名
168 168 table-underline: true
169 169 configuration:
  170 + map-underscore-to-camel-case: true
  171 + auto-mapping-behavior: full
170 172 # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
171 173 #log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
172 174 # 返回类型为Map,显示null对应的字段
... ... @@ -260,7 +262,8 @@ cas:
260 262 #Mybatis输出sql日志
261 263 logging:
262 264 level:
263   - org.jeecg.modules.system.mapper: info
  265 + org.jeecg.modules.wms: info
  266 + org.springframework: info
264 267 #swagger
265 268 knife4j:
266 269 #开启增强配置
... ...
huaheng-wms-core/src/main/resources/application-test.yml
... ... @@ -47,7 +47,7 @@ spring:
47 47 org:
48 48 quartz:
49 49 scheduler:
50   - instanceName: Scheduler_Test
  50 + instanceName: test
51 51 instanceId: AUTO
52 52 jobStore:
53 53 class: org.quartz.impl.jdbcjobstore.JobStoreTX
... ... @@ -167,10 +167,12 @@ mybatis-plus:
167 167 # 默认数据库表下划线命名
168 168 table-underline: true
169 169 configuration:
  170 + map-underscore-to-camel-case: true
  171 + auto-mapping-behavior: full
170 172 # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
171   - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  173 + # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
172 174 # 返回类型为Map,显示null对应的字段
173   - call-setters-on-nulls: false
  175 + call-setters-on-nulls: true
174 176 #jeecg专用配置
175 177 minidao:
176 178 base-package: org.jeecg.modules.jmreport.*
... ... @@ -272,7 +274,8 @@ cas:
272 274 #Mybatis输出sql日志
273 275 logging:
274 276 level:
275   - org.jeecg.modules.base.mapper: info
  277 + org.jeecg.modules.wms: debug
  278 + org.springframework: info
276 279 #swagger
277 280 knife4j:
278 281 #开启增强配置
... ...
huaheng-wms-core/src/main/resources/logback-spring.xml
... ... @@ -15,7 +15,7 @@
15 15 <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
16 16 <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L
17 17 - %msg%n</pattern> -->
18   - <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{50}:%L) - %msg%n</pattern>
  18 + <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n</pattern>
19 19 </encoder>
20 20 </appender>
21 21  
... ...