From 99896a37fa63e4365eb0cc59a8b5a69ddc73a6fc Mon Sep 17 00:00:00 2001 From: Yen Date: Wed, 27 Sep 2023 11:36:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E4=B8=AD=E5=BF=83=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/qs/serve/common/util/JsonUtil.java | 2 +- .../service/impl/BmsSupplierServiceImpl.java | 2 +- .../modules/exl/common/QsSqlSessionUtil.java | 4 +- .../controller/ExlTableDataController.java | 111 ++++++++++++------ .../service/impl/ExlTableConfServiceImpl.java | 8 ++ .../oms/controller/api/OmsOrderApi.java | 1 + .../qs/serve/modules/oms/entity/OmsOrder.java | 2 +- .../modules/oms/entity/bo/OmsOrderPcBo.java | 6 +- .../oms/service/impl/OmsOrderServiceImpl.java | 52 ++++---- .../modules/third/PortalBmsController.java | 14 ++- 10 files changed, 128 insertions(+), 74 deletions(-) diff --git a/src/main/java/com/qs/serve/common/util/JsonUtil.java b/src/main/java/com/qs/serve/common/util/JsonUtil.java index 69fae846..b470f69e 100644 --- a/src/main/java/com/qs/serve/common/util/JsonUtil.java +++ b/src/main/java/com/qs/serve/common/util/JsonUtil.java @@ -32,7 +32,7 @@ public class JsonUtil { static { MAPPER.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true); MAPPER.setSerializationInclusion(JsonInclude.Include.NON_NULL); - //MAPPER.registerModule(new JavaTimeModule()); + MAPPER.registerModule(new JavaTimeModule()); } /** diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java index fc268a70..aa4cedc5 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java @@ -108,7 +108,7 @@ public class BmsSupplierServiceImpl extends ServiceImpl lqw = new LambdaQueryWrapper<>(); lqw.eq(BmsSupplier::getCode,code); - if(belong!=null){ + if(belong!=null&&!belong.equals("ALL")){ lqw.and(a->a.eq(BmsSupplier::getBelong,belong).or().isNull(BmsSupplier::getBelong)); } return this.getOne(lqw,false); diff --git a/src/main/java/com/qs/serve/modules/exl/common/QsSqlSessionUtil.java b/src/main/java/com/qs/serve/modules/exl/common/QsSqlSessionUtil.java index e1ea24c8..cff4b3e8 100644 --- a/src/main/java/com/qs/serve/modules/exl/common/QsSqlSessionUtil.java +++ b/src/main/java/com/qs/serve/modules/exl/common/QsSqlSessionUtil.java @@ -1,5 +1,6 @@ package com.qs.serve.modules.exl.common; +import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.session.SqlSession; import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.SqlSessionUtils; @@ -11,6 +12,7 @@ import java.sql.SQLException; * @author YenHex * @since 2023/8/14 */ +@Slf4j public class QsSqlSessionUtil { /** @@ -44,7 +46,7 @@ public class QsSqlSessionUtil { pst.execute(); return true; } catch (SQLException e) { - e.printStackTrace(); + log.error("执行sql:[{}] \n msg:{}",sql,e.getMessage()); }finally { if(pst!=null){ try { diff --git a/src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java b/src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java index 4b179315..96c502e4 100644 --- a/src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java +++ b/src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java @@ -81,7 +81,7 @@ public class ExlTableDataController { columnLqw.orderByAsc(ExlColumnConf::getSort); List columnList = exlColumnConfService.list(columnLqw); // query - boolean adminFlag = false; + boolean adminFlag = exlTableUserService.checkAdmin(tableConf.getId(), AuthContextUtils.getSysUserId())>0; Map queryMap = buildQueryMap(map, columnList,adminFlag); String targetTableName = ExlConst.TABLE_NAME_PRE + tableConf.getTableName(); Long count = exlTableConfMapper.countData(targetTableName,queryMap); @@ -254,6 +254,7 @@ public class ExlTableDataController { */ @PostMapping("/batchSave") public R batchSave( @RequestBody ExlBatchSaveBo saveBo){ + final String ErrMsgKey = "errMsg"; List param = saveBo.getParam(); String tableConfigId = saveBo.getTb_config_cnf_id(); // table @@ -265,23 +266,9 @@ public class ExlTableDataController { List columnList = exlColumnConfService.list(columnLqw); String targetTableName = ExlConst.TABLE_NAME_PRE + tableConf.getTableName(); - //移除旧历史 + boolean executeFlag = true; + //移除旧历史判断参数 int keyCount = (int) columnList.stream().filter(a -> a.getKeyFlag().equals(1)).count(); - if(keyCount>0){ - StringBuilder removeSql = new StringBuilder("delete from "+targetTableName+" where union_row_id in ("); - for (int k = 0;k < param.size(); k++) { - Object obj = param.get(k); - JSONObject jsonObject = JSONObject.parseObject(JsonUtil.objectToJson(obj)); - String unionId = TableCreateSqlUtil.buildUnionId(columnList,jsonObject); - removeSql.append("'"+unionId+"'"); - if(k+1 errorResult = new ArrayList<>(); for (int k = 0; k < param.size(); k++) { Object obj = param.get(k); insertSql.append("("); @@ -311,39 +299,96 @@ public class ExlTableDataController { for (int i = 0; i < columnList.size(); i++) { ExlColumnConf columnConf = columnList.get(i); String string = jsonObject.getString(columnConf.getColumnName()); + if(string==null|| "null".equals(string)){ + string = ""; + } + if(!StringUtils.hasText(string) && columnConf.getNotNullFlag().equals(1)){ + executeFlag = false; + this.appendErrorMsg(ErrMsgKey, jsonObject, columnConf); + continue; + } insertSql.append("'"+string+"'"); if(columnConf.getColumnType().equals(ExlConst.TYPE_USER_CODE)){ insertSql.append(","); - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.eq(SysUser::getCode,string); - lqw.select(SysUser::getCode,SysUser::getName); - List sysUsers = sysUserMapper.selectList(lqw); - if (sysUsers.size()>0){ - String name = sysUsers.get(0).getName(); - insertSql.append("'"+name+"'"); + String name = ""; + if(string.length()>0){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(SysUser::getCode,string); + lqw.select(SysUser::getCode,SysUser::getName); + List sysUsers = sysUserMapper.selectList(lqw); + if (sysUsers.size()>0){ + name = sysUsers.get(0).getName(); + } } + if(!StringUtils.hasText(name) && columnConf.getScope()>0){ + executeFlag = false; + this.appendErrorMsg(ErrMsgKey, jsonObject, columnConf); + continue; + } + insertSql.append("'"+name+"'"); }else if(columnConf.getColumnType().equals(ExlConst.TYPE_CUSTOMER_CODE)){ insertSql.append(","); - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.eq(BmsSupplier::getCode,string); - lqw.select(BmsSupplier::getCode,BmsSupplier::getName); - List supplierList = bmsSupplierMapper.selectList(lqw); - if (supplierList.size()>0){ - String name = supplierList.get(0).getName(); - insertSql.append("'"+name+"'"); + String name = ""; + if(string.length()>0){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(BmsSupplier::getCode,string); + lqw.select(BmsSupplier::getCode,BmsSupplier::getName); + List supplierList = bmsSupplierMapper.selectList(lqw); + if (supplierList.size()>0){ + name = supplierList.get(0).getName(); + } } + if(!StringUtils.hasText(name) && columnConf.getScope()>0){ + executeFlag = false; + this.appendErrorMsg(ErrMsgKey, jsonObject, columnConf); + continue; + } + insertSql.append("'"+name+"'"); } if(i+10){ + StringBuilder removeSql = new StringBuilder("delete from "+targetTableName+" where union_row_id in ("); + for (int k = 0;k < param.size(); k++) { + Object obj = param.get(k); + JSONObject jsonObject = JSONObject.parseObject(JsonUtil.objectToJson(obj)); + String unionId = TableCreateSqlUtil.buildUnionId(columnList,jsonObject); + removeSql.append("'"+unionId+"'"); + if(k+1 objectMap = new HashMap<>(); + objectMap.put("columnList",columnList); + objectMap.put("data",errorResult); + return R.error("数据异常",objectMap); + } + + private void appendErrorMsg(String ErrMsgKey, JSONObject jsonObject, ExlColumnConf columnConf) { + String tmp = jsonObject.getString(ErrMsgKey); + if(tmp==null){ + tmp = ""; + } + jsonObject.put(ErrMsgKey,tmp+ columnConf.getColumnHeader()+"数据无效或为空;"); } diff --git a/src/main/java/com/qs/serve/modules/exl/service/impl/ExlTableConfServiceImpl.java b/src/main/java/com/qs/serve/modules/exl/service/impl/ExlTableConfServiceImpl.java index 4efbe518..e7362b1b 100644 --- a/src/main/java/com/qs/serve/modules/exl/service/impl/ExlTableConfServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/exl/service/impl/ExlTableConfServiceImpl.java @@ -18,6 +18,7 @@ import com.qs.serve.modules.exl.mapper.ExlTableConfMapper; import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.regex.Pattern; import java.util.stream.Collectors; /** @@ -36,6 +37,13 @@ public class ExlTableConfServiceImpl extends ServiceImpl orderWrapper = new LambdaQueryWrapper<>(param); orderWrapper.eq(OmsOrder::getUserId,AuthContextUtils.getSysUserId()); + orderWrapper.orderByDesc(OmsOrder::getId); List list = omsOrderService.list(orderWrapper); for (OmsOrder order : list) { BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getById(order.getSupplierAddrId()); diff --git a/src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java b/src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java index d6c95cac..434423f5 100644 --- a/src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java +++ b/src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java @@ -33,7 +33,7 @@ public class OmsOrder implements Serializable { /** 订单号 */ @NotBlank(message = "订单号不能为空") @Length(max = 20,message = "订单号长度不能超过20字") - @TableField(exist = false) + @TableField(condition = SqlCondition.LIKE) private String orderSn; /** 供应商ID */ diff --git a/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderPcBo.java b/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderPcBo.java index bd574208..84f1e1bd 100644 --- a/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderPcBo.java +++ b/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderPcBo.java @@ -17,7 +17,7 @@ public class OmsOrderPcBo { private Integer orderType; /** SKU下单列表 */ - private List skuParamList; + private List spuParamList; /** todo 促销活动id列表 */ private List promotionIds; @@ -29,9 +29,9 @@ public class OmsOrderPcBo { private Long addressId; @Data - public static class SkuParam{ + public static class SpuParam{ /** skuId */ - private Long skuId; + private Long spuId; /** 数量 */ private Integer qty; diff --git a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java index b47d921d..ac00bfaa 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java @@ -108,47 +108,33 @@ public class OmsOrderServiceImpl extends ServiceImpl im @Override public OmsConfirmOrderResult confirmOrderPc(OmsOrderPcBo confirmOrder) { BmsSupplier supplier = AuthContextUtils.getCurrentSupplier(); - String supplierCode = supplier.getSupplierCode(); //构建Sku - List skuIds = confirmOrder.getSkuParamList().stream() - .map(OmsOrderPcBo.SkuParam::getSkuId).collect(Collectors.toList()); - List skuList = goodsSkuService.listByIds(skuIds); - if(StringUtils.hasText(supplierCode)){ - goodsSkuService.initSkuCusPrice(supplierCode,skuList); - } - //关联库存到SKU - for (OmsOrderPcBo.SkuParam skuParam : confirmOrder.getSkuParamList()) { - for (GoodsSku sku : skuList) { - if(sku.getId().equals(skuParam.getSkuId())){ - sku.setQty(skuParam.getQty()); - break; - } - } - } + List spuIds = confirmOrder.getSpuParamList().stream() + .map(OmsOrderPcBo.SpuParam::getSpuId).collect(Collectors.toList()); + List spuList = goodsSpuService.listByIds(spuIds); + //构建临时购物车列表 List shoppingCartList = new ArrayList<>(); - for (GoodsSku goodsSku : skuList) { - GoodsSpu goodsSpu = goodsSpuService.getById(goodsSku.getSpuId()); + for (GoodsSpu goodsSpu : spuList) { + int qty = 1; + for (OmsOrderPcBo.SpuParam spuParam : confirmOrder.getSpuParamList()) { + if(spuParam.getSpuId().equals(goodsSpu.getId())){ + qty = spuParam.getQty(); + } + } OmsShoppingCart shoppingCart = new OmsShoppingCart(); - shoppingCart.setSpuId(goodsSku.getSpuId()); - shoppingCart.setSkuId(goodsSku.getId()); + shoppingCart.setSpuId(goodsSpu.getId()); + shoppingCart.setSkuId(0L); shoppingCart.setSpuCode(goodsSpu.getSpuCode()); - shoppingCart.setSkuCode(goodsSku.getSkuCode()); - shoppingCart.setQuantity(goodsSku.getQty()); - shoppingCart.setSpecInfo(goodsSku.getSpecInfos()); - shoppingCart.setPicUrl(goodsSku.getPicUrl()); + shoppingCart.setSkuCode(""); + shoppingCart.setQuantity(qty); + shoppingCart.setSpecInfo(goodsSpu.getName()); shoppingCartList.add(shoppingCart); } //计算合计 OmsCalcAmount calcAmount = new OmsCalcAmount(); - BigDecimal totalAmount = BigDecimal.ZERO; - for (GoodsSku sku : skuList) { - BigDecimal salePrice = sku.getSalesPrice(); - BigDecimal itemPrice = new BigDecimal(sku.getQty()).multiply(salePrice); - totalAmount.add(itemPrice); - } - calcAmount.setTotalAmount(totalAmount); + calcAmount.setTotalAmount(BigDecimal.ZERO); //todo 计算供应商折扣 //todo 计算是否有活动优惠 @@ -231,7 +217,9 @@ public class OmsOrderServiceImpl extends ServiceImpl im //清空勾选的购物车 List cartIds = confirmOrder.getShoppingCarts().stream() .map(OmsShoppingCart::getId).collect(Collectors.toList()); - omsShoppingCartService.removeBatchByIds(cartIds); + if(CollectionUtil.isNotEmpty(cartIds)){ + omsShoppingCartService.removeBatchByIds(cartIds); + } return order; } diff --git a/src/main/java/com/qs/serve/modules/third/PortalBmsController.java b/src/main/java/com/qs/serve/modules/third/PortalBmsController.java index c370de27..941c0752 100644 --- a/src/main/java/com/qs/serve/modules/third/PortalBmsController.java +++ b/src/main/java/com/qs/serve/modules/third/PortalBmsController.java @@ -7,7 +7,9 @@ import com.qs.serve.common.util.TreeUtil; import com.qs.serve.modules.bms.entity.BmsCostCenter; import com.qs.serve.modules.bms.entity.vo.BmsCostCenterTreeVo; import com.qs.serve.modules.bms.entity.vo.BmsCostCenterVo; +import com.qs.serve.modules.bms.entity.vo.BmsRegionTreeVo; import com.qs.serve.modules.bms.service.BmsCostCenterService; +import com.qs.serve.modules.bms.service.BmsRegionService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; @@ -19,6 +21,7 @@ import java.util.List; import java.util.stream.Collectors; /** + * 第三方接口 * @author YenHex * @since 2023/9/7 */ @@ -29,6 +32,7 @@ import java.util.stream.Collectors; public class PortalBmsController { private BmsCostCenterService bmsCostCenterService; + private BmsRegionService bmsRegionService; /** * 树查询 @@ -46,7 +50,13 @@ public class PortalBmsController { return treeVoList; } - - + /** + * 销售区域树 + * @return + */ + @GetMapping("/saleRegionTree") + public List saleRegionTree(){ + return bmsRegionService.getTree(false, 0); + } }