diff --git a/ant-design-vue-jeecg/src/views/system/inventory/InventoryTransactionList.vue b/ant-design-vue-jeecg/src/views/system/inventory/InventoryTransactionList.vue index b93a253..3395550 100644 --- a/ant-design-vue-jeecg/src/views/system/inventory/InventoryTransactionList.vue +++ b/ant-design-vue-jeecg/src/views/system/inventory/InventoryTransactionList.vue @@ -307,6 +307,11 @@ export default { scopedSlots: {customRender: 'inventoryStatus_dictText'} }, { + title: '数量', + align: "center", + dataIndex: 'qty' + }, + { title: '入库数量', align: "center", dataIndex: 'receiptQty' diff --git a/ant-design-vue-jeecg/src/views/system/receipt/ReceiveHeaderList.vue b/ant-design-vue-jeecg/src/views/system/receipt/ReceiveHeaderList.vue index e755f32..e7abd50 100644 --- a/ant-design-vue-jeecg/src/views/system/receipt/ReceiveHeaderList.vue +++ b/ant-design-vue-jeecg/src/views/system/receipt/ReceiveHeaderList.vue @@ -163,16 +163,16 @@ </template> <span slot="action" slot-scope="text, record"> - <a @click="receive(record)"> - <a-button v-has="'receiveHeader:receive'" v-if="(record.lastStatus < 200)" type="primary">收货</a-button><a-divider type="vertical"/> + <a v-has="'receiveHeader:receive'" v-if="(record.lastStatus < 200)" @click="receive(record)"> + <a-button type="primary">收货</a-button><a-divider type="vertical"/> </a> - <a @click="receiveHeader(record.id)"> - <a-button v-has="'receiveHeader:receive'" v-if="(record.lastStatus < 200)" type="primary">全部收货</a-button><a-divider type="vertical"/> + <a v-has="'receiveHeader:receive'" v-if="(record.lastStatus < 200)" @click="receiveHeader(record.id)"> + <a-button type="primary">全部收货</a-button><a-divider type="vertical"/> </a> - <a @click="receiveHeaderToQuality(record.id)"> - <a-button v-has="'receiveHeader:quality'" v-if="(record.lastStatus == 200)" type="primary">全部质检</a-button><a-divider type="vertical"/> + <a v-has="'receiveHeader:quality'" v-if="(record.lastStatus == 200)" @click="receiveHeaderToQuality(record.id)"> + <a-button type="primary">全部质检</a-button><a-divider type="vertical"/> </a> - <a v-has="'receiveHeader:edit'" @click="handleEdit(record)"> + <a v-has="'receiveHeader:edit'" v-if="(record.firstStatus == 0)" @click="handleEdit(record)"> <a-button type="primary">编辑</a-button><a-divider type="vertical"/> </a> <a-popconfirm v-has="'receiveHeader:remove'" v-if="(record.firstStatus == 0)" title="确定删除吗?" @confirm="() => handleDelete(record.id)" > diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/qualityHeader/service/impl/QualityDetailServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/qualityHeader/service/impl/QualityDetailServiceImpl.java index 9037def..feed265 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/qualityHeader/service/impl/QualityDetailServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/qualityHeader/service/impl/QualityDetailServiceImpl.java @@ -1,12 +1,15 @@ package org.jeecg.modules.wms.receipt.qualityHeader.service.impl; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.List; import javax.annotation.Resource; import org.jeecg.common.api.vo.Result; import org.jeecg.common.exception.JeecgBootException; +import org.jeecg.modules.wms.inventory.inventoryTransaction.entity.InventoryTransaction; +import org.jeecg.modules.wms.inventory.inventoryTransaction.service.IInventoryTransactionService; import org.jeecg.modules.wms.receipt.qualityHeader.entity.QualityDetail; import org.jeecg.modules.wms.receipt.qualityHeader.mapper.QualityDetailMapper; import org.jeecg.modules.wms.receipt.qualityHeader.service.IQualityDetailService; @@ -33,6 +36,8 @@ public class QualityDetailServiceImpl extends ServiceImpl<QualityDetailMapper, Q private IQualityDetailService qualityDetailService; @Resource private IQualityHeaderService qualityHeaderService; + @Resource + private IInventoryTransactionService inventoryTransactionService; @Override public List<QualityDetail> selectByMainId(String mainId) { @@ -68,6 +73,45 @@ public class QualityDetailServiceImpl extends ServiceImpl<QualityDetailMapper, Q if (!qualityHeaderService.updateQualityHeaderStatus(qualityDetail.getQualityId())) { throw new JeecgBootException("质检失败,更新质检状态失败"); } + + List<InventoryTransaction> inventoryTransactionList = new ArrayList<>(); + if (qualityfiedQty.compareTo(BigDecimal.ZERO) > 0) { + InventoryTransaction inventoryTransaction = new InventoryTransaction(); + inventoryTransaction.setType(QuantityConstant.INVENTORY_TRANSACTION_QUALITY); + inventoryTransaction.setWarehouseCode(qualityDetail.getWarehouseCode()); + inventoryTransaction.setCompanyCode(qualityDetail.getCompanyCode()); + inventoryTransaction.setReceiptCode(qualityDetail.getQualityCode()); + inventoryTransaction.setMaterialCode(qualityDetail.getMaterialCode()); + inventoryTransaction.setMaterialName(qualityDetail.getMaterialName()); + inventoryTransaction.setMaterialSpec(qualityDetail.getMaterialSpec()); + inventoryTransaction.setMaterialUnit(qualityDetail.getMaterialUnit()); + inventoryTransaction.setBatch(qualityDetail.getBatch()); + inventoryTransaction.setLot(qualityDetail.getLot()); + inventoryTransaction.setProject(qualityDetail.getProject()); + inventoryTransaction.setInventoryStatus(QuantityConstant.QUALITY_GOOD); + inventoryTransaction.setQty(qualityfiedQty); + inventoryTransactionList.add(inventoryTransaction); + } + if (unqualityfiedQty.compareTo(BigDecimal.ZERO) > 0) { + InventoryTransaction inventoryTransaction = new InventoryTransaction(); + inventoryTransaction.setType(QuantityConstant.INVENTORY_TRANSACTION_QUALITY); + inventoryTransaction.setWarehouseCode(qualityDetail.getWarehouseCode()); + inventoryTransaction.setCompanyCode(qualityDetail.getCompanyCode()); + inventoryTransaction.setReceiptCode(qualityDetail.getQualityCode()); + inventoryTransaction.setMaterialCode(qualityDetail.getMaterialCode()); + inventoryTransaction.setMaterialName(qualityDetail.getMaterialName()); + inventoryTransaction.setMaterialSpec(qualityDetail.getMaterialSpec()); + inventoryTransaction.setMaterialUnit(qualityDetail.getMaterialUnit()); + inventoryTransaction.setBatch(qualityDetail.getBatch()); + inventoryTransaction.setLot(qualityDetail.getLot()); + inventoryTransaction.setProject(qualityDetail.getProject()); + inventoryTransaction.setInventoryStatus(QuantityConstant.QUALITY_DEFECTIVE); + inventoryTransaction.setQty(unqualityfiedQty); + inventoryTransactionList.add(inventoryTransaction); + } + if (!inventoryTransactionService.saveBatch(inventoryTransactionList)) { + throw new JeecgBootException("质检失败,增加库存交易记录失败"); + } return Result.ok("质检成功"); } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/qualityHeader/service/impl/QualityHeaderServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/qualityHeader/service/impl/QualityHeaderServiceImpl.java index e2865c5..9f93442 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/qualityHeader/service/impl/QualityHeaderServiceImpl.java +++ b/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<QualityHeaderMapper, Q } if (maxCode != null) { String day = maxCode.substring(maxCode.length() - 13, maxCode.length() - 5); - Integer Count = Integer.valueOf(maxCode.substring(maxCode.length() - 5, maxCode.length())); - code = qualityType + df.format(now) + String.format("%05d", Count + 1); + if (day.equals(df.format(now))) { + Integer Count = Integer.valueOf(maxCode.substring(maxCode.length() - 5, maxCode.length())); + code = qualityType + df.format(now) + String.format("%05d", Count + 1); + } else { + code = qualityType + df.format(now) + String.format("%05d", 0000 + 1); + } } else { code = qualityType + df.format(now) + String.format("%05d", 0000 + 1); } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiveHeader/service/impl/ReceiveDetailServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiveHeader/service/impl/ReceiveDetailServiceImpl.java index 8ffbbee..54e3f7c 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiveHeader/service/impl/ReceiveDetailServiceImpl.java +++ b/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<ReceiveDetailMapper, R inventoryTransaction.setLot(receiveDetail.getLot()); inventoryTransaction.setProject(receiveDetail.getProject()); inventoryTransaction.setInventoryStatus(receiveDetail.getInventoryStatus()); - inventoryTransaction.setQty(receiveQty); - inventoryTransaction.setReceiptQty(receiveQty); + inventoryTransaction.setQty(taskQty); inventoryTransactionList.add(inventoryTransaction); } if (CollectionUtils.isEmpty(receiveDetailList)) { diff --git a/huaheng-wms-core/src/main/java/org/jeecg/utils/constant/QuantityConstant.java b/huaheng-wms-core/src/main/java/org/jeecg/utils/constant/QuantityConstant.java index c24f4ab..aa49a40 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/utils/constant/QuantityConstant.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/utils/constant/QuantityConstant.java @@ -12,7 +12,7 @@ package org.jeecg.utils.constant; * 8、波次状态 * 9、质检状态 * 10、盘点状态 - * 11、INVENTORY_TRANSACTION_RECEIPT + * 11、库存交易记录 * 12、调整单状态 * 13、任务内部类型 * 14、质检单类型 @@ -307,6 +307,12 @@ public class QuantityConstant { /** 移库 */ public static final Integer INVENTORY_TRANSACTION_TRANSFER = 50; + /** 收货 */ + public static final Integer INVENTORY_TRANSACTION_RECEIVE = 60; + + /** 质检 */ + public static final Integer INVENTORY_TRANSACTION_QUALITY = 70; + // 12、调整单状态 // 未批准 @@ -402,7 +408,22 @@ public class QuantityConstant { public static final Integer RECEIVE_HEADER_HALF = 100; // 收货单完成收货状态 public static final Integer RECEIVE_HEADER_COMPLETE = 200; - + // 生成质检单 + public static final Integer RECEIVE_HEADER_QUALITY = 300; + + // 新建 + public static final Integer QUALITY_HEADER_BUILD = 0; + // 部分质检 + public static final Integer QUALITY_HEADER_HALF = 100; + // 质检完成 + public static final Integer QUALITY_HEADER_COMPLETE = 200; + + /** 来料质检 */ + public static final String QUALITY_TYPE_INCOMING = "QI"; + /** 库内全检 */ + public static final String QUALITY_TYPE_INHOUSE_FULL = "QIF"; + /** 库内抽检 */ + public static final String QUALITY_TYPE_INHOUSE_PART = "QIP"; /** 对接WCS可用巷道API */ public static final String ADDRESS_WCS_AVAILABLE_ROWDWAY = "WCS_AVAILABLE_ROWDWAY"; @@ -451,8 +472,14 @@ public class QuantityConstant { public static final String PLATFORM_CODING = "赋码系统"; public static final String PLATFORM_ERP = "ERP"; public static final String PLATFORM_WMS = "WMS"; - // good + // 良品 public static final String QUALITY_GOOD = "good"; + // 次品 + public static final String QUALITY_DEFECTIVE = "defective"; + // 报废品 + public static final String QUALITY_SCRAP = "scrap"; + // 待确认 + public static final String QUALITY_DISUSSED = "discussed"; // 发送AGV任务成功 public static final int AGV_NEED_SEND = 0; @@ -515,25 +542,25 @@ public class QuantityConstant { * 出库依赖库区 */ public static final int SHIPMENT_BY_ZONE = 1; - - /** 对接WCS可用巷道API:关闭 */ + + /** 对接WCS可用巷道API:关闭 */ public static final String AVAILABLE_ROWDWAY_CLOSE = "0"; - + /** 对接WCS可用巷道API:开启 */ public static final String AVAILABLE_ROWDWAY_OPEN = "1"; - + /** 启用获取可用巷道API */ public static final String RULE_AVAILABLE_ROWDWAY_STATUS = "availableRowdwayStatus"; - - /** 接口异常响应通知配置 */ - - /** 定时任务异常响应通知配置 */ + + /** 接口异常响应通知配置 */ + + /** 定时任务异常响应通知配置 */ public static final String RULE_JOB_EXCEPTION_NOTICE_ROLE_OR_NAME = "jobExceptionNoticeRoleOrName"; - - /** 接口异常响应通知配置 */ + + /** 接口异常响应通知配置 */ public static final String RULE_API_EXCEPTION_NOTICE_ROLE_OR_NAME = "apiExceptionNoticeRoleOrName"; - - /** 定时任务执行消息通知配置 */ + + /** 定时任务执行消息通知配置 */ public static final String RULE_TASK_RUN_NOTICE_CLASS_NAME = "taskRunNoticeClassName"; public static final int RULE_TASK_NOT_CLEAR = 0;