Commit 49afef05cb0f54a8b2c849cdb062c09f5f80afbf

Authored by 肖超群
1 parent 8c1d5d4c

修复一些状态细节

ant-design-vue-jeecg/src/views/system/config/ContainerList.vue
... ... @@ -21,7 +21,7 @@
21 21 show-search
22 22 placeholder="请选择容器类型"
23 23 option-filter-prop="children"
24   -
  24 +
25 25 v-model="queryParam.containerTypeCode">
26 26 <a-select-option v-for="item in containerTypeList" :key="item.name" :value="item.code">{{
27 27 item.name
... ... @@ -55,11 +55,11 @@
55 55 <div class="table-operator">
56 56 <a-button @click="handleAdd" v-has="'container:add'" type="primary" icon="plus">新增</a-button>
57 57 <a-button v-has="'container:export'" type="primary" icon="download" @click="handleExportXls('容器管理')">导出</a-button>
58   - <a-upload v-has="'container:import'" name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl"
  58 + <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl"
59 59 @change="handleImportExcel">
60   - <a-button type="primary" icon="import">导入</a-button>
61   - <a-button v-has="'container:print'" @click="batchPrint()" type="primary">打印</a-button>
  60 + <a-button v-has="'container:import'" type="primary" icon="import">导入</a-button>
62 61 </a-upload>
  62 + <a-button v-has="'container:print'" @click="batchPrint()" type="primary">打印</a-button>
63 63 <a-dropdown v-if="selectedRowKeys.length > 0">
64 64 <a-menu slot="overlay" v-has="'container:deleteBatch'">
65 65 <a-menu-item key="1" @click="batchDel">
... ...
ant-design-vue-jeecg/src/views/system/config/LocationList.vue
... ... @@ -25,7 +25,7 @@
25 25 show-search
26 26 placeholder="请选择库位类型"
27 27 option-filter-prop="children"
28   -
  28 +
29 29 v-model="queryParam.locationTypeCode">
30 30 <a-select-option v-for="item in locationTypeList" :key="item.name" :value="item.code">
31 31 {{item.name}}
... ... @@ -40,7 +40,7 @@
40 40 show-search
41 41 placeholder="请选择库区编码"
42 42 option-filter-prop="children"
43   -
  43 +
44 44 v-model="queryParam.zoneCode">
45 45 <a-select-option v-for="item in zoneList" :key="item.name" :value="item.code">
46 46 {{item.name}}
... ... @@ -107,8 +107,8 @@
107 107 <a-upload v-has="'location:import'" name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl"
108 108 @change="handleImportExcel">
109 109 <a-button type="primary" icon="import">导入</a-button>
110   - <a-button v-has="'material:print'" @click="batchPrint()" type="primary">打印</a-button>
111 110 </a-upload>
  111 + <a-button v-has="'material:print'" @click="batchPrint()" type="primary">打印</a-button>
112 112 <a-dropdown v-if="selectedRowKeys.length > 0">
113 113 <a-menu slot="overlay" v-has="'location:deleteBatch'">
114 114 <a-menu-item key="1" @click="batchDel">
... ...
ant-design-vue-jeecg/src/views/system/inventory/InventoryHeaderList.vue
... ... @@ -122,7 +122,7 @@
122 122 <span slot="action" slot-scope="text, record">
123 123 <a v-has="'inventoryHeader:edit'" @click="handleEdit(record)">编辑<a-divider type="vertical"/></a>
124 124 <a-dropdown>
125   - <a class="ant-dropdown-link">更多 <a-icon type="down"/></a>
  125 +<!-- <a class="ant-dropdown-link" >更多 <a-icon type="down"/></a>-->
126 126 <a-menu slot="overlay" v-has="'inventoryHeader:delete'">
127 127 <a-menu-item>
128 128 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/entity/InventoryDetail.java
1 1 package org.jeecg.modules.wms.inventory.inventoryHeader.entity;
2 2  
3 3 import java.io.Serializable;
  4 +import java.util.Date;
  5 +
  6 +import org.jeecg.common.aspect.annotation.Dict;
  7 +import org.jeecgframework.poi.excel.annotation.Excel;
  8 +
4 9 import com.baomidou.mybatisplus.annotation.IdType;
5 10 import com.baomidou.mybatisplus.annotation.TableId;
6 11 import com.baomidou.mybatisplus.annotation.TableName;
7   -import org.jeecg.common.aspect.annotation.Dict;
8   -import lombok.Data;
9   -import com.fasterxml.jackson.annotation.JsonFormat;
10   -import org.springframework.format.annotation.DateTimeFormat;
11   -import org.jeecgframework.poi.excel.annotation.Excel;
12   -import java.util.Date;
  12 +
13 13 import io.swagger.annotations.ApiModel;
14 14 import io.swagger.annotations.ApiModelProperty;
15   -import java.io.UnsupportedEncodingException;
  15 +import lombok.Data;
16 16  
17 17 /**
18 18 * @Description: 库存详情
... ... @@ -49,6 +49,11 @@ public class InventoryDetail implements Serializable {
49 49 @Excel(name = "容器编码", width = 15)
50 50 @ApiModelProperty(value = "容器编码")
51 51 private String containerCode;
  52 + /** 容器状态 */
  53 + @Excel(name = "容器状态", width = 15, dicCode = "container_status")
  54 + @Dict(dicCode = "container_status")
  55 + @ApiModelProperty(value = "容器状态")
  56 + private String containerStatus;
52 57 /** 库位编码 */
53 58 @Excel(name = "库位编码", width = 15)
54 59 @ApiModelProperty(value = "库位编码")
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/impl/InventoryHeaderServiceImpl.java
... ... @@ -2,14 +2,17 @@ package org.jeecg.modules.wms.inventory.inventoryHeader.service.impl;
2 2  
3 3 import java.io.Serializable;
4 4 import java.util.Collection;
  5 +import java.util.List;
5 6  
6 7 import javax.annotation.Resource;
7 8  
8 9 import org.jeecg.modules.wms.config.container.entity.Container;
9 10 import org.jeecg.modules.wms.config.container.service.IContainerService;
  11 +import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryDetail;
10 12 import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryHeader;
11 13 import org.jeecg.modules.wms.inventory.inventoryHeader.mapper.InventoryDetailMapper;
12 14 import org.jeecg.modules.wms.inventory.inventoryHeader.mapper.InventoryHeaderMapper;
  15 +import org.jeecg.modules.wms.inventory.inventoryHeader.service.IInventoryDetailService;
13 16 import org.jeecg.modules.wms.inventory.inventoryHeader.service.IInventoryHeaderService;
14 17 import org.springframework.beans.factory.annotation.Autowired;
15 18 import org.springframework.stereotype.Service;
... ... @@ -36,6 +39,8 @@ public class InventoryHeaderServiceImpl extends ServiceImpl&lt;InventoryHeaderMappe
36 39 private IContainerService containerService;
37 40 @Resource
38 41 private IInventoryHeaderService inventoryHeaderService;
  42 + @Resource
  43 + private IInventoryDetailService inventoryDetailService;
39 44  
40 45 @Override
41 46 @Transactional
... ... @@ -71,6 +76,16 @@ public class InventoryHeaderServiceImpl extends ServiceImpl&lt;InventoryHeaderMappe
71 76 if (inventoryHeader != null) {
72 77 inventoryHeader.setContainerStatus(container.getStatus());
73 78 boolean success = inventoryHeaderService.updateById(inventoryHeader);
  79 + if (!success) {
  80 + return success;
  81 + }
  82 + List<InventoryDetail> inventoryDetailList = inventoryDetailService.getInventoryDetailListByContainerCode(containerCode, warehouseCode);
  83 + if (inventoryDetailList.size() > 0) {
  84 + for (InventoryDetail inventoryDetail : inventoryDetailList) {
  85 + inventoryDetail.setContainerStatus(container.getStatus());
  86 + }
  87 + success = inventoryDetailService.updateBatchById(inventoryDetailList);
  88 + }
74 89 return success;
75 90 }
76 91 return false;
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/impl/ReceiptContainerHeaderServiceImpl.java
... ... @@ -120,8 +120,7 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl&lt;ReceiptContai
120 120 if (receiptContainerDetailList.size() == 0) {
121 121 return Result.error("id:" + receiptContainerHeader.getId() + "的入库组盘,没有组盘明细,请先组盘!");
122 122 }
123   - boolean success = containerService.updateStatusByOriginStatus(containerCode, QuantityConstant.STATUS_CONTAINER_LOCK, QuantityConstant.STATUS_CONTAINER_EMPTY,
124   - warehouseCode);
  123 + boolean success = containerService.updateStatus(containerCode, QuantityConstant.STATUS_CONTAINER_LOCK, warehouseCode);
125 124 if (!success) {
126 125 throw new JeecgBootException("更新容器状态失败");
127 126 }
... ... @@ -136,10 +135,12 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl&lt;ReceiptContai
136 135 }
137 136 String zoneCode = null;
138 137 if (StringUtils.isNotEmpty(toLocaitonCode)) {
139   - success = locationService.updateStatusByOriginStatus(toLocaitonCode, QuantityConstant.STATUS_LOCATION_LOCK, QuantityConstant.STATUS_LOCATION_EMPTY,
140   - warehouseCode);
141   - if (!success) {
142   - throw new JeecgBootException("更新目标库位状态失败");
  138 + if (!toLocaitonCode.equals(fromLocationCode)) {
  139 + success = locationService.updateStatusByOriginStatus(toLocaitonCode, QuantityConstant.STATUS_LOCATION_LOCK, QuantityConstant.STATUS_LOCATION_EMPTY,
  140 + warehouseCode);
  141 + if (!success) {
  142 + throw new JeecgBootException("更新目标库位状态失败");
  143 + }
143 144 }
144 145 Location toLocation = locationService.getLocationByCode(toLocaitonCode, warehouseCode);
145 146 if (!toLocation.getWarehouseCode().equals(warehouseCode)) {
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/service/impl/CycleCountDetailServiceImpl.java
... ... @@ -229,8 +229,7 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap
229 229 throw new JeecgBootException("更新库位状态失败");
230 230 }
231 231 // 生成任务同时锁定容器
232   - success = containerServiceImpl.updateStatusByOriginStatus(location.getContainerCode(), QuantityConstant.STATUS_LOCATION_LOCK,
233   - QuantityConstant.STATUS_LOCATION_EMPTY, warehouseCode);
  232 + success = containerServiceImpl.updateStatus(location.getContainerCode(), QuantityConstant.STATUS_LOCATION_LOCK, warehouseCode);
234 233 if (!success) {
235 234 throw new JeecgBootException("更新容器状态失败");
236 235 }
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java
... ... @@ -67,6 +67,7 @@ import org.springframework.stereotype.Service;
67 67 import org.springframework.transaction.annotation.Transactional;
68 68  
69 69 import com.alibaba.fastjson.JSON;
  70 +import com.aliyun.oss.ServiceException;
70 71 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
71 72 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
72 73 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
... ... @@ -299,8 +300,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
299 300 if (!success) {
300 301 throw new JeecgBootException("创建移库任务时, 终点库位" + toLocationCode + "更新失败");
301 302 }
302   - success = containerService.updateStatusByOriginStatus(fromLocation.getContainerCode(), QuantityConstant.STATUS_CONTAINER_LOCK,
303   - QuantityConstant.STATUS_CONTAINER_EMPTY, warehouseCode);
  303 + success = containerService.updateStatus(fromLocation.getContainerCode(), QuantityConstant.STATUS_CONTAINER_LOCK, warehouseCode);
304 304 if (!success) {
305 305 throw new JeecgBootException("创建移库任务时,容器" + fromLocation.getContainerCode() + "更新失败");
306 306 }
... ... @@ -358,8 +358,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
358 358 if (!success) {
359 359 throw new JeecgBootException("创建出库查看任务时,更新库位状态失败");
360 360 }
361   - success = containerService.updateStatusByOriginStatus(containerCode, QuantityConstant.STATUS_CONTAINER_LOCK, QuantityConstant.STATUS_CONTAINER_EMPTY,
362   - warehouseCode);
  361 + success = containerService.updateStatus(containerCode, QuantityConstant.STATUS_CONTAINER_LOCK, warehouseCode);
363 362 if (!success) {
364 363 throw new JeecgBootException("创建出库查看任务时,更新容器状态失败");
365 364 }
... ... @@ -427,8 +426,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
427 426 if (!success) {
428 427 return Result.error("创建跨站任务时, 创建任务失败");
429 428 }
430   - success = containerService.updateStatusByOriginStatus(containerCode, QuantityConstant.STATUS_CONTAINER_LOCK, QuantityConstant.STATUS_CONTAINER_EMPTY,
431   - warehouseCode);
  429 + success = containerService.updateStatus(containerCode, QuantityConstant.STATUS_CONTAINER_LOCK, warehouseCode);
432 430 if (!success) {
433 431 return Result.error("创建跨站任务时, 更新容器状态失败");
434 432 }
... ... @@ -520,8 +518,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
520 518 if (!container.getStatus().equals(QuantityConstant.STATUS_CONTAINER_EMPTY)) {
521 519 return Result.error("创建空托盘组入库任务时,容器状态不为空容器");
522 520 }
523   - boolean success = containerService.updateStatusByOriginStatus(containerCode, QuantityConstant.STATUS_CONTAINER_LOCK, QuantityConstant.STATUS_CONTAINER_EMPTY,
524   - warehouseCode);
  521 + boolean success = containerService.updateStatus(containerCode, QuantityConstant.STATUS_CONTAINER_LOCK, warehouseCode);
525 522 if (!success) {
526 523 throw new JeecgBootException("创建空托盘组入库任务时, 更新容器状态失败");
527 524 }
... ... @@ -586,12 +583,12 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
586 583 if (StringUtils.isEmpty(zoneCode)) {
587 584 return Result.error("创建空托盘组出库任务时, 库区为空");
588 585 }
589   - boolean success = containerService.updateStatusByOriginStatus(containerCode, QuantityConstant.STATUS_CONTAINER_LOCK, QuantityConstant.STATUS_CONTAINER_EMPTY,
  586 + boolean success = containerService.updateStatusByOriginStatus(containerCode, QuantityConstant.STATUS_CONTAINER_LOCK, QuantityConstant.STATUS_CONTAINER_MANY,
590 587 warehouseCode);
591 588 if (!success) {
592 589 throw new JeecgBootException("创建空托盘组出库任务时, 更新容器状态失败");
593 590 }
594   - success = locationService.updateStatusByOriginStatus(fromLocationCode, QuantityConstant.STATUS_LOCATION_LOCK, QuantityConstant.STATUS_LOCATION_LOCK,
  591 + success = locationService.updateStatusByOriginStatus(fromLocationCode, QuantityConstant.STATUS_LOCATION_LOCK, QuantityConstant.STATUS_LOCATION_EMPTY,
595 592 warehouseCode);
596 593 if (!success) {
597 594 throw new JeecgBootException("创建空托盘组出库任务时, 更新库位状态失败");
... ... @@ -1128,7 +1125,9 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
1128 1125 for (InventoryDetail inventoryDetail : inventoryDetailList) {
1129 1126 inventoryDetail.setLocationCode(toLocationCode);
1130 1127 inventoryDetail.setZoneCode(zoneCode);
1131   - inventoryDetailService.updateById(inventoryDetail);
  1128 + if (!inventoryDetailService.updateById(inventoryDetail)) {
  1129 + throw new ServiceException("更新库存详情失败");
  1130 + }
1132 1131 }
1133 1132 }
1134 1133 } else {
... ... @@ -1255,6 +1254,9 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
1255 1254 throw new JeecgBootException("完成入库任务时,更新入库单头失败");
1256 1255 }
1257 1256 }
  1257 + if (!inventoryHeaderService.updateInventoryContainerStatusByContainerCode(containerCode, warehouseCode)) {
  1258 + throw new JeecgBootException("完成入库任务时,更新托盘状态失败");
  1259 + }
1258 1260 receiptDetaiList = receiptDetaiList.stream().filter(t -> t.getStatus().equals(QuantityConstant.RECEIPT_HEADER_COMPLETED)).collect(Collectors.toList());
1259 1261 LogRecordContext.putVariable("taskHeader", taskHeader);
1260 1262 LogRecordContext.putVariable("taskDetailList", taskDetailList);
... ... @@ -1454,6 +1456,11 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
1454 1456 throw new JeecgBootException("完成出库任务,更新出库单头失败");
1455 1457 }
1456 1458 }
  1459 + if (taskType != QuantityConstant.TASK_TYPE_WHOLESHIPMENT) {
  1460 + if (!inventoryHeaderService.updateInventoryContainerStatusByContainerCode(containerCode, warehouseCode)) {
  1461 + throw new JeecgBootException("完成出库任务,更新库存状态失败");
  1462 + }
  1463 + }
1457 1464 // 操作记录添加
1458 1465 shipmentDetailList = shipmentDetailList.stream().filter(t -> t.getStatus().equals(QuantityConstant.SHIPMENT_HEADER_COMPLETED)).collect(Collectors.toList());
1459 1466 LogRecordContext.putVariable("taskHeader", taskHeader);
... ... @@ -1585,10 +1592,6 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
1585 1592 }
1586 1593 LoginUser sysUser = (LoginUser)SecurityUtils.getSubject().getPrincipal();
1587 1594 taskHeader.setStatus(QuantityConstant.TASK_STATUS_COMPLETED);
1588   - // 更新用户
1589   - taskHeader.setUpdateBy(sysUser.getUsername());
1590   - // 更新时间
1591   - taskHeader.setUpdateTime(new Date());
1592 1595  
1593 1596 // 1.先拿到盘点单主单据
1594 1597 CycleCountDetail cycleCountDetail = cycleCountDetailService.getById(taskHeader.getShipmentContainerHeaderId());
... ... @@ -1779,7 +1782,6 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
1779 1782 }
1780 1783 // 盘点明细状态
1781 1784 cycleCountDetail.setEnableStatus(QuantityConstant.CYCLECOUNT_STATUS_COMPLETED);
1782   - cycleCountDetail.setCompletedBy(sysUser.getUsername());
1783 1785 cycleCountDetail.setCompletedAt(new Date());
1784 1786 cycleCountDetailService.updateById(cycleCountDetail);
1785 1787 // 更新主单状态
... ... @@ -2041,10 +2043,10 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
2041 2043 }
2042 2044 } else {
2043 2045 if (fromLocationCode.equals(toLocationCode)) {
2044   - success = containerService.updateStatusByOriginStatus(containerCode, QuantityConstant.STATUS_CONTAINER_SOME, QuantityConstant.STATUS_CONTAINER_LOCK,
  2046 + success = containerService.updateStatusByOriginStatus(containerCode, QuantityConstant.STATUS_CONTAINER_EMPTY, QuantityConstant.STATUS_CONTAINER_LOCK,
2045 2047 warehouseCode);
2046 2048 } else {
2047   - success = containerService.updateLocationCodeAndStatus(containerCode, toLocationCode, QuantityConstant.STATUS_CONTAINER_SOME, warehouseCode);
  2049 + success = containerService.updateLocationCodeAndStatus(containerCode, toLocationCode, QuantityConstant.STATUS_CONTAINER_EMPTY, warehouseCode);
2048 2050 }
2049 2051 if (!success) {
2050 2052 throw new JeecgBootException("完成出库查看任务时,更新容器状态失败");
... ...
huaheng-wms-core/src/main/java/org/jeecg/utils/HuahengJwtUtil.java
... ... @@ -11,6 +11,7 @@ import org.apache.shiro.SecurityUtils;
11 11 import org.jeecg.common.exception.JeecgBootException;
12 12 import org.jeecg.common.system.vo.LoginUser;
13 13 import org.jeecg.common.util.oConvertUtils;
  14 +import org.jeecg.utils.constant.QuantityConstant;
14 15 import org.jeecg.utils.support.ApiAuthentication;
15 16 import org.jeecg.utils.support.RSA256Key;
16 17 import org.jeecg.utils.support.SystemAuthentication;
... ... @@ -30,7 +31,7 @@ import cn.hutool.core.util.ReflectUtil;
30 31  
31 32 @Component
32 33 public class HuahengJwtUtil {
33   -
  34 +
34 35 /** token失效时间 1天 */
35 36 public static final long EXPIRE_TIME = 12 * 60 * 60 * 1000;
36 37  
... ... @@ -42,13 +43,13 @@ public class HuahengJwtUtil {
42 43  
43 44 /** 全仓CODE */
44 45 public static final String ALL_WAREHOUSE_CODE = "ALL_WAREHOUSE";
45   -
  46 +
46 47 public static final String SYSTEM_ACTIVATION_CODE_FILE_NAME = "ActivationCode.txt";
47   -
  48 +
48 49 public static final String SYSTEM_ACTIVATION_CODE_KEY = "ActivationCode";
49 50  
50   - public static final String UNKNOWN_USER = "unknown";
51   -
  51 + public static final String UNKNOWN_USER = QuantityConstant.EMPTY_STRING;
  52 +
52 53 /**
53 54 * 根据request中的token获取用户账号
54 55 * @param request
... ...