Browse Source

数据中心调整

v1.0
Yen 2 years ago
parent
commit
99896a37fa
  1. 2
      src/main/java/com/qs/serve/common/util/JsonUtil.java
  2. 2
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java
  3. 4
      src/main/java/com/qs/serve/modules/exl/common/QsSqlSessionUtil.java
  4. 111
      src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java
  5. 8
      src/main/java/com/qs/serve/modules/exl/service/impl/ExlTableConfServiceImpl.java
  6. 1
      src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java
  7. 2
      src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java
  8. 6
      src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderPcBo.java
  9. 52
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java
  10. 14
      src/main/java/com/qs/serve/modules/third/PortalBmsController.java

2
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());
}
/**

2
src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java

@ -108,7 +108,7 @@ public class BmsSupplierServiceImpl extends ServiceImpl<BmsSupplierMapper,BmsSup
public BmsSupplier getByCode(String code,String belong) {
LambdaQueryWrapper<BmsSupplier> 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);

4
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 {

111
src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java

@ -81,7 +81,7 @@ public class ExlTableDataController {
columnLqw.orderByAsc(ExlColumnConf::getSort);
List<ExlColumnConf> columnList = exlColumnConfService.list(columnLqw);
// query
boolean adminFlag = false;
boolean adminFlag = exlTableUserService.checkAdmin(tableConf.getId(), AuthContextUtils.getSysUserId())>0;
Map<String, Object> 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<Object> param = saveBo.getParam();
String tableConfigId = saveBo.getTb_config_cnf_id();
// table
@ -265,23 +266,9 @@ public class ExlTableDataController {
List<ExlColumnConf> 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<param.size()){
removeSql.append(",");
}
}
removeSql.append(");");
QsSqlSessionUtil.executeSql(removeSql.toString(),sqlSessionTemplate);
}
//insert into table (cloumns) values (vals),(vals)
StringBuilder insertSql = new StringBuilder("insert into "+targetTableName +"( `union_row_id`,");
for (int i = 0; i < columnList.size(); i++) {
@ -299,6 +286,7 @@ public class ExlTableDataController {
}
}
insertSql.append(")values");
List<JSONObject> 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<SysUser> lqw = new LambdaQueryWrapper<>();
lqw.eq(SysUser::getCode,string);
lqw.select(SysUser::getCode,SysUser::getName);
List<SysUser> sysUsers = sysUserMapper.selectList(lqw);
if (sysUsers.size()>0){
String name = sysUsers.get(0).getName();
insertSql.append("'"+name+"'");
String name = "";
if(string.length()>0){
LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper<>();
lqw.eq(SysUser::getCode,string);
lqw.select(SysUser::getCode,SysUser::getName);
List<SysUser> 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<BmsSupplier> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsSupplier::getCode,string);
lqw.select(BmsSupplier::getCode,BmsSupplier::getName);
List<BmsSupplier> supplierList = bmsSupplierMapper.selectList(lqw);
if (supplierList.size()>0){
String name = supplierList.get(0).getName();
insertSql.append("'"+name+"'");
String name = "";
if(string.length()>0){
LambdaQueryWrapper<BmsSupplier> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsSupplier::getCode,string);
lqw.select(BmsSupplier::getCode,BmsSupplier::getName);
List<BmsSupplier> 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+1<columnList.size()){
insertSql.append(", ");
}
}
//添加错误信息
errorResult.add(jsonObject);
insertSql.append(")");
if(k+1<param.size()){
insertSql.append(", ");
}
}
QsSqlSessionUtil.executeSql(insertSql.toString(),sqlSessionTemplate);
return R.ok();
//移除旧历史
if(executeFlag){
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<param.size()){
removeSql.append(",");
}
}
removeSql.append(");");
QsSqlSessionUtil.executeSql(removeSql.toString(),sqlSessionTemplate);
}
//执行批量保存
QsSqlSessionUtil.executeSql(insertSql.toString(),sqlSessionTemplate);
return R.ok();
}
Map<String,Object> 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()+"数据无效或为空;");
}

8
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<ExlTableConfMapper,ExlT
@Override
@Transactional(rollbackFor = Exception.class)
public ExlTableConf modify(ExlTableBo param) {
String tableName = param.getTableName();
// 定义正则表达式 只允许0-9数字和26个英文字母(区分大小写),以及下划线
String regex = "^[A-Za-z0-9_]+$";
boolean allowTableName = Pattern.matches(regex, tableName);
if(!allowTableName){
Assert.throwEx("表名规范错误");
}
ExlTableConf tableConf = new ExlTableConf();
if(param.getId()==null){
//save

1
src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java

@ -115,6 +115,7 @@ public class OmsOrderApi {
PageUtil.startPage();
LambdaQueryWrapper<OmsOrder> orderWrapper = new LambdaQueryWrapper<>(param);
orderWrapper.eq(OmsOrder::getUserId,AuthContextUtils.getSysUserId());
orderWrapper.orderByDesc(OmsOrder::getId);
List<OmsOrder> list = omsOrderService.list(orderWrapper);
for (OmsOrder order : list) {
BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getById(order.getSupplierAddrId());

2
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 */

6
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<SkuParam> skuParamList;
private List<SpuParam> spuParamList;
/** todo 促销活动id列表 */
private List<Long> 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;

52
src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java

@ -108,47 +108,33 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
@Override
public OmsConfirmOrderResult confirmOrderPc(OmsOrderPcBo confirmOrder) {
BmsSupplier supplier = AuthContextUtils.getCurrentSupplier();
String supplierCode = supplier.getSupplierCode();
//构建Sku
List<Long> skuIds = confirmOrder.getSkuParamList().stream()
.map(OmsOrderPcBo.SkuParam::getSkuId).collect(Collectors.toList());
List<GoodsSku> 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<Long> spuIds = confirmOrder.getSpuParamList().stream()
.map(OmsOrderPcBo.SpuParam::getSpuId).collect(Collectors.toList());
List<GoodsSpu> spuList = goodsSpuService.listByIds(spuIds);
//构建临时购物车列表
List<OmsShoppingCart> 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<OmsOrderMapper,OmsOrder> im
//清空勾选的购物车
List<Long> cartIds = confirmOrder.getShoppingCarts().stream()
.map(OmsShoppingCart::getId).collect(Collectors.toList());
omsShoppingCartService.removeBatchByIds(cartIds);
if(CollectionUtil.isNotEmpty(cartIds)){
omsShoppingCartService.removeBatchByIds(cartIds);
}
return order;
}

14
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<BmsRegionTreeVo> saleRegionTree(){
return bmsRegionService.getTree(false, 0);
}
}

Loading…
Cancel
Save