入库明细 添加操作记录

main
HUOJIN\92525 2025-04-09 11:20:20 +08:00
parent 104d17606a
commit 27fc77b6d1
5 changed files with 78 additions and 4 deletions

View File

@ -2,6 +2,7 @@ package net.lab1024.sa.admin.module.business.wms.receive;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import net.lab1024.sa.admin.module.business.wms.base.item.domain.entity.ItemEntity;
import net.lab1024.sa.admin.module.business.wms.base.item.service.ItemQueryService;
import net.lab1024.sa.admin.module.business.wms.base.location.dao.LocationDao;
@ -42,6 +43,8 @@ import net.lab1024.sa.base.common.code.UserErrorCode;
import net.lab1024.sa.base.common.domain.ResponseDTO;
import net.lab1024.sa.base.common.util.SmartBigDecimalUtil;
import net.lab1024.sa.base.common.util.SmartRequestUtil;
import net.lab1024.sa.base.module.support.datatracer.constant.DataTracerTypeEnum;
import net.lab1024.sa.base.module.support.datatracer.service.DataTracerService;
import net.lab1024.sa.base.module.support.serialnumber.constant.SerialNumberIdEnum;
import net.lab1024.sa.base.module.support.serialnumber.service.SerialNumberService;
import org.apache.commons.collections4.CollectionUtils;
@ -53,6 +56,7 @@ import java.util.*;
import java.util.stream.Collectors;
@Service
@Slf4j
public class ReceiveService {
@Resource
private AsnDao asnDao;
@ -99,6 +103,9 @@ public class ReceiveService {
@Resource
private SerialNumberService serialNumberService;
@Resource
private DataTracerService dataTracerService;
/**
*
@ -108,6 +115,7 @@ public class ReceiveService {
*/
@Transactional(rollbackFor = Exception.class)
public ResponseDTO<String> batchReceive(BatchReceiveForm batchReceiveForm) {
Long statrTime = System.currentTimeMillis();
List<AsnDetailEntity> asnDetails = asnDetailQueryService.queryAsnDetailList(batchReceiveForm.getAsnDetailIds());
if (CollectionUtils.isEmpty(asnDetails)) {
return ResponseDTO.userErrorParam(UserErrorCode.PARAM_ERROR.getMsg());
@ -183,9 +191,15 @@ public class ReceiveService {
//批量操作
batchUpdateOrInsert(updateToAsnDetail, insertToTask, insertToInventory, updateToInventory);
//操作日志
dataTracerService.addTrace(asn.getAsnId(), DataTracerTypeEnum.ASN, "批量收货:" + joiner.getSussMsg().toString());
//刷新入库单
asnDetailService.refreshAsn(batchReceiveForm.getAsnId());
Long endTime = System.currentTimeMillis();
log.info("批量收货耗时:{}ms", endTime - statrTime);
return ResponseDTOUtils.buildResponseDTO(joiner);
}
@ -228,6 +242,7 @@ public class ReceiveService {
*/
@Transactional(rollbackFor = Exception.class)
public ResponseDTO<String> batchReturn(BatchReturnForm batchReturnForm) {
Long statrTime = System.currentTimeMillis();
List<TaskEntity> tasks = taskQueryService.queryByTaskIds(batchReturnForm.getTaskIds());
if (CollectionUtils.isEmpty(tasks)) {
return ResponseDTO.userErrorParam(UserErrorCode.PARAM_ERROR.getMsg());
@ -278,8 +293,13 @@ public class ReceiveService {
//批量操作
returnUpdateOrInsert(updateToAsnDetail, deleteToTask, updateToInventory, deleteToInventory);
//操作日志
dataTracerService.addTrace(batchReturnForm.getAsnId(), DataTracerTypeEnum.ASN, "批量退货:" + joiner.getSussMsg().toString());
//刷新入库单
asnDetailService.refreshAsn(batchReturnForm.getAsnId());
Long endTime = System.currentTimeMillis();
log.info("批量退货耗时:{}ms", endTime - statrTime);
return ResponseDTOUtils.buildResponseDTO(joiner);
}

View File

@ -31,6 +31,7 @@ import net.lab1024.sa.base.common.domain.ResponseDTO;
import net.lab1024.sa.base.common.domain.PageResult;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import net.lab1024.sa.base.module.support.datatracer.constant.DataTracerTypeEnum;
import net.lab1024.sa.base.module.support.datatracer.domain.form.DataTracerForm;
import net.lab1024.sa.base.module.support.datatracer.service.DataTracerService;
import net.lab1024.sa.base.module.support.serialnumber.constant.SerialNumberIdEnum;
import net.lab1024.sa.base.module.support.serialnumber.service.SerialNumberService;
@ -90,6 +91,9 @@ public class AsnService {
addForm.setStatus(AsnOrderStatusEnum.CREATED.getValue());
AsnEntity asnEntity = SmartBeanUtil.copy(addForm, AsnEntity.class);
asnDao.insert(asnEntity);
//操作记录
dataTracerService.addTrace(asnEntity.getAsnId(), DataTracerTypeEnum.ASN,"新建入库单", null,asnEntity);
return ResponseDTO.ok(asnEntity);
}
@ -107,6 +111,8 @@ public class AsnService {
}
AsnEntity asnEntity = SmartBeanUtil.copy(updateForm, AsnEntity.class);
asnDao.updateById(asnEntity);
//业务操作记录
dataTracerService.addTrace(updateForm.getAsnId(), DataTracerTypeEnum.ASN,"编辑入库单", exitAsn,asnEntity);
return ResponseDTO.ok(asnEntity);
}

View File

@ -2,7 +2,9 @@ package net.lab1024.sa.admin.module.business.wms.receive.asnDetail.service;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
import net.lab1024.sa.admin.module.business.goods.domain.entity.GoodsEntity;
import net.lab1024.sa.admin.module.business.wms.base.item.dao.ItemDao;
import net.lab1024.sa.admin.module.business.wms.base.item.domain.entity.ItemEntity;
import net.lab1024.sa.admin.module.business.wms.base.item.service.ItemQueryService;
@ -22,6 +24,8 @@ import net.lab1024.sa.base.common.code.UserErrorCode;
import net.lab1024.sa.base.common.util.SmartBeanUtil;
import net.lab1024.sa.base.common.domain.ResponseDTO;
import net.lab1024.sa.base.common.util.SmartBigDecimalUtil;
import net.lab1024.sa.base.module.support.datatracer.constant.DataTracerTypeEnum;
import net.lab1024.sa.base.module.support.datatracer.service.DataTracerService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
@ -57,6 +61,9 @@ public class AsnDetailService {
@Resource
private AsnDetailQueryService asnDetailQueryService;
@Resource
private DataTracerService dataTracerService;
/**
*
@ -68,8 +75,14 @@ public class AsnDetailService {
public ResponseDTO<String> add(AsnDetailAddForm addForm) {
AsnDetailEntity asnDetailEntity = SmartBeanUtil.copy(addForm, AsnDetailEntity.class);
asnDetailDao.insert(asnDetailEntity);
//业务操作记录
ItemEntity item = itemDao.selectById(addForm.getItemId());
dataTracerService.addTrace(asnDetailEntity.getAsnId(), DataTracerTypeEnum.ASN, "添加:" + item.getItemCode() + "物料明细", null, asnDetailEntity);
//刷新出库单
refreshAsn(addForm.getAsnId());
return ResponseDTO.ok();
}
@ -81,8 +94,13 @@ public class AsnDetailService {
*/
@Transactional(rollbackFor = Exception.class)
public ResponseDTO<String> update(AsnDetailUpdateForm updateForm) {
AsnDetailEntity originEntity = asnDetailDao.selectById(updateForm.getAsnDetailId());
AsnDetailEntity asnDetailEntity = SmartBeanUtil.copy(updateForm, AsnDetailEntity.class);
asnDetailDao.updateById(asnDetailEntity);
ItemEntity item = itemDao.selectById(updateForm.getItemId());
dataTracerService.addTrace(asnDetailEntity.getAsnId(), DataTracerTypeEnum.ASN, "编辑:" + item.getItemCode() + "物料明细", originEntity, asnDetailEntity);
//刷新出库单
refreshAsn(updateForm.getAsnId());
return ResponseDTO.ok();
@ -101,11 +119,12 @@ public class AsnDetailService {
return ResponseDTO.userErrorParam(UserErrorCode.PARAM_ERROR.getMsg());
}
JoinerResult joiner = JoinerResult.createJoiner();
Set<Long> asnIds = new HashSet<>();
List<Long> toDeleteList = new ArrayList<>();
List<AsnDetailEntity> asnDetails = asnDetailQueryService.queryAsnDetailList(idList);
List<Long> asnIds = asnDetails.stream().map(AsnDetailEntity::getAsnId).distinct().collect(Collectors.toList());
List<Long> itemIds = asnDetails.stream().map(AsnDetailEntity::getItemId).toList();
Map<Long, ItemEntity> mapItem = itemQueryService.queryItemList(itemIds);
List<Long> toDeleteList = new ArrayList<>();
for (AsnDetailEntity asnDetail : asnDetails) {
ItemEntity item = mapItem.get(asnDetail.getItemId());
if (asnDetail.getReceivedQuantity().compareTo(BigDecimal.ZERO) > 0) {
@ -113,13 +132,14 @@ public class AsnDetailService {
continue;
}
toDeleteList.add(asnDetail.getAsnDetailId());
asnIds.add(asnDetail.getAsnId());
joiner.getSussMsg().add(item.getItemCode() + "明细删除成功");
}
if (CollectionUtils.isNotEmpty(toDeleteList)) {
//批量删除
asnDetailManager.removeBatchByIds(toDeleteList);
//操作记录
dataTracerService.addTrace(asnIds.get(0), DataTracerTypeEnum.ASN, "批量删除:" + joiner.getSussMsg().toString());
}
//刷新出库单
@ -151,6 +171,9 @@ public class AsnDetailService {
asnDetailDao.deleteById(asnDetailId);
joiner.getSussMsg().add(item.getItemCode() + "删除成功");
//操作记录
dataTracerService.addTrace(asnId, DataTracerTypeEnum.ASN, "删除:" + joiner.getSussMsg().toString());
//刷新出库单
refreshAsn(asnId);

View File

@ -33,6 +33,16 @@ public enum DataTracerTypeEnum implements BaseEnum {
*/
OA_ENTERPRISE(3, "OA-企业信息"),
/**
*
*/
ASN(4, "入库"),
/**
*
*/
ASN_DETAIL(5, "入库明细"),
;

View File

@ -32,7 +32,7 @@ import java.util.stream.Collectors;
* @Date 2022-07-23 19:38:52
* @Wechat zhuoda1024
* @Email lab1024@163.com
* @Copyright <a href="https://1024lab.net">1024</a>
* @Copyright <a href="https://1024lab.net">1024</a>
*/
@Slf4j
@Service
@ -162,6 +162,21 @@ public class DataTracerService {
this.addTrace(tracerForm, requestUser);
}
/**
*
*/
public void addTrace(Long dataId, DataTracerTypeEnum type, String content, Object diffOld, Object diffNew) {
DataTracerForm tracerForm = DataTracerForm.builder()
.dataId(dataId)
.type(type)
.content(content)
.diffOld(diffOld == null ? null : this.getChangeContent(diffOld))
.diffNew(diffNew == null ? null : this.getChangeContent(diffNew))
.build();
RequestUser requestUser = SmartRequestUtil.getRequestUser();
this.addTrace(tracerForm, requestUser);
}
/**
*