出入库的脏数据处理
This commit is contained in:
parent
549cd7d54d
commit
e5fac47526
@ -1,8 +1,14 @@
|
||||
package com.zhgd.xmgl.modules.gt.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||
import com.zhgd.xmgl.modules.gt.entity.GtMaterialPointCheckIntoWarehouseDetail;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description: 出入库的物料详情
|
||||
@ -13,4 +19,5 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
@Mapper
|
||||
public interface GtMaterialPointCheckIntoWarehouseDetailMapper extends BaseMapper<GtMaterialPointCheckIntoWarehouseDetail> {
|
||||
|
||||
List<GtMaterialPointCheckIntoWarehouseDetail> getCheckIntoWarehouseDetails(List<Integer> typeList, @Param(Constants.WRAPPER) QueryWrapper<GtMaterialPointCheckIntoWarehouseDetail> uniqueIntoWarehouseDetailQueryWrapper);
|
||||
}
|
||||
|
||||
@ -1,4 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.zhgd.xmgl.modules.gt.mapper.GtMaterialPointCheckIntoWarehouseDetailMapper">
|
||||
<select id="getCheckIntoWarehouseDetails"
|
||||
resultType="com.zhgd.xmgl.modules.gt.entity.GtMaterialPointCheckIntoWarehouseDetail">
|
||||
select wd.*
|
||||
from gt_material_point_check_into_warehouse_detail wd
|
||||
inner join gt_material_in_out_warehouse iow on iow.id = wd.gt_material_in_out_warehouse_id
|
||||
${ew.customSqlSegment}
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@ -14,6 +14,7 @@ import com.zhgd.xmgl.modules.gt.entity.GtMaterialInOutWarehouse;
|
||||
import com.zhgd.xmgl.modules.gt.entity.GtMaterialPointCheckIntoWarehouseDetail;
|
||||
import com.zhgd.xmgl.modules.gt.entity.GtMaterialWarehouseDetail;
|
||||
import com.zhgd.xmgl.modules.gt.mapper.GtMaterialInOutWarehouseMapper;
|
||||
import com.zhgd.xmgl.modules.gt.mapper.GtMaterialPointCheckIntoWarehouseDetailMapper;
|
||||
import com.zhgd.xmgl.modules.gt.mapper.GtMaterialWarehouseDetailMapper;
|
||||
import com.zhgd.xmgl.modules.gt.service.IGtMaterialInOutWarehouseService;
|
||||
import com.zhgd.xmgl.modules.gt.service.IGtMaterialPointCheckIntoWarehouseDetailService;
|
||||
@ -25,6 +26,7 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
@ -39,6 +41,8 @@ import java.util.stream.Collectors;
|
||||
@Slf4j
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public class GtMaterialInOutWarehouseServiceImpl extends ServiceImpl<GtMaterialInOutWarehouseMapper, GtMaterialInOutWarehouse> implements IGtMaterialInOutWarehouseService {
|
||||
@Autowired
|
||||
private GtMaterialPointCheckIntoWarehouseDetailMapper gtMaterialPointCheckIntoWarehouseDetailMapper;
|
||||
@Autowired
|
||||
IGtMaterialPointCheckIntoWarehouseDetailService materialPointCheckIntoWarehouseDetailService;
|
||||
@Autowired
|
||||
@ -79,9 +83,16 @@ public class GtMaterialInOutWarehouseServiceImpl extends ServiceImpl<GtMaterialI
|
||||
if (Objects.equals(gtMaterialInOutWarehouse.getType(), 10)) {
|
||||
//用料入库
|
||||
saveGtMaterialWarehouseDetail(gtMaterialInOutWarehouse);
|
||||
} else if (Objects.equals(gtMaterialInOutWarehouse.getType(), 20)) {
|
||||
//出库
|
||||
useStock(gtMaterialInOutWarehouse.getMaterialList());
|
||||
} else {
|
||||
List<GtMaterialPointCheckIntoWarehouseDetail> materialList = gtMaterialInOutWarehouse.getMaterialList();
|
||||
if (Objects.equals(gtMaterialInOutWarehouse.getType(), 20)) {
|
||||
//出库
|
||||
useStock(materialList);
|
||||
} else if (Objects.equals(gtMaterialInOutWarehouse.getType(), 15)) {
|
||||
//退库
|
||||
materialList = getReverseGtMaterialPointCheckIntoWarehouseDetails(materialList);
|
||||
useStock(materialList);
|
||||
}
|
||||
}
|
||||
result.success("添加成功!");
|
||||
} catch (Exception e) {
|
||||
@ -136,7 +147,40 @@ public class GtMaterialInOutWarehouseServiceImpl extends ServiceImpl<GtMaterialI
|
||||
.eq(GtMaterialWarehouseDetail::getName, one.getName())
|
||||
.eq(GtMaterialWarehouseDetail::getUnit, one.getUnit())
|
||||
.eq(GtMaterialWarehouseDetail::getSpecification, one.getSpecification())
|
||||
.eq(GtMaterialWarehouseDetail::getUnitPrice, one.getUnitPrice());
|
||||
.eq(GtMaterialWarehouseDetail::getUnitPrice, one.getUnitPrice())
|
||||
.eq(GtMaterialWarehouseDetail::getProjectSn, one.getProjectSn());
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取确定唯一库存的出入库详情的物料的品名的查询
|
||||
*
|
||||
* @param one
|
||||
* @return
|
||||
*/
|
||||
private LambdaQueryWrapper<GtMaterialPointCheckIntoWarehouseDetail> getUniqueIntoWarehouseDetailLambdaQueryWrapper(GtMaterialPointCheckIntoWarehouseDetail one) {
|
||||
LambdaQueryWrapper<GtMaterialPointCheckIntoWarehouseDetail> queryWrapper = new LambdaQueryWrapper<GtMaterialPointCheckIntoWarehouseDetail>()
|
||||
.eq(GtMaterialPointCheckIntoWarehouseDetail::getName, one.getName())
|
||||
.eq(GtMaterialPointCheckIntoWarehouseDetail::getUnit, one.getUnit())
|
||||
.eq(GtMaterialPointCheckIntoWarehouseDetail::getSpecification, one.getSpecification())
|
||||
.eq(GtMaterialPointCheckIntoWarehouseDetail::getUnitPrice, one.getUnitPrice())
|
||||
.eq(GtMaterialPointCheckIntoWarehouseDetail::getProjectSn, one.getProjectSn());
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取确定唯一库存的出入库详情的物料的品名的查询,添加别名
|
||||
*
|
||||
* @param one
|
||||
* @return
|
||||
*/
|
||||
private QueryWrapper<GtMaterialPointCheckIntoWarehouseDetail> getUniqueIntoWarehouseDetailQueryWrapper(GtMaterialPointCheckIntoWarehouseDetail one, String alias) {
|
||||
QueryWrapper<GtMaterialPointCheckIntoWarehouseDetail> queryWrapper = new QueryWrapper<GtMaterialPointCheckIntoWarehouseDetail>()
|
||||
.eq(alias + ReflectionUtil.getFieldNameToUlc(GtMaterialPointCheckIntoWarehouseDetail::getName), one.getName())
|
||||
.eq(alias + ReflectionUtil.getFieldNameToUlc(GtMaterialPointCheckIntoWarehouseDetail::getUnit), one.getUnit())
|
||||
.eq(alias + ReflectionUtil.getFieldNameToUlc(GtMaterialPointCheckIntoWarehouseDetail::getSpecification), one.getSpecification())
|
||||
.eq(alias + ReflectionUtil.getFieldNameToUlc(GtMaterialPointCheckIntoWarehouseDetail::getUnitPrice), one.getUnitPrice())
|
||||
.eq(alias + ReflectionUtil.getFieldNameToUlc(GtMaterialPointCheckIntoWarehouseDetail::getProjectSn), one.getProjectSn());
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@ -153,6 +197,9 @@ public class GtMaterialInOutWarehouseServiceImpl extends ServiceImpl<GtMaterialI
|
||||
materialPointCheckIntoWarehouseDetailService.remove(queryWrapper);
|
||||
saveMaterialPointCheckIntoWarehouseDetail(gtMaterialInOutWarehouse);
|
||||
|
||||
|
||||
//删除空的没有入库出库的物料的库存表的物料详情的数据
|
||||
deleteNotIntoMaterialDetailFromWarehouseDetail(gtMaterialInOutWarehouse.getType(), oldPointDetails);
|
||||
handleGtMaterialWarehouseDetail(oldPointDetails, gtMaterialInOutWarehouse);
|
||||
result.success("修改成功!");
|
||||
}
|
||||
@ -160,6 +207,26 @@ public class GtMaterialInOutWarehouseServiceImpl extends ServiceImpl<GtMaterialI
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除空的没有入库出库的物料的库存表的物料详情的数据
|
||||
*
|
||||
* @param deletePointDetails
|
||||
*/
|
||||
private void deleteNotIntoMaterialDetailFromWarehouseDetail(Integer type, List<GtMaterialPointCheckIntoWarehouseDetail> deletePointDetails) {
|
||||
//10用料入库,15退库管理,20点验出库
|
||||
if (isIntoWarehouseDetail(type) && CollUtil.isNotEmpty(deletePointDetails)) {
|
||||
for (GtMaterialPointCheckIntoWarehouseDetail oldPointDetail : deletePointDetails) {
|
||||
QueryWrapper<GtMaterialPointCheckIntoWarehouseDetail> uniqueIntoWarehouseDetailQueryWrapper = getUniqueIntoWarehouseDetailQueryWrapper(oldPointDetail, "wd.");
|
||||
List<Integer> typeList = Arrays.asList(10, 15, 20);
|
||||
uniqueIntoWarehouseDetailQueryWrapper.in("iow." + ReflectionUtil.getFieldNameToUlc(GtMaterialInOutWarehouse::getType), typeList);
|
||||
List<GtMaterialPointCheckIntoWarehouseDetail> gtMaterialPointCheckIntoWarehouseDetails = gtMaterialPointCheckIntoWarehouseDetailMapper.getCheckIntoWarehouseDetails(typeList, uniqueIntoWarehouseDetailQueryWrapper);
|
||||
if (CollUtil.isEmpty(gtMaterialPointCheckIntoWarehouseDetails)) {
|
||||
gtMaterialWarehouseDetailMapper.delete(getUniqueWarehouseDetailLambdaQueryWrapper(oldPointDetail));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result<GtMaterialInOutWarehouse> delete(String id) {
|
||||
JSONObject jsonObject = JSON.parseObject(id, JSONObject.class);
|
||||
@ -171,19 +238,41 @@ public class GtMaterialInOutWarehouseServiceImpl extends ServiceImpl<GtMaterialI
|
||||
} else {
|
||||
removeById(id);
|
||||
|
||||
List<GtMaterialPointCheckIntoWarehouseDetail> oldPointDetails = materialPointCheckIntoWarehouseDetailService.list(getPointCheckIntoWarehouseDetailRelationLambdaQueryWrapper(gtMaterialInOutWarehouse));
|
||||
if (Objects.equals(gtMaterialInOutWarehouse.getType(), 20)) {
|
||||
//出库
|
||||
oldPointDetails = getReverseGtMaterialPointCheckIntoWarehouseDetails(oldPointDetails);
|
||||
Integer type = gtMaterialInOutWarehouse.getType();
|
||||
List<GtMaterialPointCheckIntoWarehouseDetail> oldPointDetails = null;
|
||||
if (isIntoWarehouseDetail(type)) {
|
||||
oldPointDetails = materialPointCheckIntoWarehouseDetailService.list(getPointCheckIntoWarehouseDetailRelationLambdaQueryWrapper(gtMaterialInOutWarehouse));
|
||||
if (Objects.equals(type, 20)) {
|
||||
//出库
|
||||
oldPointDetails = getReverseGtMaterialPointCheckIntoWarehouseDetails(oldPointDetails);
|
||||
}
|
||||
useStock(oldPointDetails);
|
||||
}
|
||||
useStock(oldPointDetails);
|
||||
|
||||
LambdaQueryWrapper<GtMaterialPointCheckIntoWarehouseDetail> queryWrapper = getPointCheckIntoWarehouseDetailRelationLambdaQueryWrapper(gtMaterialInOutWarehouse);
|
||||
materialPointCheckIntoWarehouseDetailService.remove(queryWrapper);
|
||||
|
||||
deleteNotIntoMaterialDetailFromWarehouseDetail(type, oldPointDetails);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否进入库存管理表
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
private boolean isIntoWarehouseDetail(Integer type) {
|
||||
List<Integer> typeList = Arrays.asList(10, 15, 20);
|
||||
return type != null && typeList.contains(type);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取出入库单号对应的物料详情
|
||||
*
|
||||
* @param gtMaterialInOutWarehouse
|
||||
* @return
|
||||
*/
|
||||
private LambdaQueryWrapper<GtMaterialPointCheckIntoWarehouseDetail> getPointCheckIntoWarehouseDetailRelationLambdaQueryWrapper(GtMaterialInOutWarehouse gtMaterialInOutWarehouse) {
|
||||
LambdaQueryWrapper<GtMaterialPointCheckIntoWarehouseDetail> queryWrapper = new LambdaQueryWrapper<GtMaterialPointCheckIntoWarehouseDetail>()
|
||||
.eq(GtMaterialPointCheckIntoWarehouseDetail::getGtMaterialInOutWarehouseId, gtMaterialInOutWarehouse.getId());
|
||||
@ -197,7 +286,8 @@ public class GtMaterialInOutWarehouseServiceImpl extends ServiceImpl<GtMaterialI
|
||||
* @param gtMaterialInOutWarehouseEntity
|
||||
*/
|
||||
private void handleGtMaterialWarehouseDetail(List<GtMaterialPointCheckIntoWarehouseDetail> oldPointDetails, GtMaterialInOutWarehouse gtMaterialInOutWarehouseEntity) {
|
||||
if (Objects.equals(gtMaterialInOutWarehouseEntity.getType(), 10)) {
|
||||
if (Objects.equals(gtMaterialInOutWarehouseEntity.getType(), 10) ||
|
||||
Objects.equals(gtMaterialInOutWarehouseEntity.getType(), 15)) {
|
||||
//入库
|
||||
useStock(oldPointDetails);
|
||||
saveGtMaterialWarehouseDetail(gtMaterialInOutWarehouseEntity);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user