|
|
@@ -991,12 +991,9 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
|
|
|
public R generateOrderShare(String address, List<PjShoppingCart> list, String payType) {
|
|
|
StringBuilder ids = new StringBuilder();
|
|
|
StringBuilder goodsName = new StringBuilder();
|
|
|
- StringBuilder shortcutJoin = new StringBuilder();
|
|
|
BigDecimal amount = new BigDecimal("0.00");
|
|
|
-
|
|
|
//从集合中取出商品生成销售单
|
|
|
if (ObjectUtil.isNotEmpty(list)) {
|
|
|
-
|
|
|
PjCorpsDesc corpsDesc = null;
|
|
|
//根据当前登录人获得客户
|
|
|
PjCorpsAttn corpsAttn = corpsAttnService.getAttn(AuthUtil.getUserId());
|
|
|
@@ -1008,278 +1005,620 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
|
|
|
} else {
|
|
|
throw new RuntimeException("未查到用户信息");
|
|
|
}
|
|
|
-
|
|
|
- PjCorpsDesc finalCorpsDesc = corpsDesc;
|
|
|
-
|
|
|
- // 获取系统编号
|
|
|
- String billNo = serialService.getBillNo("WB", "WB", "WB");
|
|
|
- if (ObjectUtils.isNull(billNo)) {
|
|
|
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
- throw new RuntimeException("生成系统编号失败");
|
|
|
- }
|
|
|
- billNo = billNo + AuthUtil.getTenantId();
|
|
|
- // 获取系统编号
|
|
|
- String SrcOrdNo = serialService.getBillNo("XS", "XS", "XS");
|
|
|
- if (ObjectUtils.isNull(SrcOrdNo)) {
|
|
|
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
- throw new RuntimeException("生成系统编号失败");
|
|
|
- }
|
|
|
- List<PjOrder> pjOrderList = new ArrayList<>();
|
|
|
- List<PjOrderItems> orderItemsList = new ArrayList<>();
|
|
|
- List<PjOrderItems> orderItemsListShare = new ArrayList<>();
|
|
|
- //保存销售主表信息-本地销售单
|
|
|
- PjOrder order = new PjOrder();
|
|
|
- if (list.size() == 1) {//如果只有一个公司,订单编号和主编号一致
|
|
|
- order.setOrdNo(SrcOrdNo);
|
|
|
- } else {
|
|
|
- order.setOrdNo(SrcOrdNo + "-" + 1);
|
|
|
- }
|
|
|
- order.setBusinesDate(new Date());
|
|
|
- order.setSrcOrdNo(billNo);
|
|
|
- order.setCreateUser(AuthUtil.getUserId());
|
|
|
-
|
|
|
- //处理部门
|
|
|
- int index = AuthUtil.getDeptId().indexOf(",");
|
|
|
- Long deptId = null;
|
|
|
- if (index > -1) {
|
|
|
- deptId = Long.valueOf(AuthUtil.getDeptId().substring(0, index));
|
|
|
- } else {
|
|
|
- deptId = (Long.valueOf(AuthUtil.getDeptId()));
|
|
|
- }
|
|
|
- //根据客户账期计算应结日期
|
|
|
- if (ObjectUtil.isNotEmpty(corpsDesc.getAccountPeriod())) {
|
|
|
- Date now = new Date(); // 获取当前时间
|
|
|
- long sevenDays = corpsDesc.getAccountPeriod() * 24 * 60 * 60 * 1000L;
|
|
|
- Date afterSevenDays = new Date(now.getTime() + sevenDays);
|
|
|
- order.setDueDate(afterSevenDays);
|
|
|
- } else {
|
|
|
- order.setDueDate(new Date());
|
|
|
- }
|
|
|
- order.setCreateTime(new Date());
|
|
|
- order.setCreateDept(deptId);
|
|
|
- order.setTenantId(AuthUtil.getTenantId());
|
|
|
- order.setCustomerId(finalCorpsDesc.getId());
|
|
|
- order.setCustomerName(finalCorpsDesc.getCname());
|
|
|
- if (ObjectUtils.isNotNull(finalCorpsDesc.getSalesmanId())) {
|
|
|
- order.setSalerId(finalCorpsDesc.getSalesmanId());
|
|
|
- order.setSalerName(finalCorpsDesc.getSalesmanName());
|
|
|
+ String count = sysClient.getParamServiceNew("cashier.payment");
|
|
|
+ String paymentType;
|
|
|
+ if ("1".equals(corpsDesc.getIfLimitAmount())) {
|
|
|
+ BigDecimal totalMoney = list.stream().reduce(BigDecimal.ZERO, (x, y) -> {
|
|
|
+ return x.add(y.getGoodsNum().multiply(y.getPrice()));
|
|
|
+ }, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
|
|
|
+ if (corpsDesc.getLimitAmount().compareTo(totalMoney) >= 0) {
|
|
|
+ paymentType = "2";
|
|
|
+ } else {
|
|
|
+ if ("1".equals(count)) {
|
|
|
+ paymentType = "1";
|
|
|
+ } else {
|
|
|
+ paymentType = "0";
|
|
|
+ }
|
|
|
+ }
|
|
|
} else {
|
|
|
- R<List<User>> res = userSearchClient.getWarehouseKeeper("业务员", AuthUtil.getDeptId());
|
|
|
- if (res.isSuccess() && ObjectUtils.isNotNull(res.getData()) && !res.getData().isEmpty()) {
|
|
|
- order.setSalerId(res.getData().get(0).getId());
|
|
|
- order.setSalerName(res.getData().get(0).getAccount());
|
|
|
+ if ("1".equals(count)) {
|
|
|
+ paymentType = "1";
|
|
|
+ } else {
|
|
|
+ paymentType = "0";
|
|
|
}
|
|
|
}
|
|
|
- if (ObjectUtils.isNotNull(finalCorpsDesc.getDeliveryWarehouseId())) {
|
|
|
- order.setStorageId(finalCorpsDesc.getDeliveryWarehouseId());
|
|
|
- order.setStorageName(finalCorpsDesc.getDeliveryWarehouseName());
|
|
|
- }
|
|
|
- order.setSalesCompanyId(deptId);
|
|
|
- order.setSalesCompanyName(sysClient.getDeptName(deptId).getData());
|
|
|
- order.setRecAddress(address);
|
|
|
- order.setContacts(corpsAttn.getCname());
|
|
|
- order.setPhone(corpsAttn.getTel());
|
|
|
- order.setBsType(OrderTypeEnum.SALES.getType());
|
|
|
- order.setBusinessSource(OrderTypeEnum.XCX.getType());
|
|
|
- order.setReceivableType("网络支付");
|
|
|
- order.setBillType(0);
|
|
|
- orderService.save(order);
|
|
|
- pjOrderList.add(order);
|
|
|
- ids.append(order.getId()).append(",");
|
|
|
- for (PjShoppingCart item : list) {
|
|
|
- if (item.getInventory().compareTo(item.getGoodsNum()) < 0) {
|
|
|
- throw new RuntimeException("库存不足");
|
|
|
+ if ("2".equals(paymentType)){
|
|
|
+ return generateOrderLimitShare(address, list, payType, corpsDesc, corpsAttn);
|
|
|
+ }else{
|
|
|
+ // 获取系统编号
|
|
|
+ String billNo = serialService.getBillNo("WB", "WB", "WB");
|
|
|
+ if (ObjectUtils.isNull(billNo)) {
|
|
|
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
+ throw new RuntimeException("生成系统编号失败");
|
|
|
}
|
|
|
- PjGoodsDesc goodsDesc = goodsDescMapper.selectById(item.getGoodsId());
|
|
|
- if (ObjectUtils.isNotNull(goodsDesc)) {
|
|
|
- shortcutJoin.append(goodsDesc.getCnameInt()).append(",");
|
|
|
+ billNo = billNo + AuthUtil.getTenantId();
|
|
|
+ // 获取系统编号
|
|
|
+ String SrcOrdNo = serialService.getBillNo("XS", "XS", "XS");
|
|
|
+ if (ObjectUtils.isNull(SrcOrdNo)) {
|
|
|
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
+ throw new RuntimeException("生成系统编号失败");
|
|
|
}
|
|
|
- goodsName.append(goodsDesc.getCname()).append(",");
|
|
|
- PjProductLaunch productLaunch = productLaunchMapper.selectById(item.getProductLaunchId());
|
|
|
- if (ObjectUtils.isNotNull(productLaunch) && productLaunch.getInventory().compareTo(item.getGoodsNum()) >= 0) {
|
|
|
- //保存销售明细信息
|
|
|
- PjOrderItems orderItems = new PjOrderItems();
|
|
|
- BeanUtils.copyProperties(item, orderItems);
|
|
|
- if (ObjectUtils.isNotNull(goodsDesc)) {
|
|
|
- orderItems.setCnameInt(goodsDesc.getCnameInt());
|
|
|
- }
|
|
|
- orderItems.setId(null);
|
|
|
- orderItems.setSendNum(new BigDecimal("0.00"));
|
|
|
- orderItems.setCreateUser(AuthUtil.getUserId());
|
|
|
- orderItems.setCreateDept(order.getCreateDept());
|
|
|
- orderItems.setCreateTime(new Date());
|
|
|
- orderItems.setPid(order.getId());
|
|
|
- orderItems.setTenantId(AuthUtil.getTenantId());
|
|
|
- orderItems.setBillNo(order.getOrdNo());
|
|
|
- orderItems.setBizType(order.getBsType());
|
|
|
- orderItems.setInventory(item.getInventory());
|
|
|
- orderItems.setTotalAmount(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
|
|
|
- orderItems.setUrl(ObjectUtils.isNotNull(item.getFilesList()) && !item.getFilesList().isEmpty() ? item.getFilesList().get(0).getUrl() : "");
|
|
|
- orderItems.setGoodsName(item.getGoodsName());
|
|
|
- orderItemsMapper.insert(orderItems);
|
|
|
- orderItemsList.add(orderItems);
|
|
|
+ List<PjOrder> pjOrderList = new ArrayList<>();
|
|
|
+ List<PjOrderItems> orderItemsList = new ArrayList<>();
|
|
|
+ List<PjOrderItems> orderItemsListShare = new ArrayList<>();
|
|
|
+ //保存销售主表信息-本地销售单
|
|
|
+ PjOrder order = new PjOrder();
|
|
|
+ if (list.size() == 1) {//如果只有一个公司,订单编号和主编号一致
|
|
|
+ order.setOrdNo(SrcOrdNo);
|
|
|
} else {
|
|
|
- //保存销售明细信息
|
|
|
- PjOrderItems orderItems = new PjOrderItems();
|
|
|
- BeanUtils.copyProperties(item, orderItems);
|
|
|
- if (ObjectUtils.isNotNull(goodsDesc)) {
|
|
|
- orderItems.setCnameInt(goodsDesc.getCnameInt());
|
|
|
- }
|
|
|
- orderItems.setId(null);
|
|
|
- orderItems.setSendNum(new BigDecimal("0.00"));
|
|
|
- orderItems.setCreateUser(AuthUtil.getUserId());
|
|
|
- orderItems.setCreateDept(order.getCreateDept());
|
|
|
- orderItems.setCreateTime(new Date());
|
|
|
- orderItems.setPid(order.getId());
|
|
|
- orderItems.setTenantId(AuthUtil.getTenantId());
|
|
|
- orderItems.setBillNo(order.getOrdNo());
|
|
|
- orderItems.setBizType(order.getBsType());
|
|
|
- orderItems.setUrl(ObjectUtils.isNotNull(item.getFilesList()) && !item.getFilesList().isEmpty() ? item.getFilesList().get(0).getUrl() : "");
|
|
|
- orderItems.setGoodsName(item.getGoodsName());
|
|
|
+ order.setOrdNo(SrcOrdNo + "-" + 1);
|
|
|
+ }
|
|
|
+ order.setBusinesDate(new Date());
|
|
|
+ order.setSrcOrdNo(billNo);
|
|
|
+ order.setCreateUser(AuthUtil.getUserId());
|
|
|
|
|
|
- //保存共享销售明细信息
|
|
|
- PjOrderItems orderItemsShare = new PjOrderItems();
|
|
|
- BeanUtils.copyProperties(item, orderItemsShare);
|
|
|
- if (ObjectUtils.isNotNull(goodsDesc)) {
|
|
|
- orderItemsShare.setCnameInt(goodsDesc.getCnameInt());
|
|
|
- }
|
|
|
- orderItemsShare.setId(null);
|
|
|
- orderItemsShare.setSendNum(new BigDecimal("0.00"));
|
|
|
- orderItemsShare.setCreateUser(AuthUtil.getUserId());
|
|
|
- orderItemsShare.setCreateDept(order.getCreateDept());
|
|
|
- orderItemsShare.setCreateTime(new Date());
|
|
|
- orderItemsShare.setTenantId(AuthUtil.getTenantId());
|
|
|
- orderItemsShare.setBillNo(order.getOrdNo());
|
|
|
- orderItemsShare.setBizType("GX");
|
|
|
- orderItemsShare.setUrl(ObjectUtils.isNotNull(item.getFilesList()) && !item.getFilesList().isEmpty() ? item.getFilesList().get(0).getUrl() : "");
|
|
|
- orderItemsShare.setGoodsName(item.getGoodsName());
|
|
|
- if (ObjectUtils.isNotNull(productLaunch)) {
|
|
|
- orderItems.setInventory(productLaunch.getInventory());
|
|
|
- orderItems.setGoodsNum(productLaunch.getInventory());
|
|
|
- orderItems.setTotalAmount(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
|
|
|
- orderItems.setNextDayNum(item.getGoodsNum().subtract(productLaunch.getInventory()));
|
|
|
- orderItemsMapper.insert(orderItems);
|
|
|
- orderItemsList.add(orderItems);
|
|
|
- orderItemsShare.setInventory(item.getInventory());
|
|
|
- orderItemsShare.setGoodsNum(item.getGoodsNum().subtract(productLaunch.getInventory()));
|
|
|
- orderItemsShare.setTotalAmount(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
|
|
|
- orderItemsListShare.add(orderItemsShare);
|
|
|
- } else {
|
|
|
- orderItemsShare.setInventory(item.getInventory());
|
|
|
- orderItemsShare.setGoodsNum(item.getGoodsNum());
|
|
|
- orderItemsShare.setTotalAmount(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
|
|
|
- orderItemsListShare.add(orderItemsShare);
|
|
|
- }
|
|
|
+ //处理部门
|
|
|
+ int index = AuthUtil.getDeptId().indexOf(",");
|
|
|
+ Long deptId = null;
|
|
|
+ if (index > -1) {
|
|
|
+ deptId = Long.valueOf(AuthUtil.getDeptId().substring(0, index));
|
|
|
+ } else {
|
|
|
+ deptId = (Long.valueOf(AuthUtil.getDeptId()));
|
|
|
}
|
|
|
- //生成完毕删除购物车
|
|
|
- item.setIsDeleted(1);
|
|
|
- baseMapper.updateById(item);
|
|
|
- }
|
|
|
- if (!orderItemsListShare.isEmpty()) {
|
|
|
- //保存销售主表信息-共享销售单
|
|
|
- PjOrder orderShare = new PjOrder();
|
|
|
- orderShare.setOrdNo(SrcOrdNo + "-" + 2);
|
|
|
- orderShare.setBusinesDate(new Date());
|
|
|
- orderShare.setSrcOrdNo(billNo);
|
|
|
- orderShare.setCreateUser(AuthUtil.getUserId());
|
|
|
//根据客户账期计算应结日期
|
|
|
if (ObjectUtil.isNotEmpty(corpsDesc.getAccountPeriod())) {
|
|
|
Date now = new Date(); // 获取当前时间
|
|
|
long sevenDays = corpsDesc.getAccountPeriod() * 24 * 60 * 60 * 1000L;
|
|
|
Date afterSevenDays = new Date(now.getTime() + sevenDays);
|
|
|
- orderShare.setDueDate(afterSevenDays);
|
|
|
+ order.setDueDate(afterSevenDays);
|
|
|
} else {
|
|
|
- orderShare.setDueDate(new Date());
|
|
|
+ order.setDueDate(new Date());
|
|
|
}
|
|
|
- orderShare.setCreateTime(new Date());
|
|
|
- orderShare.setCreateDept(deptId);
|
|
|
- orderShare.setTenantId(AuthUtil.getTenantId());
|
|
|
- orderShare.setCustomerId(finalCorpsDesc.getId());
|
|
|
- orderShare.setCustomerName(finalCorpsDesc.getCname());
|
|
|
- if (ObjectUtils.isNotNull(finalCorpsDesc.getSalesmanId())) {
|
|
|
- orderShare.setSalerId(finalCorpsDesc.getSalesmanId());
|
|
|
- orderShare.setSalerName(finalCorpsDesc.getSalesmanName());
|
|
|
+ order.setCreateTime(new Date());
|
|
|
+ order.setCreateDept(deptId);
|
|
|
+ order.setTenantId(AuthUtil.getTenantId());
|
|
|
+ order.setCustomerId(corpsDesc.getId());
|
|
|
+ order.setCustomerName(corpsDesc.getCname());
|
|
|
+ if (ObjectUtils.isNotNull(corpsDesc.getSalesmanId())) {
|
|
|
+ order.setSalerId(corpsDesc.getSalesmanId());
|
|
|
+ order.setSalerName(corpsDesc.getSalesmanName());
|
|
|
} else {
|
|
|
R<List<User>> res = userSearchClient.getWarehouseKeeper("业务员", AuthUtil.getDeptId());
|
|
|
if (res.isSuccess() && ObjectUtils.isNotNull(res.getData()) && !res.getData().isEmpty()) {
|
|
|
- orderShare.setSalerId(res.getData().get(0).getId());
|
|
|
- orderShare.setSalerName(res.getData().get(0).getAccount());
|
|
|
+ order.setSalerId(res.getData().get(0).getId());
|
|
|
+ order.setSalerName(res.getData().get(0).getAccount());
|
|
|
}
|
|
|
}
|
|
|
- if (ObjectUtils.isNotNull(finalCorpsDesc.getDeliveryWarehouseId())) {
|
|
|
- orderShare.setStorageId(finalCorpsDesc.getDeliveryWarehouseId());
|
|
|
- orderShare.setStorageName(finalCorpsDesc.getDeliveryWarehouseName());
|
|
|
+ if (ObjectUtils.isNotNull(corpsDesc.getDeliveryWarehouseId())) {
|
|
|
+ order.setStorageId(corpsDesc.getDeliveryWarehouseId());
|
|
|
+ order.setStorageName(corpsDesc.getDeliveryWarehouseName());
|
|
|
}
|
|
|
- orderShare.setSalesCompanyId(deptId);
|
|
|
- orderShare.setSalesCompanyName(sysClient.getDeptName(deptId).getData());
|
|
|
- orderShare.setRecAddress(address);
|
|
|
- orderShare.setContacts(corpsAttn.getCname());
|
|
|
- orderShare.setPhone(corpsAttn.getTel());
|
|
|
- orderShare.setBsType(OrderTypeEnum.SALES.getType());
|
|
|
- orderShare.setBusinessSource("共享销售");
|
|
|
- orderShare.setReceivableType("网络支付");
|
|
|
- orderShare.setBillType(1);
|
|
|
- BigDecimal totalMoney = BigDecimal.ZERO;
|
|
|
- orderShare.setNumberRows(orderItemsListShare.size());//行数
|
|
|
- //明细总数量
|
|
|
- orderShare.setGoodsTotalNum(orderItemsListShare.stream().map(PjOrderItems::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
- //明细总金额
|
|
|
- totalMoney = orderItemsListShare.stream().reduce(BigDecimal.ZERO, (x, y) -> {
|
|
|
- return x.add(y.getGoodsNum().multiply(y.getPrice()));
|
|
|
- }, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
|
|
|
- orderShare.setSalesAmount(totalMoney);
|
|
|
- orderShare.setTotalMoney(totalMoney);
|
|
|
- orderShare.setGoodsNameJoin(orderItemsListShare.stream().map(PjOrderItems::getGoodsName).collect(Collectors.joining(",")));
|
|
|
- orderShare.setShortcutJoin(orderItemsListShare.stream().map(PjOrderItems::getCnameInt).collect(Collectors.joining(",")));
|
|
|
- orderShare.setPayType(payType);
|
|
|
- orderService.save(orderShare);
|
|
|
- pjOrderList.add(orderShare);
|
|
|
- ids.append(orderShare.getId()).append(",");
|
|
|
- for (PjOrderItems item : orderItemsListShare) {
|
|
|
- item.setPid(orderShare.getId());
|
|
|
- orderItemsMapper.insert(item);
|
|
|
+ order.setSalesCompanyId(deptId);
|
|
|
+ order.setSalesCompanyName(sysClient.getDeptName(deptId).getData());
|
|
|
+ order.setRecAddress(address);
|
|
|
+ order.setContacts(corpsAttn.getCname());
|
|
|
+ order.setPhone(corpsAttn.getTel());
|
|
|
+ order.setBsType(OrderTypeEnum.SALES.getType());
|
|
|
+ order.setBusinessSource(OrderTypeEnum.XCX.getType());
|
|
|
+ order.setReceivableType("网络支付");
|
|
|
+ order.setBillType(0);
|
|
|
+ orderService.save(order);
|
|
|
+ pjOrderList.add(order);
|
|
|
+ ids.append(order.getId()).append(",");
|
|
|
+ for (PjShoppingCart item : list) {
|
|
|
+ if (item.getInventory().compareTo(item.getGoodsNum()) < 0) {
|
|
|
+ throw new RuntimeException("库存不足");
|
|
|
+ }
|
|
|
+ PjGoodsDesc goodsDesc = goodsDescMapper.selectById(item.getGoodsId());
|
|
|
+ goodsName.append(goodsDesc.getCname()).append(",");
|
|
|
+ PjProductLaunch productLaunch = productLaunchMapper.selectById(item.getProductLaunchId());
|
|
|
+ if (ObjectUtils.isNotNull(productLaunch) && productLaunch.getInventory().compareTo(item.getGoodsNum()) >= 0) {
|
|
|
+ //保存销售明细信息
|
|
|
+ PjOrderItems orderItems = new PjOrderItems();
|
|
|
+ BeanUtils.copyProperties(item, orderItems);
|
|
|
+ if (ObjectUtils.isNotNull(goodsDesc)) {
|
|
|
+ orderItems.setCnameInt(goodsDesc.getCnameInt());
|
|
|
+ }
|
|
|
+ orderItems.setId(null);
|
|
|
+ orderItems.setSendNum(new BigDecimal("0.00"));
|
|
|
+ orderItems.setCreateUser(AuthUtil.getUserId());
|
|
|
+ orderItems.setCreateDept(order.getCreateDept());
|
|
|
+ orderItems.setCreateTime(new Date());
|
|
|
+ orderItems.setPid(order.getId());
|
|
|
+ orderItems.setTenantId(AuthUtil.getTenantId());
|
|
|
+ orderItems.setBillNo(order.getOrdNo());
|
|
|
+ orderItems.setBizType(order.getBsType());
|
|
|
+ orderItems.setInventory(item.getInventory());
|
|
|
+ orderItems.setTotalAmount(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
|
|
|
+ orderItems.setUrl(ObjectUtils.isNotNull(item.getFilesList()) && !item.getFilesList().isEmpty() ? item.getFilesList().get(0).getUrl() : "");
|
|
|
+ orderItems.setGoodsName(item.getGoodsName());
|
|
|
+ orderItemsMapper.insert(orderItems);
|
|
|
+ orderItemsList.add(orderItems);
|
|
|
+ } else {
|
|
|
+ //保存销售明细信息
|
|
|
+ PjOrderItems orderItems = new PjOrderItems();
|
|
|
+ BeanUtils.copyProperties(item, orderItems);
|
|
|
+ if (ObjectUtils.isNotNull(goodsDesc)) {
|
|
|
+ orderItems.setCnameInt(goodsDesc.getCnameInt());
|
|
|
+ }
|
|
|
+ orderItems.setId(null);
|
|
|
+ orderItems.setSendNum(new BigDecimal("0.00"));
|
|
|
+ orderItems.setCreateUser(AuthUtil.getUserId());
|
|
|
+ orderItems.setCreateDept(order.getCreateDept());
|
|
|
+ orderItems.setCreateTime(new Date());
|
|
|
+ orderItems.setPid(order.getId());
|
|
|
+ orderItems.setTenantId(AuthUtil.getTenantId());
|
|
|
+ orderItems.setBillNo(order.getOrdNo());
|
|
|
+ orderItems.setBizType(order.getBsType());
|
|
|
+ orderItems.setUrl(ObjectUtils.isNotNull(item.getFilesList()) && !item.getFilesList().isEmpty() ? item.getFilesList().get(0).getUrl() : "");
|
|
|
+ orderItems.setGoodsName(item.getGoodsName());
|
|
|
+
|
|
|
+ //保存共享销售明细信息
|
|
|
+ PjOrderItems orderItemsShare = new PjOrderItems();
|
|
|
+ BeanUtils.copyProperties(item, orderItemsShare);
|
|
|
+ if (ObjectUtils.isNotNull(goodsDesc)) {
|
|
|
+ orderItemsShare.setCnameInt(goodsDesc.getCnameInt());
|
|
|
+ }
|
|
|
+ orderItemsShare.setId(null);
|
|
|
+ orderItemsShare.setSendNum(new BigDecimal("0.00"));
|
|
|
+ orderItemsShare.setCreateUser(AuthUtil.getUserId());
|
|
|
+ orderItemsShare.setCreateDept(order.getCreateDept());
|
|
|
+ orderItemsShare.setCreateTime(new Date());
|
|
|
+ orderItemsShare.setTenantId(AuthUtil.getTenantId());
|
|
|
+ orderItemsShare.setBillNo(order.getOrdNo());
|
|
|
+ orderItemsShare.setBizType("GX");
|
|
|
+ orderItemsShare.setUrl(ObjectUtils.isNotNull(item.getFilesList()) && !item.getFilesList().isEmpty() ? item.getFilesList().get(0).getUrl() : "");
|
|
|
+ orderItemsShare.setGoodsName(item.getGoodsName());
|
|
|
+
|
|
|
+ if (ObjectUtils.isNotNull(productLaunch) && new BigDecimal("0.00").compareTo(productLaunch.getInventory()) != 0) {
|
|
|
+ orderItems.setInventory(productLaunch.getInventory());
|
|
|
+ orderItems.setGoodsNum(productLaunch.getInventory());
|
|
|
+ orderItems.setTotalAmount(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
|
|
|
+ orderItems.setNextDayNum(item.getGoodsNum().subtract(productLaunch.getInventory()));
|
|
|
+ orderItemsMapper.insert(orderItems);
|
|
|
+ orderItemsList.add(orderItems);
|
|
|
+ orderItemsShare.setInventory(item.getInventory());
|
|
|
+ orderItemsShare.setGoodsNum(item.getGoodsNum().subtract(productLaunch.getInventory()));
|
|
|
+ orderItemsShare.setTotalAmount(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
|
|
|
+ orderItemsListShare.add(orderItemsShare);
|
|
|
+ } else {
|
|
|
+ orderItemsShare.setInventory(item.getInventory());
|
|
|
+ orderItemsShare.setGoodsNum(item.getGoodsNum());
|
|
|
+ orderItemsShare.setTotalAmount(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
|
|
|
+ orderItemsListShare.add(orderItemsShare);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //生成完毕删除购物车
|
|
|
+ item.setIsDeleted(1);
|
|
|
+ baseMapper.updateById(item);
|
|
|
}
|
|
|
- amount = amount.add(orderShare.getTotalMoney());
|
|
|
- } else {
|
|
|
- BigDecimal totalMoney = BigDecimal.ZERO;
|
|
|
- order.setNumberRows(orderItemsList.size());//行数
|
|
|
- //明细总数量
|
|
|
- order.setGoodsTotalNum(orderItemsList.stream().map(PjOrderItems::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
- //明细总金额
|
|
|
- totalMoney = orderItemsList.stream().reduce(BigDecimal.ZERO, (x, y) -> {
|
|
|
- return x.add(y.getGoodsNum().multiply(y.getPrice()));
|
|
|
- }, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
|
|
|
- order.setSalesAmount(totalMoney);
|
|
|
- order.setTotalMoney(totalMoney);
|
|
|
- if (order.getGoodsTotalNum().compareTo(new BigDecimal(1)) == 0) {
|
|
|
- String freight = sysClient.getParamServiceDWT("freight", finalCorpsDesc.getTenantId());
|
|
|
- if (ObjectUtils.isNotNull(freight)) {
|
|
|
- try {
|
|
|
- BigDecimal freightAmount = new BigDecimal(freight);
|
|
|
- order.setTotalMoney(totalMoney.add(freightAmount));
|
|
|
- order.setFreight(freightAmount);
|
|
|
- } catch (Exception ignored) {
|
|
|
- order.setFreight(new BigDecimal(0));
|
|
|
+ if (!orderItemsListShare.isEmpty()) {
|
|
|
+ //保存销售主表信息-共享销售单
|
|
|
+ PjOrder orderShare = new PjOrder();
|
|
|
+ orderShare.setOrdNo(SrcOrdNo + "-" + 2);
|
|
|
+ orderShare.setBusinesDate(new Date());
|
|
|
+ orderShare.setSrcOrdNo(billNo);
|
|
|
+ orderShare.setCreateUser(AuthUtil.getUserId());
|
|
|
+ //根据客户账期计算应结日期
|
|
|
+ if (ObjectUtil.isNotEmpty(corpsDesc.getAccountPeriod())) {
|
|
|
+ Date now = new Date(); // 获取当前时间
|
|
|
+ long sevenDays = corpsDesc.getAccountPeriod() * 24 * 60 * 60 * 1000L;
|
|
|
+ Date afterSevenDays = new Date(now.getTime() + sevenDays);
|
|
|
+ orderShare.setDueDate(afterSevenDays);
|
|
|
+ } else {
|
|
|
+ orderShare.setDueDate(new Date());
|
|
|
+ }
|
|
|
+ orderShare.setCreateTime(new Date());
|
|
|
+ orderShare.setCreateDept(deptId);
|
|
|
+ orderShare.setTenantId(AuthUtil.getTenantId());
|
|
|
+ orderShare.setCustomerId(corpsDesc.getId());
|
|
|
+ orderShare.setCustomerName(corpsDesc.getCname());
|
|
|
+ if (ObjectUtils.isNotNull(corpsDesc.getSalesmanId())) {
|
|
|
+ orderShare.setSalerId(corpsDesc.getSalesmanId());
|
|
|
+ orderShare.setSalerName(corpsDesc.getSalesmanName());
|
|
|
+ } else {
|
|
|
+ R<List<User>> res = userSearchClient.getWarehouseKeeper("业务员", AuthUtil.getDeptId());
|
|
|
+ if (res.isSuccess() && ObjectUtils.isNotNull(res.getData()) && !res.getData().isEmpty()) {
|
|
|
+ orderShare.setSalerId(res.getData().get(0).getId());
|
|
|
+ orderShare.setSalerName(res.getData().get(0).getAccount());
|
|
|
}
|
|
|
}
|
|
|
+ if (ObjectUtils.isNotNull(corpsDesc.getDeliveryWarehouseId())) {
|
|
|
+ orderShare.setStorageId(corpsDesc.getDeliveryWarehouseId());
|
|
|
+ orderShare.setStorageName(corpsDesc.getDeliveryWarehouseName());
|
|
|
+ }
|
|
|
+ orderShare.setSalesCompanyId(deptId);
|
|
|
+ orderShare.setSalesCompanyName(sysClient.getDeptName(deptId).getData());
|
|
|
+ orderShare.setRecAddress(address);
|
|
|
+ orderShare.setContacts(corpsAttn.getCname());
|
|
|
+ orderShare.setPhone(corpsAttn.getTel());
|
|
|
+ orderShare.setBsType(OrderTypeEnum.SALES.getType());
|
|
|
+ orderShare.setBusinessSource("共享销售");
|
|
|
+ orderShare.setReceivableType("网络支付");
|
|
|
+ orderShare.setBillType(1);
|
|
|
+ BigDecimal totalMoney = BigDecimal.ZERO;
|
|
|
+ orderShare.setNumberRows(orderItemsListShare.size());//行数
|
|
|
+ //明细总数量
|
|
|
+ orderShare.setGoodsTotalNum(orderItemsListShare.stream().map(PjOrderItems::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ //明细总金额
|
|
|
+ totalMoney = orderItemsListShare.stream().reduce(BigDecimal.ZERO, (x, y) -> {
|
|
|
+ return x.add(y.getGoodsNum().multiply(y.getPrice()));
|
|
|
+ }, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
|
|
|
+ orderShare.setSalesAmount(totalMoney);
|
|
|
+ orderShare.setTotalMoney(totalMoney);
|
|
|
+ orderShare.setGoodsNameJoin(orderItemsListShare.stream().map(PjOrderItems::getGoodsName).collect(Collectors.joining(",")));
|
|
|
+ orderShare.setShortcutJoin(orderItemsListShare.stream().map(PjOrderItems::getCnameInt).collect(Collectors.joining(",")));
|
|
|
+ orderShare.setPayType(payType);
|
|
|
+ orderService.save(orderShare);
|
|
|
+ pjOrderList.add(orderShare);
|
|
|
+ ids.append(orderShare.getId()).append(",");
|
|
|
+ for (PjOrderItems item : orderItemsListShare) {
|
|
|
+ item.setPid(orderShare.getId());
|
|
|
+ orderItemsMapper.insert(item);
|
|
|
+ }
|
|
|
+ amount = amount.add(orderShare.getTotalMoney());
|
|
|
}
|
|
|
- order.setGoodsNameJoin(orderItemsList.stream().map(PjOrderItems::getGoodsName).collect(Collectors.joining(",")));
|
|
|
- order.setShortcutJoin(orderItemsList.stream().map(PjOrderItems::getCnameInt).collect(Collectors.joining(",")));
|
|
|
- order.setPayType(payType);
|
|
|
- pjOrderList.add(order);
|
|
|
- amount = amount.add(order.getTotalMoney());
|
|
|
- }
|
|
|
- R<Map<Object, Object>> r = payService.payPrepay(ids.substring(0, ids.length() - 1), amount, billNo, 0, goodsName.substring(0, goodsName.length() - 1), payType);
|
|
|
- if ("W01".equals(payType) || "A01".equals(payType) || "U01".equals(payType) || "S01".equals(payType)) {
|
|
|
- for (PjOrder item : pjOrderList) {
|
|
|
- item.setPayUrl(r.getData().get("url").toString());
|
|
|
+ if (!orderItemsList.isEmpty()){
|
|
|
+ BigDecimal totalMoney = BigDecimal.ZERO;
|
|
|
+ order.setNumberRows(orderItemsList.size());//行数
|
|
|
+ //明细总数量
|
|
|
+ order.setGoodsTotalNum(orderItemsList.stream().map(PjOrderItems::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ //明细总金额
|
|
|
+ totalMoney = orderItemsList.stream().reduce(BigDecimal.ZERO, (x, y) -> {
|
|
|
+ return x.add(y.getGoodsNum().multiply(y.getPrice()));
|
|
|
+ }, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
|
|
|
+ order.setSalesAmount(totalMoney);
|
|
|
+ order.setTotalMoney(totalMoney);
|
|
|
+ if (order.getGoodsTotalNum().compareTo(new BigDecimal(1)) == 0) {
|
|
|
+ String freight = sysClient.getParamServiceDWT("freight", corpsDesc.getTenantId());
|
|
|
+ if (ObjectUtils.isNotNull(freight)) {
|
|
|
+ try {
|
|
|
+ BigDecimal freightAmount = new BigDecimal(freight);
|
|
|
+ order.setTotalMoney(totalMoney.add(freightAmount));
|
|
|
+ order.setFreight(freightAmount);
|
|
|
+ } catch (Exception ignored) {
|
|
|
+ order.setFreight(new BigDecimal(0));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ order.setGoodsNameJoin(orderItemsList.stream().map(PjOrderItems::getGoodsName).collect(Collectors.joining(",")));
|
|
|
+ order.setShortcutJoin(orderItemsList.stream().map(PjOrderItems::getCnameInt).collect(Collectors.joining(",")));
|
|
|
+ order.setPayType(payType);
|
|
|
+ pjOrderList.add(order);
|
|
|
+ amount = amount.add(order.getTotalMoney());
|
|
|
}
|
|
|
+ R<Map<Object, Object>> r = payService.payPrepay(ids.substring(0, ids.length() - 1), amount, billNo, 0, goodsName.substring(0, goodsName.length() - 1), payType);
|
|
|
+ if ("1".equals(paymentType)){
|
|
|
+ if (ObjectUtils.isNotNull(r.getData().get("url"))){
|
|
|
+ for (PjOrder item : pjOrderList) {
|
|
|
+ item.setPayUrl(r.getData().get("url").toString());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ r.getData().put("type","1");
|
|
|
+ }else{
|
|
|
+ r.getData().put("type","0");
|
|
|
+ }
|
|
|
+ orderService.updateBatchById(pjOrderList);
|
|
|
+ return r;
|
|
|
}
|
|
|
- orderService.updateBatchById(pjOrderList);
|
|
|
- return r;
|
|
|
} else {
|
|
|
throw new RuntimeException("请选择需要结算的商品");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ public R generateOrderLimitShare(String address, List<PjShoppingCart> list, String payType, PjCorpsDesc corpsDesc, PjCorpsAttn corpsAttn) {
|
|
|
+ // 获取系统编号
|
|
|
+ String billNo = serialService.getBillNo("WB", "WB", "WB");
|
|
|
+ if (ObjectUtils.isNull(billNo)) {
|
|
|
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
+ throw new RuntimeException("生成系统编号失败");
|
|
|
+ }
|
|
|
+ // 获取系统编号
|
|
|
+ String SrcOrdNo = serialService.getBillNo("XS", "XS", "XS");
|
|
|
+ if (ObjectUtils.isNull(SrcOrdNo)) {
|
|
|
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
+ throw new RuntimeException("生成系统编号失败");
|
|
|
+ }
|
|
|
+ R<List<User>> res = userSearchClient.getWarehouseKeeper("业务员", AuthUtil.getDeptId());
|
|
|
+ List<PjOrder> pjOrderList = new ArrayList<>();
|
|
|
+ List<PjOrderItems> orderItemsList = new ArrayList<>();
|
|
|
+ List<PjOrderItems> orderItemsListShare = new ArrayList<>();
|
|
|
+ //保存销售主表信息-本地销售单
|
|
|
+ PjOrder order = new PjOrder();
|
|
|
+ if (list.size() == 1) {//如果只有一个公司,订单编号和主编号一致
|
|
|
+ order.setOrdNo(SrcOrdNo);
|
|
|
+ } else {
|
|
|
+ order.setOrdNo(SrcOrdNo + "-" + 1);
|
|
|
+ }
|
|
|
+ order.setBusinesDate(new Date());
|
|
|
+ order.setSrcOrdNo(billNo);
|
|
|
+ order.setCreateUser(AuthUtil.getUserId());
|
|
|
+ //处理部门
|
|
|
+ int index = AuthUtil.getDeptId().indexOf(",");
|
|
|
+ Long deptId = null;
|
|
|
+ if (index > -1) {
|
|
|
+ deptId = Long.valueOf(AuthUtil.getDeptId().substring(0, index));
|
|
|
+ } else {
|
|
|
+ deptId = (Long.valueOf(AuthUtil.getDeptId()));
|
|
|
+ }
|
|
|
+ //根据客户账期计算应结日期
|
|
|
+ if (ObjectUtil.isNotEmpty(corpsDesc.getAccountPeriod())) {
|
|
|
+ Date now = new Date(); // 获取当前时间
|
|
|
+ long sevenDays = corpsDesc.getAccountPeriod() * 24 * 60 * 60 * 1000L;
|
|
|
+ Date afterSevenDays = new Date(now.getTime() + sevenDays);
|
|
|
+ order.setDueDate(afterSevenDays);
|
|
|
+ } else {
|
|
|
+ order.setDueDate(new Date());
|
|
|
+ }
|
|
|
+ order.setCreateTime(new Date());
|
|
|
+ order.setCreateDept(deptId);
|
|
|
+ order.setTenantId(AuthUtil.getTenantId());
|
|
|
+ order.setCustomerId(corpsDesc.getId());
|
|
|
+ order.setCustomerName(corpsDesc.getCname());
|
|
|
+ if (ObjectUtils.isNotNull(corpsDesc.getSalesmanId())) {
|
|
|
+ order.setSalerId(corpsDesc.getSalesmanId());
|
|
|
+ order.setSalerName(corpsDesc.getSalesmanName());
|
|
|
+ } else {
|
|
|
+ if (res.isSuccess() && ObjectUtils.isNotNull(res.getData()) && !res.getData().isEmpty()) {
|
|
|
+ order.setSalerId(res.getData().get(0).getId());
|
|
|
+ order.setSalerName(res.getData().get(0).getAccount());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotNull(corpsDesc.getDeliveryWarehouseId())) {
|
|
|
+ order.setStorageId(corpsDesc.getDeliveryWarehouseId());
|
|
|
+ order.setStorageName(corpsDesc.getDeliveryWarehouseName());
|
|
|
+ }
|
|
|
+ order.setSalesCompanyId(deptId);
|
|
|
+ order.setSalesCompanyName(sysClient.getDeptName(deptId).getData());
|
|
|
+ order.setRecAddress(address);
|
|
|
+ order.setContacts(corpsAttn.getCname());
|
|
|
+ order.setPhone(corpsAttn.getTel());
|
|
|
+ order.setBsType(OrderTypeEnum.SALES.getType());
|
|
|
+ order.setBusinessSource("额度支付");
|
|
|
+ order.setReceivableType("网络支付");
|
|
|
+ order.setBillType(0);
|
|
|
+ orderService.save(order);
|
|
|
+ pjOrderList.add(order);
|
|
|
+ for (PjShoppingCart item : list) {
|
|
|
+ if (item.getInventory().compareTo(item.getGoodsNum()) < 0) {
|
|
|
+ throw new RuntimeException("库存不足");
|
|
|
+ }
|
|
|
+ PjGoodsDesc goodsDesc = goodsDescMapper.selectById(item.getGoodsId());
|
|
|
+ PjProductLaunch productLaunch = productLaunchMapper.selectById(item.getProductLaunchId());
|
|
|
+ if (ObjectUtils.isNotNull(productLaunch) && productLaunch.getInventory().compareTo(item.getGoodsNum()) >= 0) {
|
|
|
+ //保存销售明细信息
|
|
|
+ PjOrderItems orderItems = new PjOrderItems();
|
|
|
+ BeanUtils.copyProperties(item, orderItems);
|
|
|
+ if (ObjectUtils.isNotNull(goodsDesc)) {
|
|
|
+ orderItems.setCnameInt(goodsDesc.getCnameInt());
|
|
|
+ }
|
|
|
+ orderItems.setId(null);
|
|
|
+ orderItems.setSendNum(new BigDecimal("0.00"));
|
|
|
+ orderItems.setCreateUser(AuthUtil.getUserId());
|
|
|
+ orderItems.setCreateDept(order.getCreateDept());
|
|
|
+ orderItems.setCreateTime(new Date());
|
|
|
+ orderItems.setPid(order.getId());
|
|
|
+ orderItems.setTenantId(AuthUtil.getTenantId());
|
|
|
+ orderItems.setBillNo(order.getOrdNo());
|
|
|
+ orderItems.setBizType(order.getBsType());
|
|
|
+ orderItems.setInventory(item.getInventory());
|
|
|
+ orderItems.setTotalAmount(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
|
|
|
+ orderItems.setUrl(ObjectUtils.isNotNull(item.getFilesList()) && !item.getFilesList().isEmpty() ? item.getFilesList().get(0).getUrl() : "");
|
|
|
+ orderItems.setGoodsName(item.getGoodsName());
|
|
|
+ orderItemsMapper.insert(orderItems);
|
|
|
+ orderItemsList.add(orderItems);
|
|
|
+ } else {
|
|
|
+ //保存销售明细信息
|
|
|
+ PjOrderItems orderItems = new PjOrderItems();
|
|
|
+ BeanUtils.copyProperties(item, orderItems);
|
|
|
+ if (ObjectUtils.isNotNull(goodsDesc)) {
|
|
|
+ orderItems.setCnameInt(goodsDesc.getCnameInt());
|
|
|
+ }
|
|
|
+ orderItems.setId(null);
|
|
|
+ orderItems.setSendNum(new BigDecimal("0.00"));
|
|
|
+ orderItems.setCreateUser(AuthUtil.getUserId());
|
|
|
+ orderItems.setCreateDept(order.getCreateDept());
|
|
|
+ orderItems.setCreateTime(new Date());
|
|
|
+ orderItems.setPid(order.getId());
|
|
|
+ orderItems.setTenantId(AuthUtil.getTenantId());
|
|
|
+ orderItems.setBillNo(order.getOrdNo());
|
|
|
+ orderItems.setBizType(order.getBsType());
|
|
|
+ orderItems.setUrl(ObjectUtils.isNotNull(item.getFilesList()) && !item.getFilesList().isEmpty() ? item.getFilesList().get(0).getUrl() : "");
|
|
|
+ orderItems.setGoodsName(item.getGoodsName());
|
|
|
+
|
|
|
+ //保存共享销售明细信息
|
|
|
+ PjOrderItems orderItemsShare = new PjOrderItems();
|
|
|
+ BeanUtils.copyProperties(item, orderItemsShare);
|
|
|
+ if (ObjectUtils.isNotNull(goodsDesc)) {
|
|
|
+ orderItemsShare.setCnameInt(goodsDesc.getCnameInt());
|
|
|
+ }
|
|
|
+ orderItemsShare.setId(null);
|
|
|
+ orderItemsShare.setSendNum(new BigDecimal("0.00"));
|
|
|
+ orderItemsShare.setCreateUser(AuthUtil.getUserId());
|
|
|
+ orderItemsShare.setCreateDept(order.getCreateDept());
|
|
|
+ orderItemsShare.setCreateTime(new Date());
|
|
|
+ orderItemsShare.setTenantId(AuthUtil.getTenantId());
|
|
|
+ orderItemsShare.setBillNo(order.getOrdNo());
|
|
|
+ orderItemsShare.setBizType("GX");
|
|
|
+ orderItemsShare.setUrl(ObjectUtils.isNotNull(item.getFilesList()) && !item.getFilesList().isEmpty() ? item.getFilesList().get(0).getUrl() : "");
|
|
|
+ orderItemsShare.setGoodsName(item.getGoodsName());
|
|
|
+ if (ObjectUtils.isNotNull(productLaunch)) {
|
|
|
+ orderItems.setInventory(productLaunch.getInventory());
|
|
|
+ orderItems.setGoodsNum(productLaunch.getInventory());
|
|
|
+ orderItems.setTotalAmount(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
|
|
|
+ orderItems.setNextDayNum(item.getGoodsNum().subtract(productLaunch.getInventory()));
|
|
|
+ orderItemsMapper.insert(orderItems);
|
|
|
+ orderItemsList.add(orderItems);
|
|
|
+ orderItemsShare.setInventory(item.getInventory());
|
|
|
+ orderItemsShare.setGoodsNum(item.getGoodsNum().subtract(productLaunch.getInventory()));
|
|
|
+ orderItemsShare.setTotalAmount(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
|
|
|
+ orderItemsListShare.add(orderItemsShare);
|
|
|
+ } else {
|
|
|
+ orderItemsShare.setInventory(item.getInventory());
|
|
|
+ orderItemsShare.setGoodsNum(item.getGoodsNum());
|
|
|
+ orderItemsShare.setTotalAmount(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
|
|
|
+ orderItemsListShare.add(orderItemsShare);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //生成完毕删除购物车
|
|
|
+ item.setIsDeleted(1);
|
|
|
+ baseMapper.updateById(item);
|
|
|
+ }
|
|
|
+ if (!orderItemsListShare.isEmpty()) {
|
|
|
+ //保存销售主表信息-共享销售单
|
|
|
+ PjOrder orderShare = new PjOrder();
|
|
|
+ orderShare.setOrdNo(SrcOrdNo + "-" + 2);
|
|
|
+ orderShare.setBusinesDate(new Date());
|
|
|
+ orderShare.setSrcOrdNo(billNo);
|
|
|
+ orderShare.setCreateUser(AuthUtil.getUserId());
|
|
|
+ //根据客户账期计算应结日期
|
|
|
+ if (ObjectUtil.isNotEmpty(corpsDesc.getAccountPeriod())) {
|
|
|
+ Date now = new Date(); // 获取当前时间
|
|
|
+ long sevenDays = corpsDesc.getAccountPeriod() * 24 * 60 * 60 * 1000L;
|
|
|
+ Date afterSevenDays = new Date(now.getTime() + sevenDays);
|
|
|
+ orderShare.setDueDate(afterSevenDays);
|
|
|
+ } else {
|
|
|
+ orderShare.setDueDate(new Date());
|
|
|
+ }
|
|
|
+ orderShare.setCreateTime(new Date());
|
|
|
+ orderShare.setCreateDept(deptId);
|
|
|
+ orderShare.setTenantId(AuthUtil.getTenantId());
|
|
|
+ orderShare.setCustomerId(corpsDesc.getId());
|
|
|
+ orderShare.setCustomerName(corpsDesc.getCname());
|
|
|
+ if (ObjectUtils.isNotNull(corpsDesc.getSalesmanId())) {
|
|
|
+ orderShare.setSalerId(corpsDesc.getSalesmanId());
|
|
|
+ orderShare.setSalerName(corpsDesc.getSalesmanName());
|
|
|
+ } else {
|
|
|
+ if (res.isSuccess() && ObjectUtils.isNotNull(res.getData()) && !res.getData().isEmpty()) {
|
|
|
+ orderShare.setSalerId(res.getData().get(0).getId());
|
|
|
+ orderShare.setSalerName(res.getData().get(0).getAccount());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotNull(corpsDesc.getDeliveryWarehouseId())) {
|
|
|
+ orderShare.setStorageId(corpsDesc.getDeliveryWarehouseId());
|
|
|
+ orderShare.setStorageName(corpsDesc.getDeliveryWarehouseName());
|
|
|
+ }
|
|
|
+ orderShare.setSalesCompanyId(deptId);
|
|
|
+ orderShare.setSalesCompanyName(sysClient.getDeptName(deptId).getData());
|
|
|
+ orderShare.setRecAddress(address);
|
|
|
+ orderShare.setContacts(corpsAttn.getCname());
|
|
|
+ orderShare.setPhone(corpsAttn.getTel());
|
|
|
+ orderShare.setBsType(OrderTypeEnum.SALES.getType());
|
|
|
+ orderShare.setBusinessSource("共享销售");
|
|
|
+ orderShare.setReceivableType("网络支付");
|
|
|
+ orderShare.setBillType(1);
|
|
|
+ BigDecimal totalMoney = BigDecimal.ZERO;
|
|
|
+ orderShare.setNumberRows(orderItemsListShare.size());//行数
|
|
|
+ //明细总数量
|
|
|
+ orderShare.setGoodsTotalNum(orderItemsListShare.stream().map(PjOrderItems::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ //明细总金额
|
|
|
+ totalMoney = orderItemsListShare.stream().reduce(BigDecimal.ZERO, (x, y) -> {
|
|
|
+ return x.add(y.getGoodsNum().multiply(y.getPrice()));
|
|
|
+ }, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
|
|
|
+ orderShare.setSalesAmount(totalMoney);
|
|
|
+ orderShare.setTotalMoney(totalMoney);
|
|
|
+ orderShare.setGoodsNameJoin(orderItemsListShare.stream().map(PjOrderItems::getGoodsName).collect(Collectors.joining(",")));
|
|
|
+ orderShare.setShortcutJoin(orderItemsListShare.stream().map(PjOrderItems::getCnameInt).collect(Collectors.joining(",")));
|
|
|
+ corpsDesc.setLimitAmount(corpsDesc.getLimitAmount().subtract(totalMoney));
|
|
|
+ pjOrderList.add(orderShare);
|
|
|
+ orderService.save(orderShare);
|
|
|
+ pjOrderList.add(orderShare);
|
|
|
+ for (PjOrderItems item : orderItemsListShare) {
|
|
|
+ item.setPid(orderShare.getId());
|
|
|
+ orderItemsMapper.insert(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ BigDecimal totalMoney = BigDecimal.ZERO;
|
|
|
+ order.setNumberRows(orderItemsList.size());//行数
|
|
|
+ //明细总数量
|
|
|
+ order.setGoodsTotalNum(orderItemsList.stream().map(PjOrderItems::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ //明细总金额
|
|
|
+ totalMoney = orderItemsList.stream().reduce(BigDecimal.ZERO, (x, y) -> {
|
|
|
+ return x.add(y.getGoodsNum().multiply(y.getPrice()));
|
|
|
+ }, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
|
|
|
+ order.setSalesAmount(totalMoney);
|
|
|
+ order.setTotalMoney(totalMoney);
|
|
|
+ if (order.getGoodsTotalNum().compareTo(new BigDecimal(1)) == 0) {
|
|
|
+ String freight = sysClient.getParamServiceDWT("freight", corpsDesc.getTenantId());
|
|
|
+ if (ObjectUtils.isNotNull(freight)) {
|
|
|
+ try {
|
|
|
+ BigDecimal freightAmount = new BigDecimal(freight);
|
|
|
+ order.setTotalMoney(totalMoney.add(freightAmount));
|
|
|
+ order.setFreight(freightAmount);
|
|
|
+ } catch (Exception ignored) {
|
|
|
+ order.setFreight(new BigDecimal(0));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ order.setGoodsNameJoin(orderItemsList.stream().map(PjOrderItems::getGoodsName).collect(Collectors.joining(",")));
|
|
|
+ order.setShortcutJoin(orderItemsList.stream().map(PjOrderItems::getCnameInt).collect(Collectors.joining(",")));
|
|
|
+ order.setPaymentDate(new Date());
|
|
|
+ order.setActualPaymentStatus(1);
|
|
|
+ order.setPaymentAmountTl(totalMoney);
|
|
|
+ order.setStatus(OrderTypeEnum.XSDQR.getType());
|
|
|
+ order.setXcxStatus(OrderTypeEnum.XSDFH.getType());
|
|
|
+ corpsDesc.setLimitAmount(corpsDesc.getLimitAmount().subtract(totalMoney));
|
|
|
+ pjOrderList.add(order);
|
|
|
+ orderService.updateBatchById(pjOrderList);
|
|
|
+ corpsDescService.updateById(corpsDesc);
|
|
|
+ for (PjOrder item : pjOrderList) {
|
|
|
+ LocalDateTime now = LocalDateTime.now();
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
+ String formatted = now.format(formatter);
|
|
|
+ //给角色为财务的人发送消息
|
|
|
+ R<String> clientDeptIds = sysClient.getRoleIds(AuthUtil.getTenantId(), "客服");
|
|
|
+ if (clientDeptIds.isSuccess() && StringUtils.isNotBlank(clientDeptIds.getData())) {
|
|
|
+ R<List<User>> userList = userClient.listUserByRoleId(clientDeptIds.getData(), AuthUtil.getTenantId(), item.getSalesCompanyId() + "");
|
|
|
+ if (userList.isSuccess() && CollectionUtils.isNotEmpty(userList.getData())) {
|
|
|
+ for (User datum : userList.getData()) {
|
|
|
+ //循环发送消息
|
|
|
+ Message sendMessage = new Message();
|
|
|
+ sendMessage.setParameter(item.getId() + "");
|
|
|
+ sendMessage.setUserName("外部用户");
|
|
|
+ sendMessage.setUserId(null);
|
|
|
+ sendMessage.setToUserId(datum.getId());
|
|
|
+ sendMessage.setToUserName(datum.getName());
|
|
|
+ sendMessage.setMessageType(1);
|
|
|
+ sendMessage.setTenantId(AuthUtil.getTenantId());
|
|
|
+ sendMessage.setCreateUser(null);
|
|
|
+ sendMessage.setCreateTime(new Date());
|
|
|
+ sendMessage.setUrl("/tirePartsMall/salesManagement/saleOrder/index");
|
|
|
+ sendMessage.setPageLabel("销售订单");
|
|
|
+ sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
|
|
|
+ sendMessage.setMessageBody("您有新的外部销售订单请及时处理!单号:" + item.getOrdNo() + "时间:" + formatted);
|
|
|
+ R save = messageClient.save(sendMessage);
|
|
|
+ System.out.println("发送结果:" + save);
|
|
|
+ if (!save.isSuccess()) {
|
|
|
+ throw new SecurityException("发送消息失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotNull(item.getSalerId())) {
|
|
|
+ Message sendMessage = new Message();
|
|
|
+ sendMessage.setParameter(item.getId() + "");
|
|
|
+ sendMessage.setUserName("外部用户");
|
|
|
+ sendMessage.setUserId(null);
|
|
|
+ sendMessage.setToUserId(item.getSalerId());
|
|
|
+ sendMessage.setToUserName(item.getSalerName());
|
|
|
+ sendMessage.setMessageType(1);
|
|
|
+ sendMessage.setTenantId(AuthUtil.getTenantId());
|
|
|
+ sendMessage.setCreateUser(null);
|
|
|
+ sendMessage.setCreateTime(new Date());
|
|
|
+ sendMessage.setUrl("/tirePartsMall/salesManagement/saleOrder/index");
|
|
|
+ sendMessage.setPageLabel("销售订单");
|
|
|
+ sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
|
|
|
+ sendMessage.setMessageBody("您有新的外部销售订单请及时处理!单号:" + item.getOrdNo() + "时间:" + formatted);
|
|
|
+ R save = messageClient.save(sendMessage);
|
|
|
+ System.out.println("发送结果:" + save);
|
|
|
+ if (!save.isSuccess()) {
|
|
|
+ throw new SecurityException("发送消息失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Map<String,Object> map = new HashMap<>();
|
|
|
+ map.put("type","2");
|
|
|
+ return R.data(map);
|
|
|
+ }
|
|
|
+
|
|
|
}
|