Commit 80d74a35cc30ac2e26b4867981ce63b9f95ba511

Authored by 肖超群
1 parent ebee70b3

完善入库质检功能

ant-design-vue-jeecg/src/views/system/inventory/InventoryTransactionList.vue
... ... @@ -307,6 +307,11 @@ export default {
307 307 scopedSlots: {customRender: 'inventoryStatus_dictText'}
308 308 },
309 309 {
  310 + title: '数量',
  311 + align: "center",
  312 + dataIndex: 'qty'
  313 + },
  314 + {
310 315 title: '入库数量',
311 316 align: "center",
312 317 dataIndex: 'receiptQty'
... ...
ant-design-vue-jeecg/src/views/system/receipt/ReceiveHeaderList.vue
... ... @@ -163,16 +163,16 @@
163 163 </template>
164 164  
165 165 <span slot="action" slot-scope="text, record">
166   - <a @click="receive(record)">
167   - <a-button v-has="'receiveHeader:receive'" v-if="(record.lastStatus < 200)" type="primary">收货</a-button><a-divider type="vertical"/>
  166 + <a v-has="'receiveHeader:receive'" v-if="(record.lastStatus < 200)" @click="receive(record)">
  167 + <a-button type="primary">收货</a-button><a-divider type="vertical"/>
168 168 </a>
169   - <a @click="receiveHeader(record.id)">
170   - <a-button v-has="'receiveHeader:receive'" v-if="(record.lastStatus < 200)" type="primary">全部收货</a-button><a-divider type="vertical"/>
  169 + <a v-has="'receiveHeader:receive'" v-if="(record.lastStatus < 200)" @click="receiveHeader(record.id)">
  170 + <a-button type="primary">全部收货</a-button><a-divider type="vertical"/>
171 171 </a>
172   - <a @click="receiveHeaderToQuality(record.id)">
173   - <a-button v-has="'receiveHeader:quality'" v-if="(record.lastStatus == 200)" type="primary">全部质检</a-button><a-divider type="vertical"/>
  172 + <a v-has="'receiveHeader:quality'" v-if="(record.lastStatus == 200)" @click="receiveHeaderToQuality(record.id)">
  173 + <a-button type="primary">全部质检</a-button><a-divider type="vertical"/>
174 174 </a>
175   - <a v-has="'receiveHeader:edit'" @click="handleEdit(record)">
  175 + <a v-has="'receiveHeader:edit'" v-if="(record.firstStatus == 0)" @click="handleEdit(record)">
176 176 <a-button type="primary">编辑</a-button><a-divider type="vertical"/>
177 177 </a>
178 178 <a-popconfirm v-has="'receiveHeader:remove'" v-if="(record.firstStatus == 0)" title="确定删除吗?" @confirm="() => handleDelete(record.id)" >
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/qualityHeader/service/impl/QualityDetailServiceImpl.java
1 1 package org.jeecg.modules.wms.receipt.qualityHeader.service.impl;
2 2  
3 3 import java.math.BigDecimal;
  4 +import java.util.ArrayList;
4 5 import java.util.List;
5 6  
6 7 import javax.annotation.Resource;
7 8  
8 9 import org.jeecg.common.api.vo.Result;
9 10 import org.jeecg.common.exception.JeecgBootException;
  11 +import org.jeecg.modules.wms.inventory.inventoryTransaction.entity.InventoryTransaction;
  12 +import org.jeecg.modules.wms.inventory.inventoryTransaction.service.IInventoryTransactionService;
10 13 import org.jeecg.modules.wms.receipt.qualityHeader.entity.QualityDetail;
11 14 import org.jeecg.modules.wms.receipt.qualityHeader.mapper.QualityDetailMapper;
12 15 import org.jeecg.modules.wms.receipt.qualityHeader.service.IQualityDetailService;
... ... @@ -33,6 +36,8 @@ public class QualityDetailServiceImpl extends ServiceImpl&lt;QualityDetailMapper, Q
33 36 private IQualityDetailService qualityDetailService;
34 37 @Resource
35 38 private IQualityHeaderService qualityHeaderService;
  39 + @Resource
  40 + private IInventoryTransactionService inventoryTransactionService;
36 41  
37 42 @Override
38 43 public List<QualityDetail> selectByMainId(String mainId) {
... ... @@ -68,6 +73,45 @@ public class QualityDetailServiceImpl extends ServiceImpl&lt;QualityDetailMapper, Q
68 73 if (!qualityHeaderService.updateQualityHeaderStatus(qualityDetail.getQualityId())) {
69 74 throw new JeecgBootException("质检失败,更新质检状态失败");
70 75 }
  76 +
  77 + List<InventoryTransaction> inventoryTransactionList = new ArrayList<>();
  78 + if (qualityfiedQty.compareTo(BigDecimal.ZERO) > 0) {
  79 + InventoryTransaction inventoryTransaction = new InventoryTransaction();
  80 + inventoryTransaction.setType(QuantityConstant.INVENTORY_TRANSACTION_QUALITY);
  81 + inventoryTransaction.setWarehouseCode(qualityDetail.getWarehouseCode());
  82 + inventoryTransaction.setCompanyCode(qualityDetail.getCompanyCode());
  83 + inventoryTransaction.setReceiptCode(qualityDetail.getQualityCode());
  84 + inventoryTransaction.setMaterialCode(qualityDetail.getMaterialCode());
  85 + inventoryTransaction.setMaterialName(qualityDetail.getMaterialName());
  86 + inventoryTransaction.setMaterialSpec(qualityDetail.getMaterialSpec());
  87 + inventoryTransaction.setMaterialUnit(qualityDetail.getMaterialUnit());
  88 + inventoryTransaction.setBatch(qualityDetail.getBatch());
  89 + inventoryTransaction.setLot(qualityDetail.getLot());
  90 + inventoryTransaction.setProject(qualityDetail.getProject());
  91 + inventoryTransaction.setInventoryStatus(QuantityConstant.QUALITY_GOOD);
  92 + inventoryTransaction.setQty(qualityfiedQty);
  93 + inventoryTransactionList.add(inventoryTransaction);
  94 + }
  95 + if (unqualityfiedQty.compareTo(BigDecimal.ZERO) > 0) {
  96 + InventoryTransaction inventoryTransaction = new InventoryTransaction();
  97 + inventoryTransaction.setType(QuantityConstant.INVENTORY_TRANSACTION_QUALITY);
  98 + inventoryTransaction.setWarehouseCode(qualityDetail.getWarehouseCode());
  99 + inventoryTransaction.setCompanyCode(qualityDetail.getCompanyCode());
  100 + inventoryTransaction.setReceiptCode(qualityDetail.getQualityCode());
  101 + inventoryTransaction.setMaterialCode(qualityDetail.getMaterialCode());
  102 + inventoryTransaction.setMaterialName(qualityDetail.getMaterialName());
  103 + inventoryTransaction.setMaterialSpec(qualityDetail.getMaterialSpec());
  104 + inventoryTransaction.setMaterialUnit(qualityDetail.getMaterialUnit());
  105 + inventoryTransaction.setBatch(qualityDetail.getBatch());
  106 + inventoryTransaction.setLot(qualityDetail.getLot());
  107 + inventoryTransaction.setProject(qualityDetail.getProject());
  108 + inventoryTransaction.setInventoryStatus(QuantityConstant.QUALITY_DEFECTIVE);
  109 + inventoryTransaction.setQty(unqualityfiedQty);
  110 + inventoryTransactionList.add(inventoryTransaction);
  111 + }
  112 + if (!inventoryTransactionService.saveBatch(inventoryTransactionList)) {
  113 + throw new JeecgBootException("质检失败,增加库存交易记录失败");
  114 + }
71 115 return Result.ok("质检成功");
72 116 }
73 117  
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/qualityHeader/service/impl/QualityHeaderServiceImpl.java
... ... @@ -80,8 +80,12 @@ public class QualityHeaderServiceImpl extends ServiceImpl&lt;QualityHeaderMapper, Q
80 80 }
81 81 if (maxCode != null) {
82 82 String day = maxCode.substring(maxCode.length() - 13, maxCode.length() - 5);
83   - Integer Count = Integer.valueOf(maxCode.substring(maxCode.length() - 5, maxCode.length()));
84   - code = qualityType + df.format(now) + String.format("%05d", Count + 1);
  83 + if (day.equals(df.format(now))) {
  84 + Integer Count = Integer.valueOf(maxCode.substring(maxCode.length() - 5, maxCode.length()));
  85 + code = qualityType + df.format(now) + String.format("%05d", Count + 1);
  86 + } else {
  87 + code = qualityType + df.format(now) + String.format("%05d", 0000 + 1);
  88 + }
85 89 } else {
86 90 code = qualityType + df.format(now) + String.format("%05d", 0000 + 1);
87 91 }
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiveHeader/service/impl/ReceiveDetailServiceImpl.java
... ... @@ -199,8 +199,7 @@ public class ReceiveDetailServiceImpl extends ServiceImpl&lt;ReceiveDetailMapper, R
199 199 inventoryTransaction.setLot(receiveDetail.getLot());
200 200 inventoryTransaction.setProject(receiveDetail.getProject());
201 201 inventoryTransaction.setInventoryStatus(receiveDetail.getInventoryStatus());
202   - inventoryTransaction.setQty(receiveQty);
203   - inventoryTransaction.setReceiptQty(receiveQty);
  202 + inventoryTransaction.setQty(taskQty);
