feat(biz): 优化采购入库流程并新增库存管理功能
This commit is contained in:
parent
423118e774
commit
1820d623ce
@ -112,4 +112,6 @@ public class ProStorageInventoryRespVO {
|
||||
@ExcelProperty("生产计划号")
|
||||
private String proNo;
|
||||
|
||||
private String inventBillNo;
|
||||
|
||||
}
|
||||
|
||||
@ -57,4 +57,6 @@ public class SaleDeliveryDetailSaveReqVO {
|
||||
|
||||
private Integer stockBag;
|
||||
|
||||
private String inventBillNo;
|
||||
|
||||
}
|
||||
|
||||
@ -142,4 +142,6 @@ public class ProStorageLogDO extends BaseDO {
|
||||
*/
|
||||
private String dpstNo;
|
||||
|
||||
private String inventBillNo;
|
||||
|
||||
}
|
||||
|
||||
@ -53,5 +53,4 @@ public interface ProStorageLogService {
|
||||
PageResult<ProStorageLogDO> getProStorageLogPage(ProStorageLogPageReqVO pageReqVO);
|
||||
|
||||
void saveProStorageLog(ProStorageLogDO saveReqVO);
|
||||
|
||||
}
|
||||
|
||||
@ -77,12 +77,8 @@ public class ProStorageLogServiceImpl implements ProStorageLogService {
|
||||
|
||||
|
||||
private String generatePurReceiptNo(String operatorType) {
|
||||
String prefix = "RK";
|
||||
if ("2".equals(operatorType)) {
|
||||
prefix = "CK";
|
||||
}
|
||||
String maxPurReceiptNo = proStorageLogMapper.selectMaxPurReceiptNo(operatorType);
|
||||
return CodeGenerateUtils.generateBillNo(prefix, "yyyyMM", 3, maxPurReceiptNo);
|
||||
return CodeGenerateUtils.generateBillNo("CK", maxPurReceiptNo);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -22,11 +22,11 @@ import com.ningxia.yunxi.chemmes.module.biz.service.prostorage.ProStorageService
|
||||
import com.ningxia.yunxi.chemmes.module.biz.service.prostoragelog.ProStorageLogService;
|
||||
import com.ningxia.yunxi.chemmes.module.system.dal.dataobject.user.AdminUserDO;
|
||||
import com.ningxia.yunxi.chemmes.module.system.dal.mysql.user.AdminUserMapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
@ -42,37 +42,19 @@ import static com.ningxia.yunxi.chemmes.framework.security.core.util.SecurityFra
|
||||
*/
|
||||
@Service
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
public class SaleDeliveryServiceImpl implements SaleDeliveryService {
|
||||
|
||||
@Resource
|
||||
private SaleDeliveryMapper saleDeliveryMapper;
|
||||
|
||||
@Resource
|
||||
private SaleDeliveryDetailMapper saleDeliveryDetailMapper;
|
||||
|
||||
@Resource
|
||||
private AdminUserMapper adminUserMapper;
|
||||
|
||||
@Resource
|
||||
private ProStorageInventoryMapper proStorageInventoryMapper;
|
||||
|
||||
@Resource
|
||||
private ProStorageMapper proStorageMapper;
|
||||
|
||||
@Resource
|
||||
private ProStorageMatMapper proStorageMatMapper;
|
||||
|
||||
@Resource
|
||||
private OrderItemMapper orderItemMapper;
|
||||
|
||||
@Resource
|
||||
private OrderMapper orderMapper;
|
||||
|
||||
@Resource
|
||||
private ProStorageService proStorageService;
|
||||
|
||||
@Resource
|
||||
private ProStorageLogService proStorageLogService;
|
||||
private final SaleDeliveryMapper saleDeliveryMapper;
|
||||
private final SaleDeliveryDetailMapper saleDeliveryDetailMapper;
|
||||
private final AdminUserMapper adminUserMapper;
|
||||
private final ProStorageInventoryMapper proStorageInventoryMapper;
|
||||
private final ProStorageMapper proStorageMapper;
|
||||
private final ProStorageMatMapper proStorageMatMapper;
|
||||
private final OrderItemMapper orderItemMapper;
|
||||
private final OrderMapper orderMapper;
|
||||
private final ProStorageService proStorageService;
|
||||
private final ProStorageLogService proStorageLogService;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@ -123,7 +105,6 @@ public class SaleDeliveryServiceImpl implements SaleDeliveryService {
|
||||
List<SaleDeliveryDetailDO> saleDeliveryDetails = BeanUtils.toBean(list, SaleDeliveryDetailDO.class);
|
||||
saleDeliveryDetails.forEach(detail ->
|
||||
detail.setSaleDeliveryId(saleDeliveryId)
|
||||
.setInventBillNo(detail.getInventBillNo())
|
||||
.setId(null)
|
||||
);
|
||||
saleDeliveryDetailMapper.insertBatch(saleDeliveryDetails);
|
||||
@ -235,7 +216,6 @@ public class SaleDeliveryServiceImpl implements SaleDeliveryService {
|
||||
}
|
||||
// 存入 proStorageLogService
|
||||
for (SaleDeliveryDetailDO saleDeliveryDetailDO : detailList) {
|
||||
|
||||
ProStorageLogDO proStorageLogDO = ProStorageLogDO.builder()
|
||||
.stockId(saleDeliveryDetailDO.getId())
|
||||
.description("销售出库")
|
||||
@ -262,6 +242,7 @@ public class SaleDeliveryServiceImpl implements SaleDeliveryService {
|
||||
.relarionNo(saleDelivery.getSaleDeliveryNo())
|
||||
.relarionId(saleDelivery.getId())
|
||||
.relarionDetailId(saleDeliveryDetailDO.getId())
|
||||
.inventBillNo(saleDeliveryDetailDO.getInventBillNo())
|
||||
.build();
|
||||
proStorageLogService.saveProStorageLog(proStorageLogDO);
|
||||
}
|
||||
@ -370,5 +351,7 @@ public class SaleDeliveryServiceImpl implements SaleDeliveryService {
|
||||
saleDelivery.setDeliveryStatus("2");
|
||||
// saleDelivery.setTwmStorageId(proStorage.getId());
|
||||
saleDeliveryMapper.updateById(saleDelivery);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -32,27 +32,11 @@ declare module 'vue' {
|
||||
Echart: typeof import('./../components/Echart/src/Echart.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']
|
||||
ElBadge: typeof import('element-plus/es')['ElBadge']
|
||||
ElButton: typeof import('element-plus/es')['ElButton']
|
||||
ElButtonGroup: typeof import('element-plus/es')['ElButtonGroup']
|
||||
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']
|
||||
ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup']
|
||||
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']
|
||||
ElDescriptions: typeof import('element-plus/es')['ElDescriptions']
|
||||
ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem']
|
||||
ElDialog: typeof import('element-plus/es')['ElDialog']
|
||||
ElDivider: typeof import('element-plus/es')['ElDivider']
|
||||
ElDrawer: typeof import('element-plus/es')['ElDrawer']
|
||||
@ -68,41 +52,25 @@ declare module 'vue' {
|
||||
ElementTask: typeof import('./../components/bpmnProcessDesigner/package/penal/task/ElementTask.vue')['default']
|
||||
ElForm: typeof import('element-plus/es')['ElForm']
|
||||
ElFormItem: typeof import('element-plus/es')['ElFormItem']
|
||||
ElHeader: typeof import('element-plus/es')['ElHeader']
|
||||
ElIcon: typeof import('element-plus/es')['ElIcon']
|
||||
ElImage: typeof import('element-plus/es')['ElImage']
|
||||
ElImageViewer: typeof import('element-plus/es')['ElImageViewer']
|
||||
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']
|
||||
ElPagination: typeof import('element-plus/es')['ElPagination']
|
||||
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']
|
||||
ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
|
||||
ElSelect: typeof import('element-plus/es')['ElSelect']
|
||||
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']
|
||||
ElTable: typeof import('element-plus/es')['ElTable']
|
||||
ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
|
||||
ElTableV2: typeof import('element-plus/es')['ElTableV2']
|
||||
ElTabPane: typeof import('element-plus/es')['ElTabPane']
|
||||
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']
|
||||
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']
|
||||
|
||||
@ -272,6 +272,7 @@ const handleSave = () => {
|
||||
spec: row.spec,
|
||||
unit: row.unit,
|
||||
materialId: row.materialId,
|
||||
inventBillNo: row.inventBillNo,
|
||||
}))
|
||||
|
||||
emit('select', selectData)
|
||||
|
||||
@ -697,6 +697,7 @@ const handleInventorySelect = (data: any[]) => {
|
||||
deliveriedBag: '', // 发货袋数
|
||||
deliveriedQty: '', // 发货数量
|
||||
remark: '', // 备注
|
||||
inventBillNo: inventory.inventBillNo, // 库存单号
|
||||
})
|
||||
}
|
||||
// 如果已存在,不做处理
|
||||
@ -833,6 +834,8 @@ const submitForm = async () => {
|
||||
deliveriedBagQty: item.deliveriedBag,
|
||||
deliveriedQty: item.deliveriedQty,
|
||||
remark: item.remark,
|
||||
inventBillNo: item.inventBillNo,
|
||||
// 库存单号
|
||||
}))
|
||||
|
||||
// 只传递用户选择的联系人信息,不传递备用的联系人字段
|
||||
@ -884,6 +887,8 @@ const submitAudit = async () => {
|
||||
deliveriedBagQty: item.deliveriedBag,
|
||||
deliveriedQty: item.deliveriedQty,
|
||||
remark: item.remark,
|
||||
inventBillNo: item.inventBillNo,
|
||||
// 库存单号
|
||||
}))
|
||||
|
||||
// 只传递用户选择的联系人信息,不传递备用的联系人字段
|
||||
|
||||
Loading…
Reference in New Issue
Block a user