package com.xzx.gc.order.service;
|
|
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.convert.Convert;
|
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.exceptions.ExceptionUtil;
|
import cn.hutool.core.lang.Dict;
|
import cn.hutool.core.map.MapUtil;
|
import cn.hutool.core.util.ArrayUtil;
|
import cn.hutool.core.util.NumberUtil;
|
import cn.hutool.core.util.StrUtil;
|
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageInfo;
|
import com.xzx.gc.common.Result;
|
import com.xzx.gc.common.constant.CommonEnum;
|
import com.xzx.gc.common.constant.Constants;
|
import com.xzx.gc.common.constant.OrderEnum;
|
import com.xzx.gc.common.constant.PayEnum;
|
import com.xzx.gc.common.dto.SimplePage;
|
import com.xzx.gc.common.exception.BusinessException;
|
import com.xzx.gc.common.exception.RestException;
|
import com.xzx.gc.common.utils.*;
|
import com.xzx.gc.entity.*;
|
import com.xzx.gc.model.admin.PayRequestInfoModel;
|
import com.xzx.gc.model.admin.PayStorageModel;
|
import com.xzx.gc.model.admin.StorageUserModel;
|
import com.xzx.gc.model.comon.account.AllAcountParamDto;
|
import com.xzx.gc.model.order.OrderInfoReq;
|
import com.xzx.gc.model.order.RkStatisticsStorageReceiverDto;
|
import com.xzx.gc.model.user.AccountVo;
|
import com.xzx.gc.order.dto.*;
|
import com.xzx.gc.order.mapper.*;
|
import com.xzx.gc.service.AccountContext;
|
import com.xzx.gc.util.DoubleUtil;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import tk.mybatis.mapper.entity.Example;
|
|
import javax.servlet.http.HttpServletRequest;
|
import java.math.BigDecimal;
|
import java.math.RoundingMode;
|
import java.text.ParseException;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
@Service
|
@Transactional
|
@Slf4j
|
public class StorageService {
|
|
|
@Autowired
|
private PayInfoMapper payInfoMapper;
|
|
@Autowired
|
private IdUtils idUtils;
|
|
@Autowired
|
private OrderItemInfoMapper orderItemInfoMapper;
|
|
@Autowired
|
private OrderBatchInfoMapper orderBatchInfoMapper;
|
|
@Autowired
|
private OrderBatchMapper orderBatchMapper;
|
|
|
@Autowired
|
private RedisUtil redisUtil;
|
|
@Autowired
|
private AddressMapper addressMapper;
|
|
@Autowired
|
private OrderStorageDetailMapper orderStorageDetailMapper;
|
|
|
@Autowired
|
private SysStorageService sysStorageService;
|
|
@Autowired
|
private OrderDetailService orderDetailService;
|
|
@Autowired
|
private OrderClockInMapper orderClockInMapper;
|
|
@Autowired
|
private OrderStorageInfoMapper orderStorageInfoMapper;
|
|
@Autowired
|
private OrderDetailMapper orderDetailMapper;
|
|
@Autowired
|
private SysStorageMapper sysStorageMapper;
|
|
@Autowired
|
private OrderBatchInfoService orderBatchInfoService;
|
|
@Autowired
|
private OrderMapper orderMapper;
|
|
@Autowired
|
private PackageGoodsInfoService packageGoodsInfoService;
|
|
@Autowired
|
private PromotionRebateService promotionRebateService;
|
|
@Autowired
|
private OtherUserMapper otherUserMapper;
|
@Autowired
|
private AccountMapper accountMapper;
|
@Autowired
|
private OrderService orderService;
|
@Autowired
|
private HttpServletRequest request;
|
@Autowired
|
private BusinessUtil businessUtil;
|
|
@Autowired
|
private OtherUserService otherUserService;
|
|
|
@Autowired
|
private SysEnvironmentalInfoService sysEnvironmentalInfoService;
|
|
@Autowired
|
private WeightItemPriceService weightItemPriceService;
|
|
@Autowired
|
private CityPartnerService cityPartnerService;
|
|
|
@Autowired
|
private PartnerGaodeService partnerGaodeService;
|
|
@Autowired
|
private UserVehicleInfoService userVehicleInfoService;
|
@Autowired
|
private OrderHomeApplianceService orderHomeApplianceService;
|
|
/**
|
* 入库详情
|
* @param storageId
|
* @return
|
*/
|
public StorageDetailBatchDto detail(String storageId){
|
|
StorageDetailBatchDto storageDetailBatchDto=new StorageDetailBatchDto();
|
//物品清单
|
OrderStorageDetailInfo orderStorageDetailInfo=new OrderStorageDetailInfo();
|
orderStorageDetailInfo.setStorageId(storageId);
|
List<OrderStorageDetailInfo> select = orderStorageDetailMapper.select(orderStorageDetailInfo);
|
|
Example example=new Example(OrderStorageInfo.class);
|
Example.Criteria criteria = example.createCriteria();
|
criteria.andEqualTo("storageId",storageId);
|
OrderStorageInfo orderStorageInfo = orderStorageInfoMapper.selectOneByExample(example);
|
Long sysStorageId = orderStorageInfo.getSysStorageId();
|
Short sysStorageType = orderStorageInfo.getSysStorageType();
|
if(CollUtil.isNotEmpty(select)){
|
|
|
Map<String,Dict> map=new HashMap<>();
|
|
for (OrderStorageDetailInfo storageDetailInfo : select) {
|
String flag = storageDetailInfo.getFlag();
|
BigDecimal weight = storageDetailInfo.getWeight();
|
String amount = storageDetailInfo.getAmount();
|
String money = storageDetailInfo.getMoney();
|
String itemType = storageDetailInfo.getItemType();
|
String price=storageDetailInfo.getPrice();
|
|
if(OrderEnum.入库型.getValue().equals(flag)&&weight!=null&&weight.compareTo(BigDecimal.ZERO)!=0){
|
|
if(map.containsKey(itemType)){
|
Dict dict = map.get(itemType);
|
BigDecimal storageWeight1 = dict.getBigDecimal("storageWeight");
|
dict.set("storageWeight",NumberUtil.add(storageWeight1,weight));
|
BigDecimal storageMoney1 = dict.getBigDecimal("storageMoney");
|
dict.set("storageMoney",NumberUtil.add(storageMoney1,Convert.toBigDecimal(money)));
|
map.put(itemType,dict);
|
}else{
|
Dict dict=Dict.create();
|
dict.set("storageWeight",weight);
|
dict.set("storageMoney",new BigDecimal(money));
|
dict.set("price",price);
|
map.put(itemType,dict);
|
}
|
}
|
|
if(OrderEnum.入库型.getValue().equals(flag)&&amount!=null&&Convert.toBigDecimal(amount,BigDecimal.ZERO).compareTo(BigDecimal.ZERO)!=0){
|
|
if(map.containsKey(itemType)){
|
Dict dict = map.get(itemType);
|
BigDecimal storageAmount1 = dict.getBigDecimal("storageAmount");
|
dict.set("storageAmount",NumberUtil.add(storageAmount1,Convert.toBigDecimal(amount)));
|
BigDecimal storageMoney1 = dict.getBigDecimal("storageMoney");
|
dict.set("storageMoney",NumberUtil.add(storageMoney1,Convert.toBigDecimal(money)));
|
map.put(itemType,dict);
|
}else{
|
Dict dict=Dict.create();
|
dict.set("storageAmount",Convert.toBigDecimal(amount));
|
dict.set("storageMoney",new BigDecimal(money));
|
dict.set("price",price);
|
map.put(itemType,dict);
|
}
|
}
|
|
|
if(OrderEnum.回收型.getValue().equals(flag)&&weight!=null&&weight.compareTo(BigDecimal.ZERO)!=0){
|
|
if(map.containsKey(itemType)){
|
Dict dict = map.get(itemType);
|
BigDecimal recyleweight1 = dict.getBigDecimal("recyleweight");
|
dict.set("recyleweight",NumberUtil.add(recyleweight1,weight));
|
BigDecimal recyleMoney1 = dict.getBigDecimal("recyleMoney");
|
dict.set("recyleMoney",NumberUtil.add(recyleMoney1,Convert.toBigDecimal(money)));
|
map.put(itemType,dict);
|
}else{
|
Dict dict=Dict.create();
|
dict.set("recyleweight",weight);
|
dict.set("recyleMoney",new BigDecimal(money));
|
dict.set("price",price);
|
map.put(itemType,dict);
|
}
|
}
|
|
if(OrderEnum.回收型.getValue().equals(flag)&&amount!=null&&Convert.toBigDecimal(amount,BigDecimal.ZERO).compareTo(BigDecimal.ZERO)!=0){
|
|
if(map.containsKey(itemType)){
|
Dict dict = map.get(itemType);
|
BigDecimal recyleAmount1 = dict.getBigDecimal("recyleAmount");
|
dict.set("recyleAmount",NumberUtil.add(recyleAmount1,Convert.toBigDecimal(amount)));
|
BigDecimal recyleMoney1 = dict.getBigDecimal("recyleMoney");
|
dict.set("recyleMoney",NumberUtil.add(recyleMoney1,Convert.toBigDecimal(money)));
|
map.put(itemType,dict);
|
}else{
|
Dict dict=Dict.create();
|
dict.set("recyleAmount",Convert.toBigDecimal(amount));
|
dict.set("recyleMoney",new BigDecimal(money));
|
dict.set("price",price);
|
map.put(itemType,dict);
|
}
|
}
|
}
|
|
|
if(MapUtil.isNotEmpty(map)){
|
List<OrderStorageDetailInfo> list=new ArrayList<>();
|
|
|
for (String s : map.keySet()) {
|
OrderStorageDetailInfo orderStorageDetailInfo1=new OrderStorageDetailInfo();
|
|
//选取仓库价格
|
SysEnvironmentalInfo sysEnvironmentalInfo1=new SysEnvironmentalInfo();
|
if(Convert.toShort(OrderEnum.打包站.getValue()).equals(sysStorageType)){
|
PackageGoodsInfo byPackageId = packageGoodsInfoService.findByPackageIdAndItemType(sysStorageId.toString(),s);
|
BeanUtil.copyProperties(byPackageId,sysEnvironmentalInfo1);
|
}else if(Convert.toShort(OrderEnum.仓库.getValue()).equals(sysStorageType)){
|
SysStorage byId1 = sysStorageService.findById(Convert.toInt(sysStorageId));
|
Integer areaId = Convert.toInt(byId1.getArea());
|
sysEnvironmentalInfo1 = sysEnvironmentalInfoService.findByItemTypeAndArea(s, areaId);
|
}
|
|
Dict dict = map.get(s);
|
String price = dict.getStr("price");
|
//设置分类价格等
|
orderStorageDetailInfo1.setItemTypeName(sysEnvironmentalInfo1.getTitle());
|
if(StrUtil.isNotBlank(price)){
|
orderStorageDetailInfo1.setItemTypePrice(price);
|
}else {
|
orderStorageDetailInfo1.setItemTypePrice(sysEnvironmentalInfo1.getPrice());
|
}
|
orderStorageDetailInfo1.setItemTypePicture(sysEnvironmentalInfo1.getPicture());
|
//上门价格
|
orderStorageDetailInfo1.setItemTypePrice2(sysEnvironmentalInfo1.getSecondPrice());
|
|
BigDecimal recyleweight = dict.getBigDecimal("recyleweight");
|
BigDecimal recyleMoney = dict.getBigDecimal("recyleMoney");
|
BigDecimal recyleAmount = dict.getBigDecimal("recyleAmount");
|
BigDecimal storageWeight = dict.getBigDecimal("storageWeight");
|
BigDecimal storageMoney = dict.getBigDecimal("storageMoney");
|
BigDecimal storageAmount= dict.getBigDecimal("storageAmount");
|
|
if(recyleweight!=null&&recyleweight.compareTo(BigDecimal.ZERO)!=0){
|
orderStorageDetailInfo1.setWeight(recyleweight);
|
}
|
|
if(recyleMoney!=null&&recyleMoney.compareTo(BigDecimal.ZERO)!=0){
|
orderStorageDetailInfo1.setMoney(recyleMoney.toString());
|
}
|
|
if(recyleAmount!=null&&recyleAmount.compareTo(BigDecimal.ZERO)!=0){
|
orderStorageDetailInfo1.setAmount(Convert.toStr(recyleAmount));
|
}
|
|
if(storageWeight!=null&&storageWeight.compareTo(BigDecimal.ZERO)!=0){
|
orderStorageDetailInfo1.setStorageWeight(storageWeight);
|
}
|
|
if(storageMoney!=null&&storageMoney.compareTo(BigDecimal.ZERO)!=0){
|
orderStorageDetailInfo1.setStorageMoney(storageMoney.toString());
|
}
|
|
if(storageAmount!=null&&storageAmount.compareTo(BigDecimal.ZERO)!=0){
|
orderStorageDetailInfo1.setStorageAmount(storageAmount);
|
}
|
|
list.add(orderStorageDetailInfo1);
|
}
|
|
storageDetailBatchDto.setList(list);
|
}
|
}
|
|
//获取地称的
|
OrderBatchInfo batchInfo=new OrderBatchInfo();
|
|
String orderId = orderStorageInfo.getOrderId();
|
Example example1=new Example(OrderBatchInfo.class);
|
Example.Criteria criteria1 = example1.createCriteria();
|
criteria1.andEqualTo("orderId",orderId);
|
criteria1.andEqualTo("status",OrderEnum.已入库.getValue());
|
OrderBatchInfo orderBatchInfo = orderBatchInfoMapper.selectOneByExample(example1);
|
|
if(orderBatchInfo!=null){
|
String weight = orderBatchInfo.getWeight();
|
batchInfo.setWeight(weight);
|
|
OrderClockIn today = orderClockInMapper.findToday(orderStorageInfo.getReceiver(), StrUtil.split(orderBatchInfo.getCreateTime(),"")[0]);
|
if(today!=null){
|
batchInfo.setEmptyWeight(today.getWeight());
|
}
|
}
|
|
//获取仓库名称
|
if(Convert.toShort(OrderEnum.打包站.getValue()).equals(sysStorageType)){
|
CityPartner sysStorage = cityPartnerService.findById(Convert.toInt(sysStorageId));
|
if(sysStorage!=null){
|
orderStorageInfo.setSysStorageName(sysStorage.getPartnerName());
|
}
|
}else if(Convert.toShort(OrderEnum.仓库.getValue()).equals(sysStorageType)){
|
SysStorage sysStorage = sysStorageMapper.selectByPrimaryKey(sysStorageId);
|
if(sysStorage!=null){
|
orderStorageInfo.setSysStorageName(sysStorage.getStorageName());
|
}
|
}
|
|
storageDetailBatchDto.setOrderStorageInfo(orderStorageInfo);
|
|
//设置地称信息
|
if(StrUtil.isBlank(batchInfo.getWeight())) {
|
batchInfo.setWeight(Convert.toStr(Constants.WEIGHT_INIT));
|
}
|
if(StrUtil.isBlank(batchInfo.getEmptyWeight())) {
|
batchInfo.setEmptyWeight(Convert.toStr(Constants.WEIGHT_INIT));
|
}
|
storageDetailBatchDto.setOrderBatchInfo(batchInfo);
|
return storageDetailBatchDto;
|
}
|
|
|
/**
|
* 查看回收订单
|
* @param storageId
|
* @return
|
*/
|
public List<OrderDetailInfo> recyledDetail(String storageId) {
|
|
OrderStorageInfo orderStorageInfo = orderStorageInfoMapper.selectByPrimaryKey(storageId);
|
|
if(orderStorageInfo==null){
|
throw new RestException(-1,"入库订单不存在");
|
}
|
|
String orderId = orderStorageInfo.getOrderId();
|
|
|
String[] split = orderId.split(",");
|
|
|
List<OrderDetailInfo> list=new ArrayList<>();
|
for (String s : split) {
|
OrderDetailInfo orderDetailInfo = orderDetailMapper.selectByPrimaryKey(s);
|
//地址
|
Long addressId = orderDetailInfo.getAddressId();
|
AddressInfo addressInfo = addressMapper.selectByPrimaryKey(addressId);
|
orderDetailInfo.setAddress(StrUtil.nullToEmpty(addressInfo.getAddressArea())+addressInfo.getDetailAddress());
|
|
//重新赋值回收员真实名称 源于小程序这边存入的是昵称
|
String receiverPhone = orderDetailInfo.getReceiverPhone();
|
if(StrUtil.isNotBlank(receiverPhone)) {
|
OtherUserInfo otherUserInfo1 = otherUserService.findByMobileAndUserType(receiverPhone,CommonEnum.回收员.getValue());
|
if(otherUserInfo1!=null) {
|
orderDetailInfo.setReceiverName(otherUserInfo1.getName());
|
}
|
}
|
|
//回收的物品
|
OrderItemInfo orderItemInfo=new OrderItemInfo();
|
orderItemInfo.setOrderId(s);
|
List<OrderItemInfo> orderItemInfos = orderItemInfoMapper.select(orderItemInfo);
|
|
List<String> itemTypeNames=new ArrayList<>();
|
if(CollUtil.isNotEmpty(orderItemInfos)){
|
List<OrderItemInfo> collect = orderItemInfos.stream().filter(x -> (StrUtil.isNotBlank(x.getWeight())&&Convert.toBigDecimal(x.getWeight()).compareTo(BigDecimal.ZERO)!=0)||(StrUtil.isNotBlank(x.getAmount())&&Convert.toBigDecimal(x.getAmount()).compareTo(BigDecimal.ZERO)!=0)).collect(Collectors.toList());
|
|
if(CollUtil.isNotEmpty(collect)){
|
|
for (OrderItemInfo itemInfo : collect) {
|
String itemType = itemInfo.getItemType();
|
SysEnvironmentalInfo sysEnvironmentalInfo1 = sysEnvironmentalInfoService.findByItemTypeAndArea(itemType,Convert.toInt(Constants.TIANXIN_CODE));
|
if(sysEnvironmentalInfo1!=null) {
|
itemTypeNames.add(sysEnvironmentalInfo1.getTitle());
|
}
|
}
|
|
|
orderDetailInfo.setItemTypeName(CollUtil.join(itemTypeNames,"、"));
|
}
|
}
|
|
|
list.add(orderDetailInfo);
|
}
|
|
|
return list;
|
|
|
}
|
|
|
/**
|
* 统计
|
* @param userId
|
* @param userType
|
* @return
|
*/
|
public RkStatisticsDto statistics(String userId,String userType,String data,String receiver){
|
RkStatisticsDto rkStatisticsDto=new RkStatisticsDto();
|
RkStatisticsStorageDto rkStatisticsStorageDto=new RkStatisticsStorageDto();
|
RkStatisticsRecyleDto rkStatisticsRecyleDto=new RkStatisticsRecyleDto();
|
Example example=new Example(OrderStorageInfo.class);
|
Example.Criteria criteria = example.createCriteria();
|
criteria.andEqualTo("storageStatus",OrderEnum.已入库.getValue());
|
if(CommonEnum.回收员.getValue().equals(userType)){
|
criteria.andEqualTo("receiver",userId);
|
}else if(CommonEnum.入库员.getValue().equals(userType)||CommonEnum.打包员.getValue().equals(userType)){
|
criteria.andEqualTo("storageUserId",userId);
|
}else if(CommonEnum.打包站运营员.getValue().equals(userType)){
|
criteria.andEqualTo("sysStorageType",OrderEnum.打包站.getValue());
|
String partnerId = otherUserService.findById(userId).getPartnerId();
|
criteria.andEqualTo("sysStorageId",partnerId);
|
}else{
|
throw new RestException(-1,"用户角色不正确");
|
}
|
|
|
/**********入库员*************/
|
example.setOrderByClause("storage_time desc");
|
List<OrderStorageInfo> orderStorageInfos = orderStorageInfoMapper.selectByExample(example);
|
List<OrderStorageInfo> orderStorageInfosToday=new ArrayList<>();
|
//按时间筛选
|
List<OrderStorageInfo> orderStorageInfosTime=new ArrayList<>();
|
if(CollUtil.isNotEmpty(orderStorageInfos)){
|
rkStatisticsStorageDto.setNumSum(orderStorageInfos.size());
|
BigDecimal weight=Constants.WEIGHT_INIT;
|
BigDecimal money=Constants.MONEY_INIT;
|
for (OrderStorageInfo orderStorageInfo : orderStorageInfos) {
|
if(StrUtil.isNotBlank(orderStorageInfo.getStorageTime())&&DateUtil.format(new Date(),DateUtils.DATE_FORMAT_YMD).equals(orderStorageInfo.getStorageTime().split(" ")[0])){
|
orderStorageInfosToday.add(orderStorageInfo);
|
}
|
if(StrUtil.isNotBlank(data)&&StrUtil.isNotBlank(orderStorageInfo.getStorageTime())&&DateUtil.formatDate(DateUtil.parseDate(data)).equals(orderStorageInfo.getStorageTime().split(" ")[0])){
|
orderStorageInfosTime.add(orderStorageInfo);
|
}
|
weight=NumberUtil.add(weight,Convert.toBigDecimal(orderStorageInfo.getStorageWeight()));
|
money=NumberUtil.add(money,Convert.toBigDecimal(orderStorageInfo.getStorageMoney()));
|
}
|
rkStatisticsStorageDto.setStorageMoneySum(money);
|
rkStatisticsStorageDto.setStorageWeightSum(weight);
|
|
//当天入库
|
if(CollUtil.isNotEmpty(orderStorageInfosToday)){
|
rkStatisticsStorageDto.setNum(orderStorageInfosToday.size());
|
BigDecimal weightToday=Constants.WEIGHT_INIT;
|
BigDecimal moneyToday=Constants.MONEY_INIT;
|
for (OrderStorageInfo orderStorageInfo : orderStorageInfosToday) {
|
weightToday=NumberUtil.add(weightToday,Convert.toBigDecimal(orderStorageInfo.getStorageWeight()));
|
moneyToday=NumberUtil.add(moneyToday,Convert.toBigDecimal(orderStorageInfo.getStorageMoney()));
|
}
|
rkStatisticsStorageDto.setStorageMoney(moneyToday);
|
rkStatisticsStorageDto.setStorageWeight(weightToday);
|
}
|
|
|
//按时间入库
|
if(CollUtil.isNotEmpty(orderStorageInfosTime)){
|
|
List<RkStatisticsStorageReceiverDto> receiverList=new ArrayList<>();
|
if(StrUtil.isNotBlank(receiver)){
|
BigDecimal weightToday=Constants.WEIGHT_INIT;
|
BigDecimal moneyToday=Constants.MONEY_INIT;
|
//根据回收员筛选
|
List<OrderStorageInfo> collect = orderStorageInfosTime.stream().filter(x -> receiver.equals(x.getReceiver())).collect(Collectors.toList());
|
for (OrderStorageInfo orderStorageInfo : collect) {
|
weightToday=NumberUtil.add(weightToday,Convert.toBigDecimal(orderStorageInfo.getStorageWeight()));
|
moneyToday=NumberUtil.add(moneyToday,Convert.toBigDecimal(orderStorageInfo.getStorageMoney()));
|
}
|
RkStatisticsStorageReceiverDto dto=new RkStatisticsStorageReceiverDto();
|
OtherUserInfo byId = otherUserService.findById(receiver);
|
dto.setUserId(byId.getUserId());
|
dto.setAvatar(byId.getAvatar());
|
dto.setName(byId.getName());
|
dto.setMoney(businessUtil.changeMoney(moneyToday));
|
dto.setWeight(businessUtil.changeWeight(weightToday.toString()));
|
dto.setTime(data);
|
receiverList.add(dto);
|
}else {
|
//按回收员分组
|
Map<String, List<OrderStorageInfo>> collect = orderStorageInfosTime.stream().collect(Collectors.groupingBy(x -> x.getReceiver()));
|
for (String s : collect.keySet()) {
|
BigDecimal weightToday=Constants.WEIGHT_INIT;
|
BigDecimal moneyToday=Constants.MONEY_INIT;
|
RkStatisticsStorageReceiverDto dto=new RkStatisticsStorageReceiverDto();
|
OtherUserInfo byId = otherUserService.findById(s);
|
dto.setUserId(byId.getUserId());
|
dto.setAvatar(byId.getAvatar());
|
dto.setName(byId.getName());
|
for (OrderStorageInfo orderStorageInfo : collect.get(s)) {
|
weightToday=NumberUtil.add(weightToday,Convert.toBigDecimal(orderStorageInfo.getStorageWeight()));
|
moneyToday=NumberUtil.add(moneyToday,Convert.toBigDecimal(orderStorageInfo.getStorageMoney()));
|
}
|
dto.setMoney(businessUtil.changeMoney(moneyToday));
|
dto.setWeight(businessUtil.changeWeight(weightToday.toString()));
|
dto.setTime(data);
|
receiverList.add(dto);
|
}
|
}
|
rkStatisticsStorageDto.setReceiverList(receiverList);
|
}
|
|
|
//回收员赋值入库信息
|
if(CommonEnum.回收员.getValue().equals(userType)) {
|
BeanUtils.copyProperties(rkStatisticsStorageDto, rkStatisticsRecyleDto);
|
rkStatisticsRecyleDto.setNum(0);
|
rkStatisticsRecyleDto.setNumSum(0);
|
}
|
}
|
|
/**********回收员*************/
|
if(CommonEnum.回收员.getValue().equals(userType)){
|
List<OrderDetailInfo> orderRecyleInfosToday=new ArrayList<>();
|
List<OrderDetailInfo> orderInfos = orderDetailService.findByReceiver(userId);
|
if(CollUtil.isNotEmpty(orderInfos)){
|
rkStatisticsRecyleDto.setNumSum(orderInfos.size());
|
BigDecimal weight=Constants.WEIGHT_INIT;
|
BigDecimal money=Constants.MONEY_INIT;
|
for (OrderDetailInfo orderInfo : orderInfos) {
|
if(StrUtil.isNotBlank(orderInfo.getCompleteTime())&&DateUtil.format(new Date(),DateUtils.DATE_FORMAT_YMD).equals(orderInfo.getCompleteTime().split(" ")[0])){
|
orderRecyleInfosToday.add(orderInfo);
|
}
|
weight=NumberUtil.add(weight,Convert.toBigDecimal(orderInfo.getWeight()));
|
money=NumberUtil.add(money,Convert.toBigDecimal(orderInfo.getMoney()));
|
}
|
rkStatisticsRecyleDto.setRecycleMoneySum(money);
|
rkStatisticsRecyleDto.setRecycleWeightSum(weight);
|
|
if(CollUtil.isNotEmpty(orderRecyleInfosToday)){
|
rkStatisticsRecyleDto.setNum(orderRecyleInfosToday.size());
|
BigDecimal weightToday=Constants.WEIGHT_INIT;
|
BigDecimal moneyToday=Constants.MONEY_INIT;
|
for (OrderDetailInfo orderStorageInfo : orderRecyleInfosToday) {
|
weightToday=NumberUtil.add(weightToday,Convert.toBigDecimal(orderStorageInfo.getWeight()));
|
moneyToday=NumberUtil.add(moneyToday,Convert.toBigDecimal(orderStorageInfo.getMoney()));
|
}
|
rkStatisticsRecyleDto.setRecycleMoney(moneyToday);
|
rkStatisticsRecyleDto.setRecycleWeight(weightToday);
|
}
|
}
|
}
|
|
if(CommonEnum.回收员.getValue().equals(userType)){
|
rkStatisticsDto.setRkStatisticsRecyleDto(rkStatisticsRecyleDto);
|
}else{
|
rkStatisticsDto.setStatisticsStorageDto(rkStatisticsStorageDto);
|
}
|
return rkStatisticsDto;
|
}
|
|
/**
|
* 入库
|
* @param rk
|
*/
|
public void rk(RkDto rk){
|
boolean lock=false;
|
try {
|
if(redisUtil.setnx(Constants.REDIS_ORDER_KEY+"rk:"+rk.getStorageId(),rk.getStorageId())) {
|
lock=true;
|
|
|
String now = DateUtil.now();
|
OtherUserInfo otherUserInfo = otherUserMapper.selectByPrimaryKey(rk.getStorageUserId());
|
//修改入库信息
|
Example example = new Example(OrderStorageInfo.class);
|
Example.Criteria criteria = example.createCriteria();
|
criteria.andEqualTo("storageId", rk.getStorageId());
|
OrderStorageInfo orderStorageInfo = orderStorageInfoMapper.selectOneByExample(example);
|
if (orderStorageInfo == null) {
|
throw new RestException(-1, "入库单不存在");
|
}
|
|
Map map = new HashMap();
|
map.put("userId", orderStorageInfo.getReceiver());
|
List<AccountVo> receiverAccounts = accountMapper.queryMyMoney(map);
|
if(CollUtil.isEmpty(receiverAccounts)){
|
throw new RestException(-1, "回收员账户已被禁用");
|
}
|
|
//检验是否已入库
|
if (orderStorageInfo.getStorageStatus().toString().equals(OrderEnum.已入库.getValue())) {
|
throw new RestException(-1, "订单已入库");
|
}
|
orderStorageInfo.setStorageUserId(rk.getStorageUserId());
|
orderStorageInfo.setStorageUserName(otherUserInfo.getName());
|
orderStorageInfo.setStorageUserPhone(otherUserInfo.getMobilePhone());
|
orderStorageInfo.setStorageTime(now);
|
orderStorageInfo.setStorageWeight(rk.getStorageWeight());
|
orderStorageInfo.setStorageMoney(Convert.toBigDecimal(rk.getStorageMoney()));
|
|
int usertype=0;
|
String packageId=null;
|
if(otherUserInfo.getUserType().equals(CommonEnum.打包员.getValue())||otherUserInfo.getUserType().equals(CommonEnum.打包站运营员.getValue())) {
|
usertype = 2;
|
packageId = otherUserInfo.getPartnerId();
|
}else if(otherUserInfo.getUserType().equals(CommonEnum.入库员.getValue())){
|
usertype=1;
|
}
|
Map map2 = new HashMap();
|
map2.put("userId", rk.getStorageUserId());
|
List<AccountVo> storageAccount = accountMapper.queryMyMoney(map2);
|
if(CollUtil.isEmpty(storageAccount)){
|
throw new RestException(-1, "账户已被禁用");
|
}
|
AccountVo accountVo = storageAccount.get(0);
|
String overdraftLimit = accountVo.getOverdraftLimit();
|
BigDecimal limit = Convert.toBigDecimal(overdraftLimit, Constants.MONEY_INIT);
|
BigDecimal moneyDecimal=Convert.toBigDecimal(rk.getStorageMoney());
|
BigDecimal moneyDB = Convert.toBigDecimal(accountVo.getMoney(), Constants.MONEY_INIT);
|
if(usertype==2) {
|
if (NumberUtil.isLess(NumberUtil.add(limit, moneyDB), moneyDecimal)) {
|
throw new RestException(-1, "额度不足");
|
}
|
}else if(usertype==1){
|
//判断仓管员额度是否足够
|
if (NumberUtil.isGreater(moneyDecimal, limit)) {
|
throw new RestException(-1, "额度不足");
|
}
|
}
|
|
orderStorageInfo.setStorageStatus(Convert.toShort(OrderEnum.已入库.getValue()));
|
|
if(usertype==1){
|
//仓库ID 地磅必须在入库才知道入库id
|
OtherUserInfo byId = otherUserService.findById(rk.getStorageUserId());
|
orderStorageInfo.setSysStorageId(Convert.toLong(byId.getStorageId()));
|
}
|
|
//查询废纸分类的单价 合伙人存在多个区域则按最低的单价算
|
String paperBasic=null;
|
String partnerId = otherUserService.findById(orderStorageInfo.getReceiver()).getPartnerId();
|
List<PartnerGaode> byPartnerId = partnerGaodeService.findByPartnerId(partnerId);
|
List<String> areaIds=byPartnerId.stream().map(x->x.getTownId()).collect(Collectors.toList());
|
if(usertype==2) {
|
paperBasic = sysEnvironmentalInfoService.findByMinItemPriceTypeAndAreaIds(areaIds);
|
if (paperBasic==null) {
|
throw new RestException(-1,"请设置纸类的基准价格");
|
}
|
}
|
|
|
orderStorageInfoMapper.updateByPrimaryKeySelective(orderStorageInfo);
|
OrderBatchInfo orderBatchInfo = new OrderBatchInfo();
|
orderBatchInfo.setStatus(Convert.toShort(OrderEnum.已入库.getValue()));
|
Example example1 = new Example(OrderBatchInfo.class);
|
example1.createCriteria().andEqualTo("orderId", orderStorageInfo.getOrderId());
|
//修改批次信息
|
orderBatchInfoMapper.updateByExampleSelective(orderBatchInfo, example1);
|
//修改物品分类信息
|
List<WeightItemPrice> list=new ArrayList<>();
|
|
BigDecimal paperWeight=BigDecimal.ZERO;
|
//纸类的所有小类集合
|
List<String> paperChildType=CollUtil.newArrayList();
|
if(usertype==2) {
|
paperChildType = packageGoodsInfoService.findChildItemTypeByType(packageId, Constants.PAPER_ITEM_TYPE);
|
}
|
for (OrderItemDto orderItemReq : rk.getStorageItemList()) {
|
//修改入库的金额 和数量 重量
|
OrderStorageDetailInfo detailInfo = new OrderStorageDetailInfo();
|
detailInfo.setWeight(Convert.toBigDecimal(orderItemReq.getWeight(),Constants.WEIGHT_INIT));
|
detailInfo.setMoney(orderItemReq.getMoney());
|
detailInfo.setAmount(orderItemReq.getAmount());
|
detailInfo.setPrice(orderItemReq.getItemTypePrice());
|
|
Example example2 = new Example(OrderStorageDetailInfo.class);
|
Example.Criteria criteria2 = example2.createCriteria();
|
criteria2.andEqualTo("storageId", rk.getStorageId());
|
criteria2.andEqualTo("flag", OrderEnum.入库型.getValue());
|
criteria2.andEqualTo("itemType", orderItemReq.getItemType());
|
orderStorageDetailMapper.updateByExampleSelective(detailInfo, example2);
|
|
if(usertype==2) {
|
|
if(orderItemReq.getWeight().compareTo(BigDecimal.ZERO)>0){
|
//计算出所有纸类的重量
|
if(paperChildType.contains(orderItemReq.getItemType())){
|
paperWeight=NumberUtil.add(paperWeight,orderItemReq.getWeight());
|
}
|
}
|
|
//提成明细
|
if (detailInfo.getWeight().compareTo(BigDecimal.ZERO) > 0) {
|
WeightItemPrice weightItemPrice = new WeightItemPrice();
|
weightItemPrice.setStorageId(rk.getStorageId());
|
weightItemPrice.setStorageTime(now);
|
weightItemPrice.setPackageId(orderStorageInfo.getSysStorageId().toString());
|
weightItemPrice.setWeight(detailInfo.getWeight().toString());
|
weightItemPrice.setReceiver(orderStorageInfo.getReceiver());
|
weightItemPrice.setProductType(orderItemReq.getItemType());
|
weightItemPrice.setPackagePrice(orderItemReq.getItemTypePrice());
|
weightItemPrice.setGoodsPrice(paperBasic);
|
//1:未审核,2:已审核 3:异常
|
weightItemPrice.setStatus("1");
|
list.add(weightItemPrice);
|
}
|
}
|
|
}
|
|
//添加提成明细
|
if(CollUtil.isNotEmpty(list)){
|
weightItemPriceService.addBatch(list);
|
}
|
|
String payType="";
|
//修改订单相关
|
int i=0;
|
|
List<OrderInfo> listOrder=new ArrayList<>();
|
for (String orderId : orderStorageInfo.getOrderId().split(",")) {
|
|
//修改订单信息
|
OrderInfo orderInfo = new OrderInfo();
|
orderInfo.setOrderId(orderId);
|
orderInfo.setOrderStatus(OrderEnum.完成.getValue());
|
listOrder.add(orderInfo);
|
// orderMapper.updateByPrimaryKeySelective(orderInfo);
|
|
if(i==0) {
|
PayInfo payInfo = new PayInfo();
|
payInfo.setOrderId(orderId);
|
payInfo.setCreateUserId(orderStorageInfo.getReceiver());
|
List<PayInfo> select = payInfoMapper.select(payInfo);
|
if (CollUtil.isNotEmpty(select)) {
|
String payType1 = select.get(0).getPayType();
|
if (PayEnum.现金支出.getValue().equals(payType1) || PayEnum.现金收入.getValue().equals(payType1)) {
|
payType = PayEnum.现金支出.getValue();
|
} else {
|
payType = PayEnum.环保金支出.getValue();
|
}
|
}
|
}
|
//修改订单详情信息 冗余字段暂时废弃
|
// OrderDetailInfo orderDetailInfo = new OrderDetailInfo();
|
// orderDetailInfo.setStorageMoney(Convert.toStr(rk.getStorageMoney()));
|
// orderDetailInfo.setStorageUserId(orderStorageInfo.getStorageUserId());
|
// orderDetailInfo.setStorageUserName(orderStorageInfo.getStorageUserName());
|
// orderDetailInfo.setStorageUserPhone(orderStorageInfo.getStorageUserPhone());
|
// Example example2 = new Example(OrderDetailInfo.class);
|
// example2.createCriteria().andEqualTo("orderId", orderId);
|
// orderDetailMapper.updateByExampleSelective(orderDetailInfo, example2);
|
i++;
|
}
|
|
//批量修改订单状态
|
if(CollUtil.isNotEmpty(listOrder)){
|
orderBatchMapper.updateBatchByPrimaryKeySelective(listOrder);
|
}
|
|
OrderInfoReq orderInfoReq = new OrderInfoReq();
|
orderInfoReq.setNewVersion(true);
|
orderInfoReq.setReceiver(orderStorageInfo.getReceiver());
|
orderInfoReq.setStorageUserId(orderStorageInfo.getStorageUserId());
|
orderInfoReq.setPayType(payType);
|
orderInfoReq.setStorageMoney(Convert.toStr(rk.getStorageMoney()));
|
orderInfoReq.setOrderId(orderStorageInfo.getOrderId());
|
orderInfoReq.setStorageId(orderStorageInfo.getStorageId());
|
orderInfoReq.setVersion(rk.getVersion());
|
if(paperBasic!=null){
|
orderInfoReq.setPaperMoney(NumberUtil.mul(Convert.toBigDecimal(paperBasic),paperWeight));
|
}
|
//录入支付记录
|
AccountVo receiverAccount=receiverAccounts.get(0);
|
// orderService.storageOperInfo(orderInfoReq, orderStorageInfo.getStorageId(), now, accountId);
|
//更改账户信息
|
orderService.storageAccount(orderInfoReq, receiverAccount,accountVo,usertype,partnerId);
|
|
//推广返利
|
AllAcountParamDto allAcountParamDto=AllAcountParamDto.builder().
|
type(6).flowNo(orderStorageInfo.getOrderId()).userId(orderInfoReq.getStorageUserId())
|
.build();
|
// accountFactory.getService(6).account(allAcountParamDto);
|
new AccountContext(promotionRebateService).account(allAcountParamDto);
|
|
//入库消息
|
orderService.storageMessage(orderInfoReq, now);
|
|
//删除回收员的入库错误次数
|
redisUtil.hdel(Constants.REDIS_ORDER_KEY + "storage:errcount", orderStorageInfo.getReceiver());
|
}
|
} catch (RestException e){
|
throw new BusinessException(-1,e.getMsg(),ExceptionUtil.getMessage(e));
|
}catch (Exception e) {
|
ExceptionUtils.err("入库失败",e);
|
}finally {
|
if(lock) {
|
redisUtil.del(Constants.REDIS_ORDER_KEY + "rk:" + rk.getStorageId());
|
}
|
}
|
|
|
}
|
|
|
/**
|
* 已完成订单列表查询
|
* @param simplePage
|
* @param userId
|
* @return
|
*/
|
public List<OrderStorageInfo> findCompleteOrder(SimplePage simplePage,String userId){
|
Example example=new Example(OrderStorageInfo.class);
|
Example.Criteria criteria = example.createCriteria();
|
criteria.andEqualTo("storageStatus",Convert.toShort(0));
|
//rk代表入库员已完成列表查询接口
|
if(StrUtil.isBlank(simplePage.getExtra())){
|
criteria.andEqualTo("receiver",userId);
|
}else{
|
criteria.andEqualTo("storageUserId",userId);
|
}
|
example.setOrderByClause("storage_time desc");
|
PageHelper.startPage(simplePage.getPageNo(),simplePage.getPageSize());
|
List<OrderStorageInfo> select = orderStorageInfoMapper.selectByExample(example);
|
//查看是否是定点下单 不可能混合 否则会拆分成2个入库单
|
if(CollUtil.isNotEmpty(select)){
|
for (OrderStorageInfo orderStorageInfo : select) {
|
// String orderId = orderStorageInfo.getOrderId();
|
// String s = orderId.split(",")[0];
|
// OrderInfo orderInfo = orderMapper.selectByPrimaryKey(s);
|
// if(orderInfo!=null) {
|
// orderStorageInfo.setStoreId(orderInfo.getStoreId());
|
// }
|
String weight = orderStorageInfo.getStorageWeight();
|
String recycleWeight = orderStorageInfo.getRecycleWeight();
|
if(StrUtil.isBlank(weight)){
|
orderStorageInfo.setStorageWeight(Constants.WEIGHT_INIT.toString());
|
}
|
if(StrUtil.isBlank(recycleWeight)){
|
orderStorageInfo.setRecycleWeight(Constants.WEIGHT_INIT.toString());
|
}
|
|
}
|
}
|
//如果是入库员 需要显示回收员名字和其所属的车辆编号
|
if(StrUtil.isNotBlank(simplePage.getExtra())) {
|
for (OrderStorageInfo orderStorageInfo : select) {
|
String receiver = orderStorageInfo.getReceiver();
|
orderStorageInfo.setReceiverName(otherUserService.findById(receiver).getName());
|
VehicleInfo byUserId = userVehicleInfoService.findByUserId(receiver);
|
if (byUserId != null) {
|
orderStorageInfo.setVehicleNo(byUserId.getVehicleNo());
|
}
|
}
|
}else {
|
//回收员
|
for (OrderStorageInfo orderStorageInfo : select) {
|
String orderId = orderStorageInfo.getOrderId();
|
String[] split = orderId.split(",");
|
if(ArrayUtil.isNotEmpty(split)&&split.length==1){
|
orderId=split[0];
|
OrderInfo byId = orderService.findById(orderId);
|
//设置订单状态
|
orderStorageInfo.setOrderType(byId.getOrderType());
|
|
if(OrderEnum.到家服务.getValue().equals(byId.getOrderType())){
|
orderStorageInfo.setRelaPhone(byId.getRelaPhone());
|
orderStorageInfo.setCreateUserId(byId.getCreateUserId());
|
orderStorageInfo.setOrderId(byId.getOrderId());
|
}else if(OrderEnum.家电回收.getValue().equals(byId.getOrderType())){
|
OrderDetailInfo byId1 = orderDetailService.findById(orderId);
|
Long homeApplianceId = byId1.getHomeApplianceId();
|
//家电下单的家电信息
|
if(homeApplianceId!=null) {
|
OrderHomeAppliance byOrderId = orderHomeApplianceService.findById(homeApplianceId);
|
orderStorageInfo.setOrderHomeAppliance(byOrderId);
|
}
|
}
|
|
|
}
|
}
|
}
|
return select;
|
}
|
|
/**
|
* 已完成订单列表个数
|
* @return
|
*/
|
public int countCompleteOrder(String userId){
|
Example example=new Example(OrderStorageInfo.class);
|
Example.Criteria criteria = example.createCriteria();
|
criteria.andEqualTo("storageStatus",Convert.toShort(OrderEnum.已入库.getValue()));
|
criteria.andEqualTo("storageUserId",userId);
|
int select = orderStorageInfoMapper.selectCountByExample(example);
|
return select;
|
}
|
|
/**
|
* 新任务订单列表个数
|
* @return
|
*/
|
public int countStorageOrder(String userId){
|
Example example=new Example(OrderStorageInfo.class);
|
Example.Criteria criteria = example.createCriteria();
|
criteria.andEqualTo("storageStatus",Convert.toShort(OrderEnum.入库检验中.getValue()));
|
criteria.andEqualTo("storageUserId",userId);
|
int select = orderStorageInfoMapper.selectCountByExample(example);
|
return select;
|
}
|
|
|
|
/**
|
* 手动扫码入库新任务详情
|
*
|
* @param request
|
* @param userId
|
* @param usertype 1入库 2打包
|
* @return
|
*/
|
public Result<RkDto> rkDetail(HttpServletRequest request, String userId, int usertype, String packageId) {
|
Result<RkDto> result = new Result();
|
RkDto rk = new RkDto();
|
|
String key=Constants.REDIS_ORDER_KEY+"rkscan:"+request.getHeader("userId");
|
if(redisUtil.setnx(key,"0")) {
|
|
try {
|
//获取用户所有待入库订单
|
List<OrderInfo> orderInfos = orderService.findDetailByReceiverAndStatus(userId, OrderEnum.待入库.getValue());
|
if (CollUtil.isEmpty(orderInfos)) {
|
return Result.error(-1, "没有待入库的订单");
|
}
|
|
|
//定点回收
|
List<String> collect1 = orderInfos.stream().filter(x -> x.getStoreId() != null).map(OrderInfo::getOrderId).collect(Collectors.toList());
|
|
//上门回收
|
List<String> collect2 = orderInfos.stream().filter(x -> x.getStoreId() == null).map(OrderInfo::getOrderId).collect(Collectors.toList());
|
|
//1为上门 2为定点
|
int type = 0;
|
|
Dict dict = null;
|
if (CollUtil.isNotEmpty(collect1)) {
|
type = 2;
|
String storageId = idUtils.generate("RK", 0);
|
dict = orderBatchInfoService.addDB(userId, collect1, storageId, usertype, packageId);
|
}
|
|
if (CollUtil.isNotEmpty(collect2)) {
|
type = 1;
|
String storageId = idUtils.generate("RK", 2);
|
dict = orderBatchInfoService.addDB(userId, collect2, storageId, usertype, packageId);
|
}
|
|
|
//混合订单直接返回到列表
|
if (CollUtil.isNotEmpty(collect1) && CollUtil.isNotEmpty(collect2)) {
|
rk.setMixOrder(true);
|
result.setData(rk);
|
return result;
|
}
|
|
List<OrderItemDto> orderItemDtos = new ArrayList<>();
|
List<OrderStorageDetailInfo> select = (List<OrderStorageDetailInfo>) dict.get("detail");
|
//设置分类
|
setItem(rk, orderItemDtos, select, usertype, packageId);
|
rk.setStorageUserId(request.getHeader("userId"));
|
rk.setStorageId(dict.getStr("storageId"));
|
OrderInfoReq orderInfoReq = new OrderInfoReq();
|
orderInfoReq.setReceiver(userId);
|
List<String> strings = orderMapper.fwOrderListByUserId(orderInfoReq);
|
if (CollUtil.isNotEmpty(strings)) {
|
rk.setFwOrderNum(strings.size());
|
}
|
//回收金额
|
String recycleMoney = dict.getStr("recycleMoney");
|
rk.setMoney(recycleMoney);
|
result.setData(rk);
|
} catch (Exception e) {
|
ExceptionUtils.err("扫码入库失败",e);
|
} finally {
|
redisUtil.del(key);
|
}
|
return result;
|
}else {
|
throw new RestException(-1,"二维码已被扫码");
|
}
|
|
}
|
|
|
/**
|
* 设置分类信息
|
* @param rk
|
* @param orderItemDtos
|
* @param select
|
*/
|
public void setItem(RkDto rk, List<OrderItemDto> orderItemDtos, List<OrderStorageDetailInfo> select, int usertype, String packageId) {
|
//入库根据仓库所属地查看价格
|
Long parentId = null;
|
|
if (usertype == 1) {
|
SysStorage byId1 = sysStorageService.findById(Convert.toInt(packageId));
|
Integer areaId = Convert.toInt(byId1.getArea());
|
SysEnvironmentalInfo sysEnvironmentalInfo2 = sysEnvironmentalInfoService.findByItemTypeAndArea(Constants.HOUSE_HOLD_ITEM_TYPE,areaId);
|
if (sysEnvironmentalInfo2 != null) {
|
parentId = sysEnvironmentalInfo2.getId();
|
}
|
if (CollUtil.isNotEmpty(select)) {
|
for (OrderStorageDetailInfo detailInfo : select) {
|
OrderItemDto orderItemDto = new OrderItemDto();
|
BeanUtils.copyProperties(detailInfo, orderItemDto);
|
|
//设置分类名称和图片
|
String itemType = detailInfo.getItemType();
|
SysEnvironmentalInfo sysEnvironmentalInfo1 = null;
|
sysEnvironmentalInfo1 = sysEnvironmentalInfoService.findByItemTypeAndArea(itemType, areaId);
|
|
if (sysEnvironmentalInfo1 != null) {
|
|
|
Long parentId1 = sysEnvironmentalInfo1.getParentId();
|
if (parentId != null && parentId.intValue() == (parentId1.intValue())) {
|
orderItemDto.setHouseHold(true);
|
BigDecimal mul = NumberUtil.mul(Convert.toBigDecimal(sysEnvironmentalInfo1.getPutStoragePrice()), Convert.toBigDecimal(orderItemDto.getAmount(), Constants.MONEY_INIT));
|
orderItemDto.setMoney(businessUtil.changeMoney(mul));
|
}else {
|
BigDecimal mul = NumberUtil.mul(Convert.toBigDecimal(sysEnvironmentalInfo1.getPutStoragePrice()), Convert.toBigDecimal(orderItemDto.getWeight(), Constants.MONEY_INIT));
|
orderItemDto.setMoney(businessUtil.changeMoney(mul));
|
}
|
orderItemDto.setItemPic(sysEnvironmentalInfo1.getPicture());
|
orderItemDto.setItemName(sysEnvironmentalInfo1.getTitle());
|
orderItemDto.setItemTypePrice(sysEnvironmentalInfo1.getPutStoragePrice().toString());
|
// if (type == 1) {
|
// orderItemDto.setItemTypePrice(sysEnvironmentalInfo1.getPutStoragePrice().toString());
|
// } else if (type == 2) {
|
// orderItemDto.setItemTypePrice(sysEnvironmentalInfo1.getSecondPrice());
|
// }
|
|
//查找父类的itemType
|
SysEnvironmentalInfo byId = null;
|
byId = sysEnvironmentalInfoService.findById(parentId1);
|
if (byId != null) {
|
orderItemDto.setParentItemType(byId.getItemType());
|
}
|
orderItemDtos.add(orderItemDto);
|
}
|
}
|
//按重量降序排序
|
List<OrderItemDto> collect = orderItemDtos.stream().sorted(Comparator.comparing(OrderItemDto::getWeight).reversed()).collect(Collectors.toList());
|
rk.setStorageItemList(collect);
|
}
|
} else if (usertype == 2) {
|
List<PackageGoodsInfo> byPackageId = packageGoodsInfoService.findByPackageId(packageId);
|
if (CollUtil.isNotEmpty(byPackageId)) {
|
for (PackageGoodsInfo packageGoodsInfo : byPackageId) {
|
OrderItemDto orderItemDto = new OrderItemDto();
|
orderItemDto.setAmount("0");
|
orderItemDto.setWeight(Constants.WEIGHT_INIT);
|
orderItemDto.setMoney(Constants.MONEY_INIT.toString());
|
orderItemDto.setItemType(packageGoodsInfo.getItemType());
|
//设置分类名称和图片
|
Long parentId1 = packageGoodsInfo.getParentId();
|
if (parentId != null && parentId.intValue() == (parentId1.intValue())) {
|
orderItemDto.setHouseHold(true);
|
}
|
orderItemDto.setItemPic(packageGoodsInfo.getPicture());
|
orderItemDto.setItemName(packageGoodsInfo.getTitle());
|
|
orderItemDto.setItemTypePrice(packageGoodsInfo.getPutStoragePrice().toString());
|
// if (type == 1) {
|
// orderItemDto.setItemTypePrice(packageGoodsInfo.getPrice());
|
// } else if (type == 2) {
|
// orderItemDto.setItemTypePrice(packageGoodsInfo.getSecondPrice());
|
// }
|
|
//查找父类的itemType
|
SysEnvironmentalInfo byId = null;
|
packageGoodsInfo = packageGoodsInfoService.findById(parentId1);
|
if (packageGoodsInfo != null) {
|
byId = new SysEnvironmentalInfo();
|
BeanUtil.copyProperties(packageGoodsInfo, byId);
|
}
|
if (byId != null) {
|
orderItemDto.setParentItemType(byId.getItemType());
|
}
|
orderItemDtos.add(orderItemDto);
|
}
|
rk.setStorageItemList(orderItemDtos);
|
}
|
|
}
|
|
}
|
|
|
}
|