|
@@ -21,6 +21,9 @@ import com.sckw.core.model.enums.CooperateTypeEnum;
|
|
|
import com.sckw.core.model.enums.OrderRuleEnum;
|
|
import com.sckw.core.model.enums.OrderRuleEnum;
|
|
|
import com.sckw.core.model.enums.RedisOrderGenerateEnum;
|
|
import com.sckw.core.model.enums.RedisOrderGenerateEnum;
|
|
|
import com.sckw.core.model.page.PageRes;
|
|
import com.sckw.core.model.page.PageRes;
|
|
|
|
|
+import com.sckw.core.model.vo.TableBottom;
|
|
|
|
|
+import com.sckw.core.model.vo.TableStatisticRes;
|
|
|
|
|
+import com.sckw.core.model.vo.TableTop;
|
|
|
import com.sckw.core.utils.CollectionUtils;
|
|
import com.sckw.core.utils.CollectionUtils;
|
|
|
import com.sckw.core.utils.DateUtils;
|
|
import com.sckw.core.utils.DateUtils;
|
|
|
import com.sckw.core.utils.OrderGenerateSeqNoUtils;
|
|
import com.sckw.core.utils.OrderGenerateSeqNoUtils;
|
|
@@ -67,6 +70,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
import java.math.RoundingMode;
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
|
|
+import java.util.concurrent.atomic.AtomicInteger;
|
|
|
import java.util.function.Function;
|
|
import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
@@ -242,11 +246,12 @@ public class KwoTradeOrderService {
|
|
|
boolean loadFlag = false;
|
|
boolean loadFlag = false;
|
|
|
boolean unloadFlag = false;
|
|
boolean unloadFlag = false;
|
|
|
for (AddressInfo e : addressInfos) {
|
|
for (AddressInfo e : addressInfos) {
|
|
|
|
|
+ BigDecimal addressAmount = Objects.isNull(e.getAmount()) ? BigDecimal.ZERO : e.getAmount();
|
|
|
if (Objects.equals(e.getAddressType(), OrderAddressTypeEnum.LOAD.getType())) {
|
|
if (Objects.equals(e.getAddressType(), OrderAddressTypeEnum.LOAD.getType())) {
|
|
|
- totalLoadAmount = totalLoadAmount.add(e.getAmount());
|
|
|
|
|
|
|
+ totalLoadAmount = totalLoadAmount.add(addressAmount);
|
|
|
loadFlag = true;
|
|
loadFlag = true;
|
|
|
} else {
|
|
} else {
|
|
|
- totalUnloadAmount = totalUnloadAmount.add(e.getAmount());
|
|
|
|
|
|
|
+ totalUnloadAmount = totalUnloadAmount.add(addressAmount);
|
|
|
unloadFlag = true;
|
|
unloadFlag = true;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -256,15 +261,19 @@ public class KwoTradeOrderService {
|
|
|
if (unloadFlag && totalUnloadAmount.compareTo(amount) != 0) {
|
|
if (unloadFlag && totalUnloadAmount.compareTo(amount) != 0) {
|
|
|
throw new BusinessException("卸货分配量总量与订单总量不符!");
|
|
throw new BusinessException("卸货分配量总量与订单总量不符!");
|
|
|
}
|
|
}
|
|
|
|
|
+ AtomicInteger loadSort = new AtomicInteger(0);
|
|
|
|
|
+ AtomicInteger unloadSort = new AtomicInteger(0);
|
|
|
addressInfos.forEach(e -> {
|
|
addressInfos.forEach(e -> {
|
|
|
KwoTradeOrderAddress address = BeanUtil.copyProperties(e, KwoTradeOrderAddress.class);
|
|
KwoTradeOrderAddress address = BeanUtil.copyProperties(e, KwoTradeOrderAddress.class);
|
|
|
address.setTOrderId(id).setTOrderNo(tOrderNo);
|
|
address.setTOrderId(id).setTOrderNo(tOrderNo);
|
|
|
//todo MongoDB如何存多个地址信息?
|
|
//todo MongoDB如何存多个地址信息?
|
|
|
if (Objects.equals(address.getAddressType(), OrderAddressTypeEnum.LOAD.getType())) {
|
|
if (Objects.equals(address.getAddressType(), OrderAddressTypeEnum.LOAD.getType())) {
|
|
|
|
|
+ address.setSort(loadSort.getAndIncrement());
|
|
|
order.setLoadName(e.getName()).setLoadType(e.getType()).setLoadContacts(e.getContacts())
|
|
order.setLoadName(e.getName()).setLoadType(e.getType()).setLoadContacts(e.getContacts())
|
|
|
.setLoadPhone(e.getPhone()).setLoadCityCode(String.valueOf(e.getCityCode())).setLoadCityName(e.getCityName())
|
|
.setLoadPhone(e.getPhone()).setLoadCityCode(String.valueOf(e.getCityCode())).setLoadCityName(e.getCityName())
|
|
|
.setLoadDetailAddress(e.getDetailAddress()).setLoadLat(e.getLat()).setLoadLng(e.getLng());
|
|
.setLoadDetailAddress(e.getDetailAddress()).setLoadLat(e.getLat()).setLoadLng(e.getLng());
|
|
|
} else {
|
|
} else {
|
|
|
|
|
+ address.setSort(unloadSort.getAndIncrement());
|
|
|
order.setUnloadName(e.getName()).setUnloadType(e.getType()).setUnloadContacts(e.getContacts())
|
|
order.setUnloadName(e.getName()).setUnloadType(e.getType()).setUnloadContacts(e.getContacts())
|
|
|
.setUnloadPhone(e.getPhone()).setUnloadCityCode(String.valueOf(e.getCityCode())).setUnloadCityName(e.getCityName())
|
|
.setUnloadPhone(e.getPhone()).setUnloadCityCode(String.valueOf(e.getCityCode())).setUnloadCityName(e.getCityName())
|
|
|
.setUnloadDetailAddress(e.getDetailAddress()).setUnloadLat(e.getLat()).setUnloadLng(e.getLng());
|
|
.setUnloadDetailAddress(e.getDetailAddress()).setUnloadLat(e.getLat()).setUnloadLng(e.getLng());
|
|
@@ -1569,38 +1578,9 @@ public class KwoTradeOrderService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public PageRes tradeOrderSelect(TradeOrderListSelectParam params) {
|
|
public PageRes tradeOrderSelect(TradeOrderListSelectParam params) {
|
|
|
- TradeOrderListSelectDTO dto = BeanUtil.copyProperties(params, TradeOrderListSelectDTO.class);
|
|
|
|
|
- dto.setEntId(LoginUserHolder.getEntId())
|
|
|
|
|
- .setUserId(LoginUserHolder.getUserId())
|
|
|
|
|
- .setIsMain(LoginUserHolder.getIsMain());
|
|
|
|
|
- //装卸货地址
|
|
|
|
|
- String loadCode = params.getShippingAddressCode();
|
|
|
|
|
- if (StringUtils.isNotBlank(loadCode)) {
|
|
|
|
|
- switch (params.getShippingAddressLevel()) {
|
|
|
|
|
- case 1 -> dto.setLoadAddressCode(
|
|
|
|
|
- loadCode.substring(0, 2).trim());
|
|
|
|
|
- case 2 -> dto.setLoadAddressCode(
|
|
|
|
|
- loadCode.substring(0, 4).trim());
|
|
|
|
|
- case 3 -> dto.setLoadAddressCode(loadCode);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- String unloadCode = params.getUnloadingAddressCode();
|
|
|
|
|
- if (StringUtils.isNotBlank(unloadCode)) {
|
|
|
|
|
- switch (params.getUnloadingAddressLevel()) {
|
|
|
|
|
- case 1 -> dto.setUnloadAddressCode(
|
|
|
|
|
- loadCode.substring(0, 2).trim());
|
|
|
|
|
- case 2 -> dto.setUnloadAddressCode(
|
|
|
|
|
- loadCode.substring(0, 4).trim());
|
|
|
|
|
- case 3 -> dto.setUnloadAddressCode(loadCode);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- String keywords = params.getKeywords();
|
|
|
|
|
- List<Long> goodIds = new ArrayList<>();
|
|
|
|
|
- if (StringUtils.isNotBlank(keywords)) {
|
|
|
|
|
- goodIds = goodsInfoService.selectIdsLikeGoodsName(keywords);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ TradeOrderListSelectDTO dto = buildSelectParam(params);
|
|
|
PageHelper.startPage(params.getPage(), params.getPageSize());
|
|
PageHelper.startPage(params.getPage(), params.getPageSize());
|
|
|
- List<OrderListResDTO> list = kwoTradeOrderMapper.tradeOrderSelect(dto, goodIds, LoginUserHolder.getAuthUserIdList());
|
|
|
|
|
|
|
+ List<OrderListResDTO> list = kwoTradeOrderMapper.tradeOrderSelect(dto, dto.getGoodIds(), LoginUserHolder.getAuthUserIdList());
|
|
|
List<OrderListResVO> result = new ArrayList<>();
|
|
List<OrderListResVO> result = new ArrayList<>();
|
|
|
if (CollUtil.isEmpty(list)) {
|
|
if (CollUtil.isEmpty(list)) {
|
|
|
PageInfo<OrderListResVO> pageInfo = new PageInfo<>(result);
|
|
PageInfo<OrderListResVO> pageInfo = new PageInfo<>(result);
|
|
@@ -1695,6 +1675,40 @@ public class KwoTradeOrderService {
|
|
|
return PageRes.build(pageInfo, result);
|
|
return PageRes.build(pageInfo, result);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private TradeOrderListSelectDTO buildSelectParam(TradeOrderListStatisticParam params) {
|
|
|
|
|
+ TradeOrderListSelectDTO dto = BeanUtil.copyProperties(params, TradeOrderListSelectDTO.class);
|
|
|
|
|
+ dto.setEntId(LoginUserHolder.getEntId())
|
|
|
|
|
+ .setUserId(LoginUserHolder.getUserId())
|
|
|
|
|
+ .setIsMain(LoginUserHolder.getIsMain());
|
|
|
|
|
+ //装卸货地址
|
|
|
|
|
+ String loadCode = params.getShippingAddressCode();
|
|
|
|
|
+ if (StringUtils.isNotBlank(loadCode) && Objects.nonNull(params.getShippingAddressLevel())) {
|
|
|
|
|
+ switch (params.getShippingAddressLevel()) {
|
|
|
|
|
+ case 1 -> dto.setLoadAddressCode(
|
|
|
|
|
+ loadCode.substring(0, 2).trim());
|
|
|
|
|
+ case 2 -> dto.setLoadAddressCode(
|
|
|
|
|
+ loadCode.substring(0, 4).trim());
|
|
|
|
|
+ case 3 -> dto.setLoadAddressCode(loadCode);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ String unloadCode = params.getUnloadingAddressCode();
|
|
|
|
|
+ if (StringUtils.isNotBlank(unloadCode) && Objects.nonNull(params.getUnloadingAddressLevel())) {
|
|
|
|
|
+ switch (params.getUnloadingAddressLevel()) {
|
|
|
|
|
+ case 1 -> dto.setUnloadAddressCode(
|
|
|
|
|
+ loadCode.substring(0, 2).trim());
|
|
|
|
|
+ case 2 -> dto.setUnloadAddressCode(
|
|
|
|
|
+ loadCode.substring(0, 4).trim());
|
|
|
|
|
+ case 3 -> dto.setUnloadAddressCode(loadCode);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ String keywords = params.getKeywords();
|
|
|
|
|
+ if (StringUtils.isNotBlank(keywords)) {
|
|
|
|
|
+ List<Long> goodIds = goodsInfoService.selectIdsLikeGoodsName(keywords);
|
|
|
|
|
+ dto.setGoodIds(goodIds);
|
|
|
|
|
+ }
|
|
|
|
|
+ return dto;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* @desc: 设置两位小数
|
|
* @desc: 设置两位小数
|
|
|
* @author: yzc
|
|
* @author: yzc
|
|
@@ -1723,4 +1737,51 @@ public class KwoTradeOrderService {
|
|
|
}
|
|
}
|
|
|
return amount.subtract(entrustAmount);
|
|
return amount.subtract(entrustAmount);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ public TableStatisticRes tradeOrderStatistic(TradeOrderListStatisticParam params) {
|
|
|
|
|
+ TableStatisticRes res = new TableStatisticRes();
|
|
|
|
|
+ TradeOrderListSelectDTO dto = buildSelectParam(params);
|
|
|
|
|
+ dto.setStatus(null);
|
|
|
|
|
+ List<TableTop> tableTops = kwoTradeOrderMapper.tradeOrderStatistic(dto, dto.getGoodIds(), LoginUserHolder.getAuthUserIdList());
|
|
|
|
|
+ Map<Integer, Integer> map = new HashMap<>(Global.NUMERICAL_SIXTEEN);
|
|
|
|
|
+ if (CollUtil.isNotEmpty(tableTops)) {
|
|
|
|
|
+ map = tableTops.stream().collect(Collectors.toMap
|
|
|
|
|
+ (TableTop::getValue, TableTop::getTotal, (k1, k2) -> k2));
|
|
|
|
|
+ }
|
|
|
|
|
+ List<TableTop> list = new ArrayList<>();
|
|
|
|
|
+ int count = 0;
|
|
|
|
|
+ for (OrderStatusEnum e : OrderStatusEnum.getSortList()) {
|
|
|
|
|
+ Integer value = e.getCode();
|
|
|
|
|
+ int total = Objects.isNull(map.get(value)) ? 0 : map.get(value);
|
|
|
|
|
+ TableTop tableTop = new TableTop();
|
|
|
|
|
+ tableTop.setName(e.getMsg()).setValue(value).setTotal(total);
|
|
|
|
|
+ list.add(tableTop);
|
|
|
|
|
+ count = count + total;
|
|
|
|
|
+ }
|
|
|
|
|
+ TableTop all = new TableTop();
|
|
|
|
|
+ all.setName("全部").setTotal(count);
|
|
|
|
|
+ list.add(0, all);
|
|
|
|
|
+ TableBottom tableBottom = new TableBottom();
|
|
|
|
|
+ tableBottom.setTotal(count);
|
|
|
|
|
+ res.setTableTops(list).setTableBottom(tableBottom);
|
|
|
|
|
+ return res;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public String appStatistic(TradeOrderAppStatisticParam params) {
|
|
|
|
|
+
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public List<TradeOrderListExport> export(TradeOrderListExportParam params) {
|
|
|
|
|
+
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public String tradeOrderStatementList(TradeOrderStatementList params) {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public String tradeOrderContractList(TradeOrderContractParam params) {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|