204 203 inventoryTransactionList.add(inventoryTransaction);
205 204 }
206 205 if (CollectionUtils.isEmpty(receiveDetailList)) {
... ...
huaheng-wms-core/src/main/java/org/jeecg/utils/constant/QuantityConstant.java
... ... @@ -12,7 +12,7 @@ package org.jeecg.utils.constant;
12 12 * 8、波次状态
13 13 * 9、质检状态
14 14 * 10、盘点状态
15   - * 11、INVENTORY_TRANSACTION_RECEIPT
  15 + * 11、库存交易记录
16 16 * 12、调整单状态
17 17 * 13、任务内部类型
18 18 * 14、质检单类型
... ... @@ -307,6 +307,12 @@ public class QuantityConstant {
307 307 /** 移库 */
308 308 public static final Integer INVENTORY_TRANSACTION_TRANSFER = 50;
309 309  
  310 + /** 收货 */
  311 + public static final Integer INVENTORY_TRANSACTION_RECEIVE = 60;
  312 +
  313 + /** 质检 */
  314 + public static final Integer INVENTORY_TRANSACTION_QUALITY = 70;
  315 +
310 316 // 12、调整单状态
311 317  
312 318 // 未批准
... ... @@ -402,7 +408,22 @@ public class QuantityConstant {
402 408 public static final Integer RECEIVE_HEADER_HALF = 100;
403 409 // 收货单完成收货状态
404 410 public static final Integer RECEIVE_HEADER_COMPLETE = 200;
405   -
  411 + // 生成质检单
  412 + public static final Integer RECEIVE_HEADER_QUALITY = 300;
  413 +
  414 + // 新建
  415 + public static final Integer QUALITY_HEADER_BUILD = 0;
  416 + // 部分质检
  417 + public static final Integer QUALITY_HEADER_HALF = 100;
  418 + // 质检完成
  419 + public static final Integer QUALITY_HEADER_COMPLETE = 200;
  420 +
  421 + /** 来料质检 */
  422 + public static final String QUALITY_TYPE_INCOMING = "QI";
  423 + /** 库内全检 */
  424 + public static final String QUALITY_TYPE_INHOUSE_FULL = "QIF";
  425 + /** 库内抽检 */
  426 + public static final String QUALITY_TYPE_INHOUSE_PART = "QIP";
406 427  
407 428 /** 对接WCS可用巷道API */
408 429 public static final String ADDRESS_WCS_AVAILABLE_ROWDWAY = "WCS_AVAILABLE_ROWDWAY";
... ... @@ -451,8 +472,14 @@ public class QuantityConstant {
451 472 public static final String PLATFORM_CODING = "赋码系统";
452 473 public static final String PLATFORM_ERP = "ERP";
453 474 public static final String PLATFORM_WMS = "WMS";
454   - // good
  475 + // 良品
455 476 public static final String QUALITY_GOOD = "good";
  477 + // 次品
  478 + public static final String QUALITY_DEFECTIVE = "defective";
  479 + // 报废品
  480 + public static final String QUALITY_SCRAP = "scrap";
  481 + // 待确认
  482 + public static final String QUALITY_DISUSSED = "discussed";
456 483  
457 484 // 发送AGV任务成功
458 485 public static final int AGV_NEED_SEND = 0;
... ... @@ -515,25 +542,25 @@ public class QuantityConstant {
515 542 * 出库依赖库区
516 543 */
517 544 public static final int SHIPMENT_BY_ZONE = 1;
518   -
519   - /** 对接WCS可用巷道API:关闭 */
  545 +
  546 + /** 对接WCS可用巷道API:关闭 */
520 547 public static final String AVAILABLE_ROWDWAY_CLOSE = "0";
521   -
  548 +
522 549 /** 对接WCS可用巷道API:开启 */
523 550 public static final String AVAILABLE_ROWDWAY_OPEN = "1";
524   -
  551 +
525 552 /** 启用获取可用巷道API */
526 553 public static final String RULE_AVAILABLE_ROWDWAY_STATUS = "availableRowdwayStatus";
527   -
528   - /** 接口异常响应通知配置 */
529   -
530   - /** 定时任务异常响应通知配置 */
  554 +
  555 + /** 接口异常响应通知配置 */
  556 +
  557 + /** 定时任务异常响应通知配置 */
531 558 public static final String RULE_JOB_EXCEPTION_NOTICE_ROLE_OR_NAME = "jobExceptionNoticeRoleOrName";
532   -
533   - /** 接口异常响应通知配置 */
  559 +
  560 + /** 接口异常响应通知配置 */
534 561 public static final String RULE_API_EXCEPTION_NOTICE_ROLE_OR_NAME = "apiExceptionNoticeRoleOrName";
535   -
536   - /** 定时任务执行消息通知配置 */
  562 +
  563 + /** 定时任务执行消息通知配置 */
537 564 public static final String RULE_TASK_RUN_NOTICE_CLASS_NAME = "taskRunNoticeClassName";
538 565  
539 566 public static final int RULE_TASK_NOT_CLEAR = 0;
... ...