Commit a5c3cdc8 authored by honghy's avatar honghy

需求124 PDA-集运包裹验货

parent d76fbcd4
......@@ -46,6 +46,13 @@ public interface ConsLocationConvert {
*/
List<ConsLocationBackVO> convertList(List<ConsLocationDO> list);
/***
* VO转实体
* @param list
* @return
*/
List<ConsLocationDO> convertListRe(List<ConsLocationUpdateReqVO> list);
/***
* 实体分页转返回分页
* @param page
......
......@@ -655,8 +655,7 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme
// 更新
ConsDO updateObj = ConsConvert.INSTANCE.convert(updateReqVO);
consMapper.updateById(updateObj);
List<ConsLocationDO> consLocationDOS = consLocationService.selectList(new LambdaQueryWrapperX<ConsLocationDO>()
.eq(ConsLocationDO::getConsId, updateReqVO.getId()));
List<ConsLocationDO> consLocationDOS = ConsLocationConvert.INSTANCE.convertListRe(consLocationService.getConsLocationListByConsId(updateReqVO.getId()));
Map<String, Long> oldMap = new HashMap<>();
for (ConsLocationDO consLocationDO : consLocationDOS) {
oldMap.put(String.valueOf(consLocationDO.getWareId()) + consLocationDO.getAreaId() + consLocationDO.getLocationId(), consLocationDO.getId());
......
package cn.iocoder.yudao.module.order.service.consInspectionDetails;
import java.util.*;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import cn.iocoder.yudao.module.order.convert.consInspectionDetails.ConsInspectionDetailsConvert;
import cn.iocoder.yudao.module.order.convert.consLocation.ConsLocationConvert;
import cn.iocoder.yudao.module.order.dal.dataobject.consInspectionDetails.ConsInspectionDetailsDO;
import cn.iocoder.yudao.module.order.dal.dataobject.consItem.ConsItemDO;
import cn.iocoder.yudao.module.order.dal.dataobject.consLocation.ConsLocationDO;
import cn.iocoder.yudao.module.order.dal.dataobject.consMedia.ConsMediaDO;
import cn.iocoder.yudao.module.order.dal.mysql.consInspectionDetails.ConsInspectionDetailsMapper;
import cn.iocoder.yudao.module.order.dal.mysql.consItem.ConsItemMapper;
import cn.iocoder.yudao.module.order.dal.mysql.consLocation.ConsLocationMapper;
import cn.iocoder.yudao.module.order.dal.mysql.consMedia.ConsMediaMapper;
import cn.iocoder.yudao.module.order.vo.consInspectionDetails.ConsInspectionDetailsCreateReqVO;
import cn.iocoder.yudao.module.order.vo.consInspectionDetails.ConsInspectionDetailsQueryVO;
import cn.iocoder.yudao.module.order.vo.consInspectionDetails.ConsInspectionDetailsUpdateReqVO;
......@@ -17,6 +21,7 @@ import cn.iocoder.yudao.module.order.vo.consInspectionDetails.InspectionDetails;
import cn.iocoder.yudao.module.order.vo.consLocation.ConsLocationBackVO;
import cn.iocoder.yudao.module.order.vo.consLocation.ConsLocationUpdateReqVO;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
......@@ -45,6 +50,9 @@ public class ConsInspectionDetailsServiceImpl extends AbstractService<ConsInspec
@Resource
private ConsLocationMapper consLocationMapper;
@Resource
private ConsMediaMapper consMediaMapper;
@Transactional
@Override
public Long createConsInspectionDetails(ConsInspectionDetailsCreateReqVO createReqVO) {
......@@ -57,6 +65,7 @@ public class ConsInspectionDetailsServiceImpl extends AbstractService<ConsInspec
consItemDO.setInspectionUnit(createReqVO.getInspectionUnit());
consItemDO.setInspectionProdAttrIds(createReqVO.getInspectionProdAttrIds());
consItemDO.setInspectionUsageIds(createReqVO.getInspectionUsageIds());
consItemDO.setInspectionUnit(createReqVO.getInspectionUnit());
consItemMapper.updateById(consItemDO);
List<ConsInspectionDetailsCreateReqVO> consWarehouseInItemDoList = createReqVO.getConsWarehouseInItemDoList();
for (ConsInspectionDetailsCreateReqVO consInspectionDetailsCreateReqVO : consWarehouseInItemDoList) {
......@@ -78,6 +87,32 @@ public class ConsInspectionDetailsServiceImpl extends AbstractService<ConsInspec
consLocationMapper.insert(ConsLocationConvert.INSTANCE.convert(consLocationUpdateReqVO));
}
}
Map<String, Long> map = consMediaMapper.selectList(new LambdaQueryWrapper<ConsMediaDO>()
.eq(ConsMediaDO::getTableName, "ecw_cons_item")
.eq(ConsMediaDO::getColumnName, "inspection")
.eq(ConsMediaDO::getBizId, consItemDO.getId())).stream().collect(Collectors.toMap(ConsMediaDO::getMediaUrl, ConsMediaDO::getId));
//新增
if (createReqVO.getMediaUrl() != null && !createReqVO.getMediaUrl().isEmpty()) {
List<String> mediaUrl = createReqVO.getMediaUrl();
for (String url : mediaUrl) {
if (map.containsKey(url)) {
map.remove(url);
} else {
ConsMediaDO consMediaDO = new ConsMediaDO()
.setMediaBusinessType(createReqVO.getMediaBusinessType())
.setTableName("ecw_cons_item")
.setColumnName("inspection")
.setMediaUrl(url)
.setBizId(createReqVO.getConsItemId())
.setConsId(createReqVO.getConsId());
consMediaMapper.insert(consMediaDO);
}
}
}
//删除
if (!map.isEmpty()) {
consMediaMapper.deleteBatchIds(map.values());
}
return 1L;
}
......@@ -85,8 +120,83 @@ public class ConsInspectionDetailsServiceImpl extends AbstractService<ConsInspec
@Override
public void updateConsInspectionDetails(ConsInspectionDetailsUpdateReqVO updateReqVO) {
// 更新
ConsInspectionDetailsDO updateObj = ConsInspectionDetailsConvert.INSTANCE.convert(updateReqVO);
consInspectionDetailsMapper.updateById(updateObj);
ConsItemDO consItemDO = consItemMapper.selectById(updateReqVO.getConsItemId());
consItemDO.setProdId(updateReqVO.getProdId());
consItemDO.setBrand(updateReqVO.getBrand());
consItemDO.setBrandType(updateReqVO.getBrandType());
consItemDO.setFeeType(updateReqVO.getFeeType());
consItemDO.setMaterial(updateReqVO.getMaterial());
consItemDO.setInspectionUnit(updateReqVO.getInspectionUnit());
consItemDO.setInspectionProdAttrIds(updateReqVO.getInspectionProdAttrIds());
consItemDO.setInspectionUsageIds(updateReqVO.getInspectionUsageIds());
consItemMapper.updateById(consItemDO);
List<ConsInspectionDetailsCreateReqVO> consWarehouseInItemDoList = updateReqVO.getConsWarehouseInItemDoList();
for (ConsInspectionDetailsCreateReqVO consInspectionDetailsCreateReqVO : consWarehouseInItemDoList) {
List<InspectionDetails> inspectionDetailsList = consInspectionDetailsCreateReqVO.getInspectionDetailsList();
if (inspectionDetailsList != null && !inspectionDetailsList.isEmpty()) {
consInspectionDetailsCreateReqVO.setInspectionDetails(JSON.toJSONString(inspectionDetailsList));
}
// 插入
ConsInspectionDetailsDO consInspectionDetails = ConsInspectionDetailsConvert.INSTANCE.convert(consInspectionDetailsCreateReqVO);
consInspectionDetailsMapper.updateById(consInspectionDetails);
//更新或删除储位
List<ConsLocationDO> consLocationDOS = ConsLocationConvert.INSTANCE.convertListRe(consLocationMapper.getConsLocationListByConsItemId(updateReqVO.getConsItemId(), consInspectionDetailsCreateReqVO.getId()));
Map<String, Long> oldMap = new HashMap<>();
for (ConsLocationDO consLocationDO : consLocationDOS) {
oldMap.put(String.valueOf(consLocationDO.getWareId()) + consLocationDO.getAreaId() + consLocationDO.getLocationId(), consLocationDO.getId());
}
List<ConsLocationUpdateReqVO> consLocationBackList = consInspectionDetailsCreateReqVO.getConsLocationBackList();
List<ConsLocationDO> addList = new ArrayList<>();
for (ConsLocationUpdateReqVO consLocationUpdateReqVO : consLocationBackList) {
String key = String.valueOf(consLocationUpdateReqVO.getWareId()) + consLocationUpdateReqVO.getAreaId() + consLocationUpdateReqVO.getLocationId();
if (oldMap.containsKey(key)) {
oldMap.remove(key);
} else {
ConsLocationDO consLocationDO = new ConsLocationDO()
.setConsId(updateReqVO.getId())
.setConsItemId(updateReqVO.getConsItemId())
.setInspectionId(consInspectionDetailsCreateReqVO.getId())
.setWareId(consLocationUpdateReqVO.getWareId())
.setAreaId(consLocationUpdateReqVO.getAreaId())
.setLocationId(consLocationUpdateReqVO.getLocationId());
addList.add(consLocationDO);
}
}
if (addList.size() > 0) {
consLocationMapper.insertBatch(addList);
}
if (!oldMap.isEmpty()) {
oldMap.forEach((k, v) -> consLocationMapper.deleteById(v));
}
}
//更新影像
Map<String, Long> map = consMediaMapper.selectList(new LambdaQueryWrapper<ConsMediaDO>()
.eq(ConsMediaDO::getTableName, "ecw_cons_item")
.eq(ConsMediaDO::getColumnName, "inspection")
.eq(ConsMediaDO::getBizId, consItemDO.getId())).stream().collect(Collectors.toMap(ConsMediaDO::getMediaUrl, ConsMediaDO::getId));
//新增
if (updateReqVO.getMediaUrl() != null && !updateReqVO.getMediaUrl().isEmpty()) {
List<String> mediaUrl = updateReqVO.getMediaUrl();
for (String url : mediaUrl) {
if (map.containsKey(url)) {
map.remove(url);
} else {
ConsMediaDO consMediaDO = new ConsMediaDO()
.setMediaBusinessType(updateReqVO.getMediaBusinessType())
.setTableName("ecw_cons_item")
.setColumnName("inspection")
.setMediaUrl(url)
.setBizId(updateReqVO.getConsItemId())
.setConsId(updateReqVO.getConsId());
consMediaMapper.insert(consMediaDO);
}
}
}
//删除
if (!map.isEmpty()) {
consMediaMapper.deleteBatchIds(map.values());
}
}
@Override
......
......@@ -74,6 +74,11 @@ public class ConsInspectionDetailsBaseVO {
@ApiModelProperty(value = "验货商品单位")
private String inspectionUnit;
/**
* 文件
*/
private List<String> mediaUrl;
/**
* 无牌价0,有牌价1,中性品牌价2
*/
......@@ -87,4 +92,7 @@ public class ConsInspectionDetailsBaseVO {
@ApiModelProperty(value = "验货纪录明细")
private List<InspectionDetails> inspectionDetailsList;
public Integer mediaBusinessType;
}
......@@ -11,4 +11,6 @@ import javax.validation.constraints.*;
@ApiModel("管理后台 - 集运验货明细创建 Request VO")
public class ConsInspectionDetailsCreateReqVO extends ConsInspectionDetailsBaseVO {
@ApiModelProperty(value = "主键ID")
private Long id;
}
......@@ -12,7 +12,6 @@ import javax.validation.constraints.*;
public class ConsInspectionDetailsUpdateReqVO extends ConsInspectionDetailsBaseVO {
@ApiModelProperty(value = "主键ID", required = true)
@NotNull(message = "主键ID不能为空")
private Long id;
}
......@@ -129,4 +129,9 @@ public class ConsItemBackVO {
* 验货明细
*/
List<ConsInspectionDetailsUpdateReqVO> consInspectionDetails;
/**
* 文件
*/
private List<String> mediaUrl;
}
......@@ -13,6 +13,7 @@ import cn.iocoder.yudao.module.order.convert.consInspectionDetails.ConsInspectio
import cn.iocoder.yudao.module.order.dal.dataobject.cons.ConsDO;
import cn.iocoder.yudao.module.order.dal.dataobject.consInspectionDetails.ConsInspectionDetailsDO;
import cn.iocoder.yudao.module.order.dal.dataobject.consMedia.ConsMediaDO;
import cn.iocoder.yudao.module.order.dal.mysql.consMedia.ConsMediaMapper;
import cn.iocoder.yudao.module.order.service.cons.ConsService;
import cn.iocoder.yudao.module.order.service.consInspectionDetails.ConsInspectionDetailsService;
import cn.iocoder.yudao.module.order.service.consItem.ConsItemService;
......@@ -24,6 +25,7 @@ import cn.iocoder.yudao.module.order.vo.consItem.ConsItemBackVO;
import cn.iocoder.yudao.module.order.vo.consItem.ConsItemQueryVO;
import cn.iocoder.yudao.module.order.vo.consLocation.ConsLocationUpdateReqVO;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.*;
......@@ -34,6 +36,7 @@ import io.swagger.annotations.*;
import javax.validation.*;
import java.util.*;
import java.util.stream.Collectors;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
......@@ -67,6 +70,8 @@ public class ConsInspectionDetailsController {
@Resource
private ConsLocationService consLocationService;
@Resource
private ConsMediaService consMediaService;
@PostMapping("/create")
@ApiOperation("创建集运验货明细")
......@@ -110,10 +115,20 @@ public class ConsInspectionDetailsController {
.eq(ConsInspectionDetailsDO::getConsItemId, consItemBack.getId()));
List<ConsInspectionDetailsUpdateReqVO> convertedList = ConsInspectionDetailsConvert.INSTANCE.convertList(consInspectionDetails);
for (ConsInspectionDetailsUpdateReqVO consInspectionDetailsBackVO : convertedList) {
consInspectionDetailsBackVO.setInspectionDetailsList(JSON.parseArray(consInspectionDetailsBackVO.getInspectionDetails(), InspectionDetails.class));
//初始化箱明细
if (StringUtils.isNotBlank(consInspectionDetailsBackVO.getInspectionDetails())) {
consInspectionDetailsBackVO.setInspectionDetailsList(JSON.parseArray(consInspectionDetailsBackVO.getInspectionDetails(), InspectionDetails.class));
} else {
consInspectionDetailsBackVO.setInspectionDetailsList(new ArrayList<>());
}
consInspectionDetailsBackVO.setConsLocationBackList(consLocationService.getConsLocationListByConsItemId(consInspectionDetailsBackVO.getConsItemId(), consInspectionDetailsBackVO.getId()));
}
consItemBack.setConsInspectionDetails(convertedList);
consItemBack.setMediaUrl(consMediaService.selectList(new LambdaQueryWrapper<ConsMediaDO>()
.eq(ConsMediaDO::getTableName, "ecw_cons_item")
.eq(ConsMediaDO::getColumnName, "inspection")
.eq(ConsMediaDO::getBizId, consItemBack.getId())
.eq(ConsMediaDO::getMediaBusinessType, 4)).stream().map(ConsMediaDO::getMediaUrl).collect(Collectors.toList()));
}
consBackVO.setConsItemVOList(consItemBacks);
if (customerContacts != null) {
......@@ -127,11 +142,6 @@ public class ConsInspectionDetailsController {
List<ConsLocationUpdateReqVO> consLocationBackList = consLocationService.getConsLocationListByConsId(cons.getId());
consBackVO.setConsLocationBackList(consLocationBackList == null ? new ArrayList<>() : consLocationBackList);
//获取签收图片
ConsMediaDO consMedia = consentMediaService.getOne(new LambdaQueryWrapperX<ConsMediaDO>().eq(ConsMediaDO::getConsId, cons.getId())
.eq(ConsMediaDO::getBizId, cons.getId())
.eq(ConsMediaDO::getMediaBusinessType, 3));
consBackVO.setMediaUrl(consMedia == null ? "" : consMedia.getMediaUrl());
return success(consBackVO);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment