refactor(biz): 重构采购退料和销售发货功能

This commit is contained in:
zxy 2026-05-27 15:10:17 +08:00
parent 37fff9c937
commit df957b5665
7 changed files with 24 additions and 54 deletions

View File

@ -116,6 +116,8 @@ public class PurReturnServiceImpl implements PurReturnService {
private void processReturn(PurReturnDO purReturnDO) { private void processReturn(PurReturnDO purReturnDO) {
List<PurReturnDetailDO> purReturnDetailDOS = purReturnDetailMapper.selectListByPurReturnId(purReturnDO.getId()); List<PurReturnDetailDO> purReturnDetailDOS = purReturnDetailMapper.selectListByPurReturnId(purReturnDO.getId());
SupplierDO supplier = supplierService.getSupplier(purReturnDO.getSupplierId()); SupplierDO supplier = supplierService.getSupplier(purReturnDO.getSupplierId());
String dpstNo = rawStorageLogService.generateOrderNo("1");
for (PurReturnDetailDO purReturnDetailDO : purReturnDetailDOS) { for (PurReturnDetailDO purReturnDetailDO : purReturnDetailDOS) {
PurReceiptDetailDO purReceiptDetailDO = purreceiptDetailMapper.selectById(purReturnDetailDO.getPurReceiptDetailId()); PurReceiptDetailDO purReceiptDetailDO = purreceiptDetailMapper.selectById(purReturnDetailDO.getPurReceiptDetailId());
RawStorageInventoryDO rawStorageInventory = rawStorageInventoryMapper.selectOne(new LambdaQueryWrapper<RawStorageInventoryDO>().eq(RawStorageInventoryDO::getInventBillNo, purReturnDetailDO.getInventBillNo())); RawStorageInventoryDO rawStorageInventory = rawStorageInventoryMapper.selectOne(new LambdaQueryWrapper<RawStorageInventoryDO>().eq(RawStorageInventoryDO::getInventBillNo, purReturnDetailDO.getInventBillNo()));
@ -157,6 +159,7 @@ public class PurReturnServiceImpl implements PurReturnService {
rawStorageLog.setRelarionId(purReturnDO.getId()); rawStorageLog.setRelarionId(purReturnDO.getId());
rawStorageLog.setRelarionDetailId(purReturnDetailDO.getId()); rawStorageLog.setRelarionDetailId(purReturnDetailDO.getId());
rawStorageLog.setInventBillNo(purReturnDetailDO.getInventBillNo()); rawStorageLog.setInventBillNo(purReturnDetailDO.getInventBillNo());
rawStorageLog.setDpstNo(dpstNo);
rawStorageLogService.saveRawStorageLog(rawStorageLog); rawStorageLogService.saveRawStorageLog(rawStorageLog);
rawStorageInventoryMapper.updateById(rawStorageInventory); rawStorageInventoryMapper.updateById(rawStorageInventory);
purReturnDetailMapper.updateById(purReturnDetailDO); purReturnDetailMapper.updateById(purReturnDetailDO);

View File

@ -97,11 +97,13 @@ public class RawStorageServiceImpl implements RawStorageService {
public void process(PurReceiptDO purReceipt) { public void process(PurReceiptDO purReceipt) {
SupplierDO supplierDO = supplierMapper.selectById(purReceipt.getSupplierId()); SupplierDO supplierDO = supplierMapper.selectById(purReceipt.getSupplierId());
String supplierNo = supplierDO.getSupplierNo(); String supplierNo = supplierDO.getSupplierNo();
String dpstNo = rawStorageLogService.generateOrderNo("2");
saveRawStorage(purReceipt, supplierNo); saveRawStorage(purReceipt, supplierNo);
List<PurReceiptDetailDO> detailDOList = purReceiptDetailMapper.selectListByPurReceiptId(purReceipt.getId()); List<PurReceiptDetailDO> detailDOList = purReceiptDetailMapper.selectListByPurReceiptId(purReceipt.getId());
for (PurReceiptDetailDO detail : detailDOList) { for (PurReceiptDetailDO detail : detailDOList) {
String inventoryBillNo = saveRawStorageInventory(purReceipt, detail); String inventoryBillNo = saveRawStorageInventory(purReceipt, detail);
saveRwaStorageLog(supplierNo, inventoryBillNo, purReceipt, detail); saveRwaStorageLog(dpstNo, supplierNo, inventoryBillNo, purReceipt, detail);
saveRawStorageMat(inventoryBillNo, purReceipt, detail); saveRawStorageMat(inventoryBillNo, purReceipt, detail);
detail.setInventBillNo(inventoryBillNo); detail.setInventBillNo(inventoryBillNo);
@ -154,7 +156,7 @@ public class RawStorageServiceImpl implements RawStorageService {
} }
private void saveRwaStorageLog(String supplierNo, String inventoryBillNo, PurReceiptDO purReceipt, PurReceiptDetailDO item) { private void saveRwaStorageLog(String dpstNo, String supplierNo, String inventoryBillNo, PurReceiptDO purReceipt, PurReceiptDetailDO item) {
RawStorageLogDO rawStorageLog = BeanUtils.toBean(item, RawStorageLogDO.class); RawStorageLogDO rawStorageLog = BeanUtils.toBean(item, RawStorageLogDO.class);
// 查询采购订单明细 // 查询采购订单明细
PurOrderItemDO purOrderItem = purOrderItemMapper.selectById(item.getPurOrdDetailId()); PurOrderItemDO purOrderItem = purOrderItemMapper.selectById(item.getPurOrdDetailId());
@ -187,7 +189,7 @@ public class RawStorageServiceImpl implements RawStorageService {
rawStorageLog.setOperatorQty(item.getReceiptQty()); rawStorageLog.setOperatorQty(item.getReceiptQty());
rawStorageLog.setBusinessType("10"); rawStorageLog.setBusinessType("10");
rawStorageLog.setStockItemId(item.getTwmStorageDetailId()); rawStorageLog.setStockItemId(item.getTwmStorageDetailId());
rawStorageLog.setDpstNo(purReceipt.getPurReceiptNo()); rawStorageLog.setDpstNo(dpstNo);
rawStorageLog.setSupplierNo(supplierNo); rawStorageLog.setSupplierNo(supplierNo);
rawStorageLog.setSupplierName(purReceipt.getSupplierName()); rawStorageLog.setSupplierName(purReceipt.getSupplierName());
rawStorageLog.setSupplierId(purReceipt.getSupplierId()); rawStorageLog.setSupplierId(purReceipt.getSupplierId());

View File

@ -54,4 +54,6 @@ public interface RawStorageLogService {
void saveRawStorageLog(RawStorageLogDO rawStorageLog); void saveRawStorageLog(RawStorageLogDO rawStorageLog);
String generateOrderNo(String operatorType);
} }

View File

@ -71,12 +71,11 @@ public class RawStorageLogServiceImpl implements RawStorageLogService {
@Override @Override
public void saveRawStorageLog(RawStorageLogDO rawStorageLog) { public void saveRawStorageLog(RawStorageLogDO rawStorageLog) {
// 生成订单号
rawStorageLog.setDpstNo(generateOrderNo(rawStorageLog.getOperatorType()));
rawStorageLogMapper.insert(rawStorageLog); rawStorageLogMapper.insert(rawStorageLog);
} }
private String generateOrderNo(String operatorType) { @Override
public String generateOrderNo(String operatorType) {
String prefix = "RK"; String prefix = "RK";
if ("2".equals(operatorType)) { if ("2".equals(operatorType)) {
prefix = "CK"; prefix = "CK";

View File

@ -31,28 +31,13 @@ declare module 'vue' {
DocAlert: typeof import('./../components/DocAlert/index.vue')['default'] DocAlert: typeof import('./../components/DocAlert/index.vue')['default']
Echart: typeof import('./../components/Echart/src/Echart.vue')['default'] Echart: typeof import('./../components/Echart/src/Echart.vue')['default']
Editor: typeof import('./../components/Editor/src/Editor.vue')['default'] Editor: typeof import('./../components/Editor/src/Editor.vue')['default']
ElAlert: typeof import('element-plus/es')['ElAlert']
ElAside: typeof import('element-plus/es')['ElAside']
ElAutoResizer: typeof import('element-plus/es')['ElAutoResizer']
ElAvatar: typeof import('element-plus/es')['ElAvatar'] ElAvatar: typeof import('element-plus/es')['ElAvatar']
ElBadge: typeof import('element-plus/es')['ElBadge']
ElButton: typeof import('element-plus/es')['ElButton'] ElButton: typeof import('element-plus/es')['ElButton']
ElButtonGroup: typeof import('element-plus/es')['ElButtonGroup']
ElCard: typeof import('element-plus/es')['ElCard'] ElCard: typeof import('element-plus/es')['ElCard']
ElCarousel: typeof import('element-plus/es')['ElCarousel']
ElCarouselItem: typeof import('element-plus/es')['ElCarouselItem']
ElCascader: typeof import('element-plus/es')['ElCascader']
ElCheckbox: typeof import('element-plus/es')['ElCheckbox'] ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup'] ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup']
ElCol: typeof import('element-plus/es')['ElCol'] ElCol: typeof import('element-plus/es')['ElCol']
ElCollapse: typeof import('element-plus/es')['ElCollapse']
ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem']
ElCollapseTransition: typeof import('element-plus/es')['ElCollapseTransition']
ElColorPicker: typeof import('element-plus/es')['ElColorPicker']
ElContainer: typeof import('element-plus/es')['ElContainer']
ElDatePicker: typeof import('element-plus/es')['ElDatePicker'] ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
ElDescriptions: typeof import('element-plus/es')['ElDescriptions']
ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem']
ElDialog: typeof import('element-plus/es')['ElDialog'] ElDialog: typeof import('element-plus/es')['ElDialog']
ElDivider: typeof import('element-plus/es')['ElDivider'] ElDivider: typeof import('element-plus/es')['ElDivider']
ElDrawer: typeof import('element-plus/es')['ElDrawer'] ElDrawer: typeof import('element-plus/es')['ElDrawer']
@ -68,43 +53,22 @@ declare module 'vue' {
ElementTask: typeof import('./../components/bpmnProcessDesigner/package/penal/task/ElementTask.vue')['default'] ElementTask: typeof import('./../components/bpmnProcessDesigner/package/penal/task/ElementTask.vue')['default']
ElForm: typeof import('element-plus/es')['ElForm'] ElForm: typeof import('element-plus/es')['ElForm']
ElFormItem: typeof import('element-plus/es')['ElFormItem'] ElFormItem: typeof import('element-plus/es')['ElFormItem']
ElHeader: typeof import('element-plus/es')['ElHeader']
ElIcon: typeof import('element-plus/es')['ElIcon'] ElIcon: typeof import('element-plus/es')['ElIcon']
ElImage: typeof import('element-plus/es')['ElImage']
ElImageViewer: typeof import('element-plus/es')['ElImageViewer'] ElImageViewer: typeof import('element-plus/es')['ElImageViewer']
ElInput: typeof import('element-plus/es')['ElInput'] ElInput: typeof import('element-plus/es')['ElInput']
ElInputNumber: typeof import('element-plus/es')['ElInputNumber']
ElLink: typeof import('element-plus/es')['ElLink']
ElMain: typeof import('element-plus/es')['ElMain']
ElOption: typeof import('element-plus/es')['ElOption'] ElOption: typeof import('element-plus/es')['ElOption']
ElPagination: typeof import('element-plus/es')['ElPagination'] ElPagination: typeof import('element-plus/es')['ElPagination']
ElPopover: typeof import('element-plus/es')['ElPopover'] ElPopover: typeof import('element-plus/es')['ElPopover']
ElRadio: typeof import('element-plus/es')['ElRadio']
ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
ElRate: typeof import('element-plus/es')['ElRate']
ElRow: typeof import('element-plus/es')['ElRow'] ElRow: typeof import('element-plus/es')['ElRow']
ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
ElSelect: typeof import('element-plus/es')['ElSelect'] ElSelect: typeof import('element-plus/es')['ElSelect']
ElSkeleton: typeof import('element-plus/es')['ElSkeleton'] ElSkeleton: typeof import('element-plus/es')['ElSkeleton']
ElSlider: typeof import('element-plus/es')['ElSlider']
ElSpace: typeof import('element-plus/es')['ElSpace']
ElSwitch: typeof import('element-plus/es')['ElSwitch'] ElSwitch: typeof import('element-plus/es')['ElSwitch']
ElTable: typeof import('element-plus/es')['ElTable'] ElTable: typeof import('element-plus/es')['ElTable']
ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
ElTableV2: typeof import('element-plus/es')['ElTableV2']
ElTabPane: typeof import('element-plus/es')['ElTabPane'] ElTabPane: typeof import('element-plus/es')['ElTabPane']
ElTabs: typeof import('element-plus/es')['ElTabs'] ElTabs: typeof import('element-plus/es')['ElTabs']
ElTag: typeof import('element-plus/es')['ElTag']
ElText: typeof import('element-plus/es')['ElText']
ElTimeline: typeof import('element-plus/es')['ElTimeline']
ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem']
ElTimePicker: typeof import('element-plus/es')['ElTimePicker']
ElTimeSelect: typeof import('element-plus/es')['ElTimeSelect']
ElTooltip: typeof import('element-plus/es')['ElTooltip'] ElTooltip: typeof import('element-plus/es')['ElTooltip']
ElTransfer: typeof import('element-plus/es')['ElTransfer']
ElTree: typeof import('element-plus/es')['ElTree']
ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect']
ElUpload: typeof import('element-plus/es')['ElUpload'] ElUpload: typeof import('element-plus/es')['ElUpload']
Error: typeof import('./../components/Error/src/Error.vue')['default'] Error: typeof import('./../components/Error/src/Error.vue')['default']
FlowCondition: typeof import('./../components/bpmnProcessDesigner/package/penal/flow-condition/FlowCondition.vue')['default'] FlowCondition: typeof import('./../components/bpmnProcessDesigner/package/penal/flow-condition/FlowCondition.vue')['default']

View File

@ -20,10 +20,8 @@
class="!w-full" class="!w-full"
:disabled="formType === 'detail' || formType === 'update'" :disabled="formType === 'detail' || formType === 'update'"
> >
<el-option label="标准采购" value="1" /> <el-option label="标准采购申请" value="1" />
<el-option label="设备采购" value="2" /> <el-option label="设备采购申请" value="2" />
<el-option label="标准采购退料" value="3" />
<el-option label="设备采购退料" value="4" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -73,7 +71,8 @@
class="!w-full" class="!w-full"
:disabled="formType === 'detail' || formType === 'update'" :disabled="formType === 'detail' || formType === 'update'"
@change="handleSupplierChange" @change="handleSupplierChange"
> filterable
>
<el-option <el-option
v-for="item in supplierList" v-for="item in supplierList"
:key="item.id" :key="item.id"
@ -106,7 +105,8 @@
class="!w-full" class="!w-full"
:disabled="formType === 'detail'" :disabled="formType === 'detail'"
@change="handleStoreHouseChange" @change="handleStoreHouseChange"
> filterable
>
<el-option <el-option
v-for="item in storeHouseList" v-for="item in storeHouseList"
:key="item.id" :key="item.id"
@ -264,7 +264,7 @@ const formData = reactive({
storeHouseId: undefined, storeHouseId: undefined,
storeHouseName: undefined, storeHouseName: undefined,
storeHouseCd: undefined, storeHouseCd: undefined,
billType: undefined, billType: "1",
}) })
// //
@ -650,7 +650,7 @@ const resetForm = () => {
formData.storeHouseId = undefined formData.storeHouseId = undefined
formData.storeHouseName = undefined formData.storeHouseName = undefined
formData.storeHouseCd = undefined formData.storeHouseCd = undefined
formData.billType = undefined formData.billType = "1"
detailList.value = [] detailList.value = []
storeAreaList.value = [] storeAreaList.value = []

View File

@ -95,8 +95,8 @@
<template #default="scope"> <template #default="scope">
<span v-if="scope.row.billType === '1'">标准采购申请</span> <span v-if="scope.row.billType === '1'">标准采购申请</span>
<span v-else-if="scope.row.billType === '2'">设备采购申请</span> <span v-else-if="scope.row.billType === '2'">设备采购申请</span>
<span v-else-if="scope.row.billType === '3'">标准采购退料</span> <!-- <span v-else-if="scope.row.billType === '3'">标准采购退料</span> -->
<span v-else-if="scope.row.billType === '4'">设备采购退料</span> <!-- <span v-else-if="scope.row.billType === '4'">设备采购退料</span> -->
<span v-else>-</span> <span v-else>-</span>
</template> </template>
</el-table-column> </el-table-column>
@ -111,6 +111,7 @@
</el-table-column> </el-table-column>
<el-table-column label="单据日期" align="center" prop="receiptDate" /> <el-table-column label="单据日期" align="center" prop="receiptDate" />
<el-table-column label="操作人员" align="center" prop="receiptEmpName" /> <el-table-column label="操作人员" align="center" prop="receiptEmpName" />
<el-table-column label="仓储名称" align="center" prop="storeHouseName" />
<el-table-column label="操作" align="center" > <el-table-column label="操作" align="center" >
<template #default="scope"> <template #default="scope">
<el-button <el-button
@ -171,9 +172,8 @@
<el-table-column label="物料名称" align="center" prop="materialName" /> <el-table-column label="物料名称" align="center" prop="materialName" />
<el-table-column label="规格型号" align="center" prop="spec" /> <el-table-column label="规格型号" align="center" prop="spec" />
<el-table-column label="采购数量" align="center" prop="purQty" /> <el-table-column label="采购数量" align="center" prop="purQty" />
<el-table-column label="入库数量" align="center" prop="receiptQty" /> <el-table-column label="收货数量" align="center" prop="receiptQty" />
<el-table-column label="批次号" align="center" prop="lotNo" /> <el-table-column label="批次号" align="center" prop="lotNo" />
<el-table-column label="仓储名称" align="center" prop="storeHouseName" />
<el-table-column label="库区名称" align="center" prop="storeAreaName" /> <el-table-column label="库区名称" align="center" prop="storeAreaName" />
<el-table-column label="单位" align="center" prop="unit" :formatter="getUnitName" /> <el-table-column label="单位" align="center" prop="unit" :formatter="getUnitName" />
</el-table> </el-table>