Browse Source

Merge remote-tracking branch 'origin/v1.0' into v1.0

v1.0
15989082884@163.com 2 years ago
parent
commit
075c9b22c5
  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. 87
      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. 50
      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 { static {
MAPPER.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true); MAPPER.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);
MAPPER.setSerializationInclusion(JsonInclude.Include.NON_NULL); 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) { public BmsSupplier getByCode(String code,String belong) {
LambdaQueryWrapper<BmsSupplier> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<BmsSupplier> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsSupplier::getCode,code); 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)); lqw.and(a->a.eq(BmsSupplier::getBelong,belong).or().isNull(BmsSupplier::getBelong));
} }
return this.getOne(lqw,false); 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; package com.qs.serve.modules.exl.common;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSession;
import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.SqlSessionUtils; import org.mybatis.spring.SqlSessionUtils;
@ -11,6 +12,7 @@ import java.sql.SQLException;
* @author YenHex * @author YenHex
* @since 2023/8/14 * @since 2023/8/14
*/ */
@Slf4j
public class QsSqlSessionUtil { public class QsSqlSessionUtil {
/** /**
@ -44,7 +46,7 @@ public class QsSqlSessionUtil {
pst.execute(); pst.execute();
return true; return true;
} catch (SQLException e) { } catch (SQLException e) {
e.printStackTrace(); log.error("执行sql:[{}] \n msg:{}",sql,e.getMessage());
}finally { }finally {
if(pst!=null){ if(pst!=null){
try { try {

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

@ -81,7 +81,7 @@ public class ExlTableDataController {
columnLqw.orderByAsc(ExlColumnConf::getSort); columnLqw.orderByAsc(ExlColumnConf::getSort);
List<ExlColumnConf> columnList = exlColumnConfService.list(columnLqw); List<ExlColumnConf> columnList = exlColumnConfService.list(columnLqw);
// query // query
boolean adminFlag = false; boolean adminFlag = exlTableUserService.checkAdmin(tableConf.getId(), AuthContextUtils.getSysUserId())>0;
Map<String, Object> queryMap = buildQueryMap(map, columnList,adminFlag); Map<String, Object> queryMap = buildQueryMap(map, columnList,adminFlag);
String targetTableName = ExlConst.TABLE_NAME_PRE + tableConf.getTableName(); String targetTableName = ExlConst.TABLE_NAME_PRE + tableConf.getTableName();
Long count = exlTableConfMapper.countData(targetTableName,queryMap); Long count = exlTableConfMapper.countData(targetTableName,queryMap);
@ -254,6 +254,7 @@ public class ExlTableDataController {
*/ */
@PostMapping("/batchSave") @PostMapping("/batchSave")
public R<?> batchSave( @RequestBody ExlBatchSaveBo saveBo){ public R<?> batchSave( @RequestBody ExlBatchSaveBo saveBo){
final String ErrMsgKey = "errMsg";
List<Object> param = saveBo.getParam(); List<Object> param = saveBo.getParam();
String tableConfigId = saveBo.getTb_config_cnf_id(); String tableConfigId = saveBo.getTb_config_cnf_id();
// table // table
@ -265,23 +266,9 @@ public class ExlTableDataController {
List<ExlColumnConf> columnList = exlColumnConfService.list(columnLqw); List<ExlColumnConf> columnList = exlColumnConfService.list(columnLqw);
String targetTableName = ExlConst.TABLE_NAME_PRE + tableConf.getTableName(); String targetTableName = ExlConst.TABLE_NAME_PRE + tableConf.getTableName();
//移除旧历史 boolean executeFlag = true;
//移除旧历史判断参数
int keyCount = (int) columnList.stream().filter(a -> a.getKeyFlag().equals(1)).count(); 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) //insert into table (cloumns) values (vals),(vals)
StringBuilder insertSql = new StringBuilder("insert into "+targetTableName +"( `union_row_id`,"); StringBuilder insertSql = new StringBuilder("insert into "+targetTableName +"( `union_row_id`,");
for (int i = 0; i < columnList.size(); i++) { for (int i = 0; i < columnList.size(); i++) {
@ -299,6 +286,7 @@ public class ExlTableDataController {
} }
} }
insertSql.append(")values"); insertSql.append(")values");
List<JSONObject> errorResult = new ArrayList<>();
for (int k = 0; k < param.size(); k++) { for (int k = 0; k < param.size(); k++) {
Object obj = param.get(k); Object obj = param.get(k);
insertSql.append("("); insertSql.append("(");
@ -311,40 +299,97 @@ public class ExlTableDataController {
for (int i = 0; i < columnList.size(); i++) { for (int i = 0; i < columnList.size(); i++) {
ExlColumnConf columnConf = columnList.get(i); ExlColumnConf columnConf = columnList.get(i);
String string = jsonObject.getString(columnConf.getColumnName()); 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+"'"); insertSql.append("'"+string+"'");
if(columnConf.getColumnType().equals(ExlConst.TYPE_USER_CODE)){ if(columnConf.getColumnType().equals(ExlConst.TYPE_USER_CODE)){
insertSql.append(","); insertSql.append(",");
String name = "";
if(string.length()>0){
LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper<>();
lqw.eq(SysUser::getCode,string); lqw.eq(SysUser::getCode,string);
lqw.select(SysUser::getCode,SysUser::getName); lqw.select(SysUser::getCode,SysUser::getName);
List<SysUser> sysUsers = sysUserMapper.selectList(lqw); List<SysUser> sysUsers = sysUserMapper.selectList(lqw);
if (sysUsers.size()>0){ if (sysUsers.size()>0){
String name = sysUsers.get(0).getName(); name = sysUsers.get(0).getName();
insertSql.append("'"+name+"'"); }
}
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)){ }else if(columnConf.getColumnType().equals(ExlConst.TYPE_CUSTOMER_CODE)){
insertSql.append(","); insertSql.append(",");
String name = "";
if(string.length()>0){
LambdaQueryWrapper<BmsSupplier> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<BmsSupplier> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsSupplier::getCode,string); lqw.eq(BmsSupplier::getCode,string);
lqw.select(BmsSupplier::getCode,BmsSupplier::getName); lqw.select(BmsSupplier::getCode,BmsSupplier::getName);
List<BmsSupplier> supplierList = bmsSupplierMapper.selectList(lqw); List<BmsSupplier> supplierList = bmsSupplierMapper.selectList(lqw);
if (supplierList.size()>0){ if (supplierList.size()>0){
String name = supplierList.get(0).getName(); name = supplierList.get(0).getName();
insertSql.append("'"+name+"'");
} }
} }
if(!StringUtils.hasText(name) && columnConf.getScope()>0){
executeFlag = false;
this.appendErrorMsg(ErrMsgKey, jsonObject, columnConf);
continue;
}
insertSql.append("'"+name+"'");
}
if(i+1<columnList.size()){ if(i+1<columnList.size()){
insertSql.append(", "); insertSql.append(", ");
} }
} }
//添加错误信息
errorResult.add(jsonObject);
insertSql.append(")"); insertSql.append(")");
if(k+1<param.size()){ if(k+1<param.size()){
insertSql.append(", "); insertSql.append(", ");
} }
} }
//移除旧历史
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); QsSqlSessionUtil.executeSql(insertSql.toString(),sqlSessionTemplate);
return R.ok(); 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()+"数据无效或为空;");
}
private void formatListData(List<Map<String, Object>> list) { private void formatListData(List<Map<String, Object>> list) {

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 org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -36,6 +37,13 @@ public class ExlTableConfServiceImpl extends ServiceImpl<ExlTableConfMapper,ExlT
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public ExlTableConf modify(ExlTableBo param) { 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(); ExlTableConf tableConf = new ExlTableConf();
if(param.getId()==null){ if(param.getId()==null){
//save //save

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

@ -115,6 +115,7 @@ public class OmsOrderApi {
PageUtil.startPage(); PageUtil.startPage();
LambdaQueryWrapper<OmsOrder> orderWrapper = new LambdaQueryWrapper<>(param); LambdaQueryWrapper<OmsOrder> orderWrapper = new LambdaQueryWrapper<>(param);
orderWrapper.eq(OmsOrder::getUserId,AuthContextUtils.getSysUserId()); orderWrapper.eq(OmsOrder::getUserId,AuthContextUtils.getSysUserId());
orderWrapper.orderByDesc(OmsOrder::getId);
List<OmsOrder> list = omsOrderService.list(orderWrapper); List<OmsOrder> list = omsOrderService.list(orderWrapper);
for (OmsOrder order : list) { for (OmsOrder order : list) {
BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getById(order.getSupplierAddrId()); 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 = "订单号不能为空") @NotBlank(message = "订单号不能为空")
@Length(max = 20,message = "订单号长度不能超过20字") @Length(max = 20,message = "订单号长度不能超过20字")
@TableField(exist = false) @TableField(condition = SqlCondition.LIKE)
private String orderSn; private String orderSn;
/** 供应商ID */ /** 供应商ID */

6
src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderPcBo.java

@ -17,7 +17,7 @@ public class OmsOrderPcBo {
private Integer orderType; private Integer orderType;
/** SKU下单列表 */ /** SKU下单列表 */
private List<SkuParam> skuParamList; private List<SpuParam> spuParamList;
/** todo 促销活动id列表 */ /** todo 促销活动id列表 */
private List<Long> promotionIds; private List<Long> promotionIds;
@ -29,9 +29,9 @@ public class OmsOrderPcBo {
private Long addressId; private Long addressId;
@Data @Data
public static class SkuParam{ public static class SpuParam{
/** skuId */ /** skuId */
private Long skuId; private Long spuId;
/** 数量 */ /** 数量 */
private Integer qty; private Integer qty;

50
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 @Override
public OmsConfirmOrderResult confirmOrderPc(OmsOrderPcBo confirmOrder) { public OmsConfirmOrderResult confirmOrderPc(OmsOrderPcBo confirmOrder) {
BmsSupplier supplier = AuthContextUtils.getCurrentSupplier(); BmsSupplier supplier = AuthContextUtils.getCurrentSupplier();
String supplierCode = supplier.getSupplierCode();
//构建Sku //构建Sku
List<Long> skuIds = confirmOrder.getSkuParamList().stream() List<Long> spuIds = confirmOrder.getSpuParamList().stream()
.map(OmsOrderPcBo.SkuParam::getSkuId).collect(Collectors.toList()); .map(OmsOrderPcBo.SpuParam::getSpuId).collect(Collectors.toList());
List<GoodsSku> skuList = goodsSkuService.listByIds(skuIds); List<GoodsSpu> spuList = goodsSpuService.listByIds(spuIds);
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<OmsShoppingCart> shoppingCartList = new ArrayList<>(); List<OmsShoppingCart> shoppingCartList = new ArrayList<>();
for (GoodsSku goodsSku : skuList) { for (GoodsSpu goodsSpu : spuList) {
GoodsSpu goodsSpu = goodsSpuService.getById(goodsSku.getSpuId()); int qty = 1;
for (OmsOrderPcBo.SpuParam spuParam : confirmOrder.getSpuParamList()) {
if(spuParam.getSpuId().equals(goodsSpu.getId())){
qty = spuParam.getQty();
}
}
OmsShoppingCart shoppingCart = new OmsShoppingCart(); OmsShoppingCart shoppingCart = new OmsShoppingCart();
shoppingCart.setSpuId(goodsSku.getSpuId()); shoppingCart.setSpuId(goodsSpu.getId());
shoppingCart.setSkuId(goodsSku.getId()); shoppingCart.setSkuId(0L);
shoppingCart.setSpuCode(goodsSpu.getSpuCode()); shoppingCart.setSpuCode(goodsSpu.getSpuCode());
shoppingCart.setSkuCode(goodsSku.getSkuCode()); shoppingCart.setSkuCode("");
shoppingCart.setQuantity(goodsSku.getQty()); shoppingCart.setQuantity(qty);
shoppingCart.setSpecInfo(goodsSku.getSpecInfos()); shoppingCart.setSpecInfo(goodsSpu.getName());
shoppingCart.setPicUrl(goodsSku.getPicUrl());
shoppingCartList.add(shoppingCart); shoppingCartList.add(shoppingCart);
} }
//计算合计 //计算合计
OmsCalcAmount calcAmount = new OmsCalcAmount(); OmsCalcAmount calcAmount = new OmsCalcAmount();
BigDecimal totalAmount = BigDecimal.ZERO; calcAmount.setTotalAmount(BigDecimal.ZERO);
for (GoodsSku sku : skuList) {
BigDecimal salePrice = sku.getSalesPrice();
BigDecimal itemPrice = new BigDecimal(sku.getQty()).multiply(salePrice);
totalAmount.add(itemPrice);
}
calcAmount.setTotalAmount(totalAmount);
//todo 计算供应商折扣 //todo 计算供应商折扣
//todo 计算是否有活动优惠 //todo 计算是否有活动优惠
@ -231,7 +217,9 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
//清空勾选的购物车 //清空勾选的购物车
List<Long> cartIds = confirmOrder.getShoppingCarts().stream() List<Long> cartIds = confirmOrder.getShoppingCarts().stream()
.map(OmsShoppingCart::getId).collect(Collectors.toList()); .map(OmsShoppingCart::getId).collect(Collectors.toList());
if(CollectionUtil.isNotEmpty(cartIds)){
omsShoppingCartService.removeBatchByIds(cartIds); omsShoppingCartService.removeBatchByIds(cartIds);
}
return order; 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.BmsCostCenter;
import com.qs.serve.modules.bms.entity.vo.BmsCostCenterTreeVo; 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.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.BmsCostCenterService;
import com.qs.serve.modules.bms.service.BmsRegionService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
@ -19,6 +21,7 @@ import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
* 第三方接口
* @author YenHex * @author YenHex
* @since 2023/9/7 * @since 2023/9/7
*/ */
@ -29,6 +32,7 @@ import java.util.stream.Collectors;
public class PortalBmsController { public class PortalBmsController {
private BmsCostCenterService bmsCostCenterService; private BmsCostCenterService bmsCostCenterService;
private BmsRegionService bmsRegionService;
/** /**
* 树查询 * 树查询
@ -46,7 +50,13 @@ public class PortalBmsController {
return treeVoList; return treeVoList;
} }
/**
* 销售区域树
* @return
*/
@GetMapping("/saleRegionTree")
public List<BmsRegionTreeVo> saleRegionTree(){
return bmsRegionService.getTree(false, 0);
}
} }

Loading…
Cancel
Save