Browse Source

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

v1.0
15989082884@163.com 2 years ago
parent
commit
f131fad01d
  1. 10
      pom.xml
  2. 48
      src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java
  3. 107
      src/main/java/com/qs/serve/common/util/JdbcUtil.java
  4. 72
      src/main/java/com/qs/serve/modules/erp/controller/ErpCustomerController.java
  5. 19
      src/main/java/com/qs/serve/modules/erp/entity/dto/ErpCustomerAmountResult.java
  6. 25
      src/main/java/com/qs/serve/modules/erp/service/ErpCustomerService.java
  7. 68
      src/main/java/com/qs/serve/modules/erp/service/impl/ErpCustomerServiceImpl.java
  8. 2
      src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java
  9. 9
      src/main/java/com/qs/serve/modules/goods/controller/api/GoodsSpuApi.java
  10. 5
      src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java
  11. 32
      src/main/java/com/qs/serve/modules/goods/entity/dto/InventoryCusPrice.java
  12. 17
      src/main/java/com/qs/serve/modules/goods/entity/so/InventoryCusPriceQuery.java
  13. 9
      src/main/java/com/qs/serve/modules/goods/service/GoodsSkuService.java
  14. 2
      src/main/java/com/qs/serve/modules/goods/service/GoodsSpuService.java
  15. 67
      src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java
  16. 5
      src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java
  17. 9
      src/main/java/com/qs/serve/modules/oms/controller/api/OmsShoppingCartApi.java
  18. 4
      src/main/java/com/qs/serve/modules/oms/entity/OmsShoppingCart.java
  19. 10
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java
  20. 3
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsShoppingCartServiceImpl.java
  21. 1
      src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java
  22. 4
      src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java
  23. 20
      src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetChangeController.java
  24. 11
      src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java
  25. 2
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetApplyOperationServiceImpl.java
  26. 6
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchOperationServiceImpl.java
  27. 1
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchServiceImpl.java
  28. 5
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java
  29. 10
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java
  30. 2
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java
  31. 5
      src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationDataController.java
  32. 6
      src/main/java/com/qs/serve/modules/vtb/entity/so/VtbActivityCheckSo.java
  33. 5
      src/main/java/com/qs/serve/modules/vtb/entity/so/VtbVerificationCheckSo.java
  34. 2
      src/main/resources/mapper/his/HisUserSupplierMapper.xml
  35. 22
      src/main/resources/mapper/vtb/VtbVerReportMapper.xml

10
pom.xml

@ -153,11 +153,11 @@
<version>8.0.15</version> <version>8.0.15</version>
</dependency> </dependency>
<!-- <dependency>--> <dependency>
<!-- <groupId>com.microsoft.sqlserver</groupId>--> <groupId>com.microsoft.sqlserver</groupId>
<!-- <artifactId>mssql-jdbc</artifactId>--> <artifactId>mssql-jdbc</artifactId>
<!-- <version>8.4.1.jre8</version>--> <version>8.4.1.jre8</version>
<!-- </dependency>--> </dependency>
<dependency> <dependency>
<groupId>org.springframework</groupId> <groupId>org.springframework</groupId>

48
src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java

@ -3,12 +3,16 @@ package com.qs.serve.common.framework.manager;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.config.DevEnvironmentConfig; import com.qs.serve.common.config.DevEnvironmentConfig;
import com.qs.serve.common.framework.redis.RedisService;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.util.AuthContextUtils; import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.common.util.JsonUtil; import com.qs.serve.common.util.JsonUtil;
import com.qs.serve.common.util.SpringUtils; import com.qs.serve.common.util.SpringUtils;
import com.qs.serve.modules.data.entity.DataAffairCommit; import com.qs.serve.modules.data.entity.DataAffairCommit;
import com.qs.serve.modules.data.service.DataAffairCommitService; import com.qs.serve.modules.data.service.DataAffairCommitService;
import com.qs.serve.modules.seeyon.service.SeeYonOperationService; import com.qs.serve.modules.seeyon.service.SeeYonOperationService;
import com.qs.serve.modules.seeyon.service.SeeYonRequestService;
import com.qs.serve.modules.seeyon.service.impl.SeeYonRequestBaseService;
import com.qs.serve.modules.sys.entity.SysOperationLog; import com.qs.serve.modules.sys.entity.SysOperationLog;
import com.qs.serve.modules.sys.mapper.SysOperationLogMapper; import com.qs.serve.modules.sys.mapper.SysOperationLogMapper;
import com.qs.serve.modules.tbs.entity.TbsBudget; import com.qs.serve.modules.tbs.entity.TbsBudget;
@ -30,6 +34,9 @@ import org.springframework.scheduling.annotation.Async;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.TimerTask; import java.util.TimerTask;
import java.util.concurrent.TimeUnit;
import static com.qs.serve.modules.tbs.common.TbsSeeYonConst.ERP_CUS_AMOUNT;
/** /**
* 异步工厂 * 异步工厂
@ -53,6 +60,41 @@ public class AsyncFactory {
}; };
} }
/**
* 异步保存政策状态
* @param userId
* @param supplierCode
* @return
*/
public static TimerTask initCustomerPrice(String userId,String supplierCode) {
return new TimerTask() {
@Override
public void run() {
String lockKey = "customer_price_lock:"+userId+":"+supplierCode;
String priceDataKey = "customer_price_data:"+userId;
RedisService redisService = SpringUtils.getBean(RedisService.class);
redisService.set(lockKey,1,30,TimeUnit.SECONDS);
log.debug("获取客户金额,cusCode:{}",supplierCode);
//请求获取金额
SeeYonRequestBaseService seeYonRequestService = SpringUtils.getBean(SeeYonRequestBaseService.class);
R<String> reqResult = seeYonRequestService.getBase(ERP_CUS_AMOUNT+"?supplierCode="+supplierCode,"获取客户["+supplierCode+"]金额");
if(reqResult==null || !reqResult.getStatus().equals(200)){
//有错误退出
log.warn("获取客户金额失败,cusCode:{}",supplierCode);
redisService.set(lockKey,0);
return;
}
String amount = reqResult.getData()==null?"0":reqResult.getData();
//数据格式:supplierCode_&_amount 如 A235654_&_612.00
String value = supplierCode+"_&_"+amount;
//缓存15分钟
log.debug("获取客户金额成功,cusCode:{},缓存15分钟",supplierCode);
redisService.set(priceDataKey,value,15, TimeUnit.MINUTES);
redisService.set(lockKey,0);
}
};
}
/** /**
* 异步保存政策状态 * 异步保存政策状态
* @param policyId * @param policyId
@ -94,7 +136,7 @@ public class AsyncFactory {
try { try {
AuthContextUtils.setTenant("001"); AuthContextUtils.setTenant("001");
log.debug("--------------------------SubmitBudgetApply CallbackTimer Sleep Start :{}------------------------------",budgetId); log.debug("--------------------------SubmitBudgetApply CallbackTimer Sleep Start :{}------------------------------",budgetId);
Thread.sleep(7*1000); Thread.sleep(3*1000);
TbsBudgetChangeOperationServiceImpl applyOperationService = SpringUtils.getBean(TbsBudgetChangeOperationServiceImpl.class); TbsBudgetChangeOperationServiceImpl applyOperationService = SpringUtils.getBean(TbsBudgetChangeOperationServiceImpl.class);
String summeryResult = applyOperationService.checkAffairSummery(budgetId); String summeryResult = applyOperationService.checkAffairSummery(budgetId);
@ -175,7 +217,7 @@ public class AsyncFactory {
try { try {
AuthContextUtils.setTenant("001"); AuthContextUtils.setTenant("001");
log.debug("--------------------------submitBudgetApply CallbackTimer Sleep Start :{}------------------------------",budgetId); log.debug("--------------------------submitBudgetApply CallbackTimer Sleep Start :{}------------------------------",budgetId);
Thread.sleep(7*1000); Thread.sleep(3*1000);
TbsBudgetApplyOperationServiceImpl applyOperationService = SpringUtils.getBean(TbsBudgetApplyOperationServiceImpl.class); TbsBudgetApplyOperationServiceImpl applyOperationService = SpringUtils.getBean(TbsBudgetApplyOperationServiceImpl.class);
String summeryResult = applyOperationService.checkAffairSummery(budgetId); String summeryResult = applyOperationService.checkAffairSummery(budgetId);
if(summeryResult.equals(TbsCostApplyOperationServiceImpl.SummeryState_Success)){ if(summeryResult.equals(TbsCostApplyOperationServiceImpl.SummeryState_Success)){
@ -188,7 +230,7 @@ public class AsyncFactory {
} }
TbsAffairCommitBo doParam = new TbsAffairCommitBo(); TbsAffairCommitBo doParam = new TbsAffairCommitBo();
doParam.setTargetId(budgetId); doParam.setTargetId(budgetId);
if (state==null||state==1){ if (state == 1){
applyOperationService.doFinished(doParam); applyOperationService.doFinished(doParam);
}else if (state==2){ }else if (state==2){
applyOperationService.doCommitBacked(budgetId); applyOperationService.doCommitBacked(budgetId);

107
src/main/java/com/qs/serve/common/util/JdbcUtil.java

@ -0,0 +1,107 @@
package com.qs.serve.common.util;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.StringUtils;
import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 原生JDBC工具类
* @Author JcYen
* @Date 2021/6/4
*/
@Slf4j
public class JdbcUtil {
private static final String[] FILTER_WORD = new String[]{"truncate","create","alter","eval","delete","sp_password"};
/**
* 执行SQL为安全拦截delete语句
* @param username
* @param password
* @param url
* @param driverName
* @param sql
* @return
*/
public static List<Map<String,Object>> query(String username, String password, String url, String driverName, String sql) {
//检查SQL,防止SQL执行DDL语句
doSqlFilter(sql);
List<Map<String,Object>> list = new ArrayList();
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName(driverName);
conn = DriverManager.getConnection(url, username, password);
stmt = conn.createStatement();
log.debug("JDBC工具类 Preparing SQL: {}",url);
rs = stmt.executeQuery(sql);
ResultSetMetaData md = rs.getMetaData();
int columnCount = md.getColumnCount();
while (rs.next()) {
Map<String,Object> rowData = new HashMap<>();
for (int i = 1; i <= columnCount; i++) {
rowData.put(md.getColumnName(i), rs.getObject(i));
}
list.add(rowData);
}
} catch (ClassNotFoundException e) {
log.warn(e.getMessage());
} catch (SQLException throwables) {
log.error(throwables.getMessage());
}finally {
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt!=null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
rs = null;
stmt = null;
conn = null;
}
return list;
}
private static void doSqlFilter(String sql){
boolean unsafe = false;
String[] parts = sql.split(" ");
for (String part : parts) {
if(unsafe){ break; }
if(StringUtils.isEmpty(part)){
continue;
}
part = part.trim();
for (String filterWord : FILTER_WORD) {
if(part.equalsIgnoreCase(filterWord)){
unsafe = true;
break;
}
}
}
if(unsafe){
//AssertUtil.("非法SQL被拦截 ==> "+sql);
}
}
}

72
src/main/java/com/qs/serve/modules/erp/controller/ErpCustomerController.java

@ -0,0 +1,72 @@
package com.qs.serve.modules.erp.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.util.PageUtil;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.service.BmsSupplierService;
import com.qs.serve.modules.erp.entity.dto.ErpCustomerAmountResult;
import com.qs.serve.modules.erp.service.ErpCustomerService;
import com.qs.serve.modules.goods.entity.GoodsBrand;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
/**
* ERP客户
* @author YenHex
* @since 2023/9/5
*/
@Slf4j
@AllArgsConstructor
@RestController
@RequestMapping("erp/customer")
public class ErpCustomerController {
private final ErpCustomerService erpCustomerService;
private final BmsSupplierService supplierService;
/**
* 获取客户帐余
* @param code
* @return
*/
@GetMapping("/getAmount/{code}")
public R<ErpCustomerAmountResult> getAmount(@PathVariable String code){
BmsSupplier supplier = supplierService.getByCode(code,null);
if(supplier!=null){
ErpCustomerAmountResult amountResult = erpCustomerService.getCustomerAmount(code);
if(amountResult==null){
//初始化帐余
erpCustomerService.initAmount(code);
return new R(201,"客户帐余初始中");
}
return R.ok(amountResult);
}
return R.error();
}
/**
* 初始化客户帐余
* @param code
* @return
*/
@GetMapping("/initAmount/{code}")
public R<?> initAmount(@PathVariable String code){
BmsSupplier supplier = supplierService.getByCode(code,null);
if(supplier!=null){
erpCustomerService.initAmount(code);
return R.ok();
}
return R.error();
}
}

19
src/main/java/com/qs/serve/modules/erp/entity/dto/ErpCustomerAmountResult.java

@ -0,0 +1,19 @@
package com.qs.serve.modules.erp.entity.dto;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author YenHex
* @since 2023/9/5
*/
@Data
public class ErpCustomerAmountResult {
/**
* 余额
*/
BigDecimal amount;
}

25
src/main/java/com/qs/serve/modules/erp/service/ErpCustomerService.java

@ -0,0 +1,25 @@
package com.qs.serve.modules.erp.service;
import com.qs.serve.modules.erp.entity.dto.ErpCustomerAmountResult;
import org.springframework.web.bind.annotation.PathVariable;
/**
* @author YenHex
* @since 2023/9/5
*/
public interface ErpCustomerService {
/**
* 获取客户帐余额
* @param supplierCode
* @return
*/
ErpCustomerAmountResult getCustomerAmount(String supplierCode);
/**
* 初始化
* @param code
*/
void initAmount( String code);
}

68
src/main/java/com/qs/serve/modules/erp/service/impl/ErpCustomerServiceImpl.java

@ -0,0 +1,68 @@
package com.qs.serve.modules.erp.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.crypto.Mode;
import cn.hutool.crypto.Padding;
import cn.hutool.crypto.symmetric.AES;
import com.qs.serve.common.framework.manager.AsyncFactory;
import com.qs.serve.common.framework.manager.AsyncManager;
import com.qs.serve.common.framework.redis.RedisService;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.common.util.JdbcUtil;
import com.qs.serve.modules.erp.entity.dto.ErpCustomerAmountResult;
import com.qs.serve.modules.erp.service.ErpCustomerService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
/**
* @author YenHex
* @since 2023/9/5
*/
@Slf4j
@Service
@AllArgsConstructor
public class ErpCustomerServiceImpl implements ErpCustomerService {
private final RedisService redisService;
@Override
public ErpCustomerAmountResult getCustomerAmount(String supplierCode) {
String userId = AuthContextUtils.getSysUserId();
String priceDataKey = "customer_price_data:"+userId;
//数据格式:supplierCode_&_amount 如 A235654_&_612.00
String data = redisService.getString(priceDataKey);
if(data != null){
String[] vals = data.split("_&_");
if(vals.length==2){
String code = vals[0];
String amountStr = vals[1];
if(code.equals(supplierCode)){
ErpCustomerAmountResult amountResult = new ErpCustomerAmountResult();
amountResult.setAmount(new BigDecimal(amountStr));
return amountResult;
}
}
}
this.initAmount(supplierCode);
return null;
}
@Override
public void initAmount(String code) {
String userId = AuthContextUtils.getSysUserId();
String lockKey = "customer_price_lock:"+userId+":"+code;
// lockState=1 锁
Integer lockState = redisService.getInteger(lockKey);
log.debug("customer_price_lock_value:"+lockState);
if(lockState==null||lockState==0){
//设置值到redis
AsyncManager.me().execute(AsyncFactory.initCustomerPrice(userId,code));
}
}
}

2
src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java

@ -131,7 +131,7 @@ public class GoodsSpuController {
@SysLog(module = SystemModule.GOODS, title = "spu", biz = BizType.QUERY) @SysLog(module = SystemModule.GOODS, title = "spu", biz = BizType.QUERY)
@PreAuthorize("hasRole('goods:spu:query')") @PreAuthorize("hasRole('goods:spu:query')")
public R<GoodsSpuVo> getById(@PathVariable("id") Long id){ public R<GoodsSpuVo> getById(@PathVariable("id") Long id){
GoodsSpuVo goodsSpu = goodsSpuService.getVoById(id); GoodsSpuVo goodsSpu = goodsSpuService.getVoById(id,null);
return R.ok(goodsSpu); return R.ok(goodsSpu);
} }

9
src/main/java/com/qs/serve/modules/goods/controller/api/GoodsSpuApi.java

@ -6,8 +6,10 @@ import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.common.util.PageUtil; import com.qs.serve.common.util.PageUtil;
import com.qs.serve.common.util.StringUtils; import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.goods.entity.GoodsSpu; import com.qs.serve.modules.goods.entity.GoodsSpu;
import com.qs.serve.modules.goods.entity.bo.GoodsSpuBatchTasteBo; import com.qs.serve.modules.goods.entity.bo.GoodsSpuBatchTasteBo;
import com.qs.serve.modules.goods.entity.vo.GoodsSpuVo; import com.qs.serve.modules.goods.entity.vo.GoodsSpuVo;
@ -68,13 +70,12 @@ public class GoodsSpuApi {
/** /**
* 获取详情 * 获取详情
* @param id spuId * @param id spuId
* @param supplierId 客户id
* @return * @return
*/ */
@GetMapping("/getById/{id}") @GetMapping("/getById/{id}")
public R<GoodsSpuVo> getById(@PathVariable("id") Long id,String supplierId){ public R<GoodsSpuVo> getById(@PathVariable("id") Long id){
GoodsSpuVo goodsSpu = goodsSpuService.getVoById(id); BmsSupplier supplier = AuthContextUtils.getCurrentSupplier();
//TODO 获取价格 GoodsSpuVo goodsSpu = goodsSpuService.getVoById(id, supplier.getCode());
return R.ok(goodsSpu); return R.ok(goodsSpu);
} }

5
src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java

@ -1,5 +1,6 @@
package com.qs.serve.modules.goods.entity; package com.qs.serve.modules.goods.entity;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.io.Serializable; import java.io.Serializable;
@ -113,6 +114,10 @@ public class GoodsSpu implements Serializable {
/** 商品销售类型:0-普通商品;1-赠品 */ /** 商品销售类型:0-普通商品;1-赠品 */
private Integer goodsSaleType; private Integer goodsSaleType;
/** 展示的价格 */
@TableField(exist = false)
private Double showPrice = 123D;
/** 选中的类目ID */ /** 选中的类目ID */
@TableField(exist = false) @TableField(exist = false)
private Long selectCategoryId; private Long selectCategoryId;

32
src/main/java/com/qs/serve/modules/goods/entity/dto/InventoryCusPrice.java

@ -0,0 +1,32 @@
package com.qs.serve.modules.goods.entity.dto;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* 客户存货商品价格
* @author YenHex
* @since 2021/10/28
*/
@Data
public class InventoryCusPrice {
private String cusCode;
private String invCode;
private BigDecimal price;
/**
* 开始时间
*/
private Date startDate;
/**
* 结束时间
*/
private Date endDate;
}

17
src/main/java/com/qs/serve/modules/goods/entity/so/InventoryCusPriceQuery.java

@ -0,0 +1,17 @@
package com.qs.serve.modules.goods.entity.so;
import lombok.Data;
import java.util.List;
/**
* @author YenHex
* @since 2023/9/6
*/
@Data
public class InventoryCusPriceQuery {
String cusCode;
List<String> invCodes;
}

9
src/main/java/com/qs/serve/modules/goods/service/GoodsSkuService.java

@ -25,6 +25,15 @@ public interface GoodsSkuService extends IService<GoodsSku> {
List<GoodsSku> selectSkuByCategoryIds(List<Long> categoryIds); List<GoodsSku> selectSkuByCategoryIds(List<Long> categoryIds);
/**
* 初始化客户特殊价
* @param supplierCode
* @param skus
*/
void initSkuCusPrice(String supplierCode,List<GoodsSku> skus);
void initSkuVoCusPrice(String supplierCode,List<GoodSkuVo> skus);
void editSku(GoodsSkuBo goodSkuVo); void editSku(GoodsSkuBo goodSkuVo);
} }

2
src/main/java/com/qs/serve/modules/goods/service/GoodsSpuService.java

@ -21,7 +21,7 @@ public interface GoodsSpuService extends IService<GoodsSpu> {
List<GoodsSpu> selectSpuList(GoodsSpu goodsSpu); List<GoodsSpu> selectSpuList(GoodsSpu goodsSpu);
GoodsSpuVo getVoById(Long id); GoodsSpuVo getVoById(Long id,String supplierCode);
GoodsSpu getByCode(String code); GoodsSpu getByCode(String code);

67
src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java

@ -2,19 +2,19 @@ package com.qs.serve.modules.goods.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.util.Assert; import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.util.AuthContextUtils; import com.qs.serve.common.util.*;
import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.modules.goods.common.GoodsConst; import com.qs.serve.modules.goods.common.GoodsConst;
import com.qs.serve.modules.goods.entity.GoodsSkuSpecValue; import com.qs.serve.modules.goods.entity.GoodsSkuSpecValue;
import com.qs.serve.modules.goods.entity.GoodsSpecValue; import com.qs.serve.modules.goods.entity.GoodsSpecValue;
import com.qs.serve.modules.goods.entity.GoodsSpu;
import com.qs.serve.modules.goods.entity.bo.GoodsSkuBo; import com.qs.serve.modules.goods.entity.bo.GoodsSkuBo;
import com.qs.serve.modules.goods.entity.dto.InventoryCusPrice;
import com.qs.serve.modules.goods.entity.so.InventoryCusPriceQuery;
import com.qs.serve.modules.goods.entity.vo.GoodSkuVo; import com.qs.serve.modules.goods.entity.vo.GoodSkuVo;
import com.qs.serve.modules.goods.entity.vo.GoodsSkuSpecValueVo; import com.qs.serve.modules.goods.entity.vo.GoodsSkuSpecValueVo;
import com.qs.serve.modules.goods.service.GoodsSkuSpecValueService; import com.qs.serve.modules.goods.service.GoodsSkuSpecValueService;
import com.qs.serve.modules.goods.service.GoodsSpecValueService; import com.qs.serve.modules.goods.service.GoodsSpecValueService;
import com.qs.serve.modules.seeyon.service.impl.SeeYonRequestBaseService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -28,6 +28,8 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.qs.serve.modules.tbs.common.TbsSeeYonConst.ERP_CUS_INV_PRICE;
/** /**
* sku 服务实现类 * sku 服务实现类
* @author YenHex * @author YenHex
@ -40,6 +42,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper,GoodsSku> im
private GoodsSkuSpecValueService goodsSkuSpecValueService; private GoodsSkuSpecValueService goodsSkuSpecValueService;
private GoodsSpecValueService goodsSpecValueService; private GoodsSpecValueService goodsSpecValueService;
private SeeYonRequestBaseService seeYonRequestBaseService;
@Override @Override
public GoodsSku getByCode(String code) { public GoodsSku getByCode(String code) {
@ -72,6 +75,60 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper,GoodsSku> im
return baseMapper.selectByCategoryIds(categoryIds, AuthContextUtils.getTenant()); return baseMapper.selectByCategoryIds(categoryIds, AuthContextUtils.getTenant());
} }
@Override
public void initSkuCusPrice(String supplierCode,List<GoodsSku> skus) {
if(CollectionUtil.isNotEmpty(skus)&& StringUtils.hasText(supplierCode)){
List<String> codes = skus.stream().map(GoodsSku::getSkuCode).distinct().collect(Collectors.toList());
InventoryCusPriceQuery query = new InventoryCusPriceQuery();
query.setCusCode(supplierCode);
query.setInvCodes(codes);
try {
R<String> res = seeYonRequestBaseService.postBase(ERP_CUS_INV_PRICE,query,"查询客户特殊价");
if(res.getStatus().equals(200)){
List<InventoryCusPrice> inventoryCusPrices = JsonUtil.jsonToList(res.getData(), InventoryCusPrice.class);
assert inventoryCusPrices != null;
for (InventoryCusPrice cusPrice : inventoryCusPrices) {
for (GoodsSku sku : skus) {
if(sku.getSkuCode().equals(cusPrice.getInvCode())){
sku.setSalesPrice(cusPrice.getPrice());
break;
}
}
}
}
} catch (Exception e) {
log.error("客户特殊价异常:{}",e.getMessage());
}
}
}
@Override
public void initSkuVoCusPrice(String supplierCode, List<GoodSkuVo> skus) {
if(CollectionUtil.isNotEmpty(skus)&& StringUtils.hasText(supplierCode)){
List<String> codes = skus.stream().map(GoodsSku::getSkuCode).distinct().collect(Collectors.toList());
InventoryCusPriceQuery query = new InventoryCusPriceQuery();
query.setCusCode(supplierCode);
query.setInvCodes(codes);
try {
R<String> res = seeYonRequestBaseService.postBase(ERP_CUS_INV_PRICE,query,"查询客户特殊价");
if(res.getStatus().equals(200)){
List<InventoryCusPrice> inventoryCusPrices = JsonUtil.jsonToList(res.getData(), InventoryCusPrice.class);
assert inventoryCusPrices != null;
for (InventoryCusPrice cusPrice : inventoryCusPrices) {
for (GoodsSku sku : skus) {
if(sku.getSkuCode().equals(cusPrice.getInvCode())){
sku.setSalesPrice(cusPrice.getPrice());
break;
}
}
}
}
} catch (Exception e) {
log.error("客户特殊价异常:{}",e.getMessage());
}
}
}
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void editSku(GoodsSkuBo goodSkuVo) { public void editSku(GoodsSkuBo goodSkuVo) {

5
src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java

@ -60,10 +60,13 @@ public class GoodsSpuServiceImpl extends ServiceImpl<GoodsSpuMapper,GoodsSpu> im
} }
@Override @Override
public GoodsSpuVo getVoById(Long id) { public GoodsSpuVo getVoById(Long id,String supplierCode) {
GoodsSpu goodsSpu = this.getById(id); GoodsSpu goodsSpu = this.getById(id);
GoodsSpuVo goodsSpuVo = CopierUtil.copy(goodsSpu,new GoodsSpuVo()); GoodsSpuVo goodsSpuVo = CopierUtil.copy(goodsSpu,new GoodsSpuVo());
List<GoodsSku> skuList = goodsSkuService.getBySpuId(id); List<GoodsSku> skuList = goodsSkuService.getBySpuId(id);
if(StringUtils.hasText(supplierCode)){
goodsSkuService.initSkuCusPrice(supplierCode,skuList);
}
goodsSpuVo.setSkuList(skuList); goodsSpuVo.setSkuList(skuList);
List<GoodsSkuSpecValueVo> skuSpecValueList = goodsSkuSpecValueService.listSpecValueBySpuId(id); List<GoodsSkuSpecValueVo> skuSpecValueList = goodsSkuSpecValueService.listSpecValueBySpuId(id);
goodsSpuVo.setSkuSpecValueList(skuSpecValueList); goodsSpuVo.setSkuSpecValueList(skuSpecValueList);

9
src/main/java/com/qs/serve/modules/oms/controller/api/OmsShoppingCartApi.java

@ -60,6 +60,7 @@ public class OmsShoppingCartApi {
} }
LambdaQueryWrapper<OmsShoppingCart> shoppingCartWrapper = new LambdaQueryWrapper<>(param); LambdaQueryWrapper<OmsShoppingCart> shoppingCartWrapper = new LambdaQueryWrapper<>(param);
shoppingCartWrapper.eq(OmsShoppingCart::getUserId,sysUserId); shoppingCartWrapper.eq(OmsShoppingCart::getUserId,sysUserId);
shoppingCartWrapper.eq(OmsShoppingCart::getSupplierId,supplier.getId());
PageUtil.startPage(); PageUtil.startPage();
List<OmsShoppingCart> shoppingCarts = omsShoppingCartService.list(shoppingCartWrapper); List<OmsShoppingCart> shoppingCarts = omsShoppingCartService.list(shoppingCartWrapper);
omsShoppingCartService.checkShoppingCarts(supplier,shoppingCarts,false); omsShoppingCartService.checkShoppingCarts(supplier,shoppingCarts,false);
@ -93,13 +94,16 @@ public class OmsShoppingCartApi {
OmsShoppingCart shoppingCart = CopierUtil.copy(param,new OmsShoppingCart()); OmsShoppingCart shoppingCart = CopierUtil.copy(param,new OmsShoppingCart());
shoppingCart.setUserId(AuthContextUtils.getSysUserId()); shoppingCart.setUserId(AuthContextUtils.getSysUserId());
GoodsSku goodsSku = goodsSkuService.getById(shoppingCart.getSkuId()); GoodsSku goodsSku = goodsSkuService.getById(shoppingCart.getSkuId());
GoodsSpu goodsSpu = goodsSpuService.getById(goodsSku.getSpuId());
if(!goodsSku.getEnable().equals(1)){ if(!goodsSku.getEnable().equals(1)){
return R.error("商品项["+goodsSku.getSpecInfos()+"]停用中"); return R.error("商品项["+goodsSku.getSpecInfos()+"]停用中");
} }
shoppingCart.setSpuCode(goodsSpu.getSpuCode());
shoppingCart.setSkuCode(goodsSku.getSkuCode());
shoppingCart.setPicUrl(goodsSku.getPicUrl()); shoppingCart.setPicUrl(goodsSku.getPicUrl());
shoppingCart.setSpuId(goodsSku.getSpuId()); shoppingCart.setSpuId(goodsSku.getSpuId());
shoppingCart.setAddPrice(goodsSku.getSalesPrice()); shoppingCart.setAddPrice(goodsSku.getSalesPrice());
GoodsSpu goodsSpu = goodsSpuService.getById(shoppingCart.getSpuId()); shoppingCart.setSupplierId(Long.parseLong(supplier.getId()));
if(!goodsSpu.getShelf().equals(1)){ if(!goodsSpu.getShelf().equals(1)){
return R.error("商品已下架"); return R.error("商品已下架");
} }
@ -129,6 +133,9 @@ public class OmsShoppingCartApi {
@DeleteMapping("/deleteById/{ids}") @DeleteMapping("/deleteById/{ids}")
public R<?> deleteById(@PathVariable("ids") String ids){ public R<?> deleteById(@PathVariable("ids") String ids){
List<Long> idsLong = StringUtils.splitIdLong(ids); List<Long> idsLong = StringUtils.splitIdLong(ids);
LambdaQueryWrapper<OmsShoppingCart> lqw = new LambdaQueryWrapper<>();
lqw.eq(OmsShoppingCart::getId,idsLong);
lqw.eq(OmsShoppingCart::getSupplierId,AuthContextUtils.getSupplierId());
omsShoppingCartService.removeBatchByIds(idsLong); omsShoppingCartService.removeBatchByIds(idsLong);
return R.ok(); return R.ok();
} }

4
src/main/java/com/qs/serve/modules/oms/entity/OmsShoppingCart.java

@ -41,11 +41,15 @@ public class OmsShoppingCart implements Serializable {
@Length(max = 32,message = "商品SPU长度不能超过32字") @Length(max = 32,message = "商品SPU长度不能超过32字")
private Long spuId; private Long spuId;
private String spuCode;
/** 商品SKU */ /** 商品SKU */
@NotBlank(message = "商品SKU不能为空") @NotBlank(message = "商品SKU不能为空")
@Length(max = 32,message = "商品SKU长度不能超过32字") @Length(max = 32,message = "商品SKU长度不能超过32字")
private Long skuId; private Long skuId;
private String skuCode;
/** 供应商ID */ /** 供应商ID */
private Long supplierId; private Long supplierId;

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

@ -2,6 +2,7 @@ package com.qs.serve.modules.oms.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.AuthContextUtils; import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.common.util.CollectionUtil; import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.common.util.StringUtils; import com.qs.serve.common.util.StringUtils;
@ -9,6 +10,7 @@ import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.entity.BmsSupplierAddress; import com.qs.serve.modules.bms.entity.BmsSupplierAddress;
import com.qs.serve.modules.bms.service.BmsSupplierAddressService; import com.qs.serve.modules.bms.service.BmsSupplierAddressService;
import com.qs.serve.modules.goods.entity.GoodsSku; import com.qs.serve.modules.goods.entity.GoodsSku;
import com.qs.serve.modules.goods.entity.GoodsSpu;
import com.qs.serve.modules.goods.entity.vo.GoodSkuVo; import com.qs.serve.modules.goods.entity.vo.GoodSkuVo;
import com.qs.serve.modules.goods.service.GoodsSkuService; import com.qs.serve.modules.goods.service.GoodsSkuService;
import com.qs.serve.modules.goods.service.GoodsSpuService; import com.qs.serve.modules.goods.service.GoodsSpuService;
@ -65,10 +67,13 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
}else { }else {
//立即购买,生成临时购物车 //立即购买,生成临时购物车
GoodsSku goodsSku = goodsSkuService.getById(confirmOrder.getSkuId()); GoodsSku goodsSku = goodsSkuService.getById(confirmOrder.getSkuId());
GoodsSpu goodsSpu = goodsSpuService.getById(goodsSku.getSpuId());
OmsShoppingCart shoppingCart = new OmsShoppingCart(); OmsShoppingCart shoppingCart = new OmsShoppingCart();
shoppingCart.setId(0L); shoppingCart.setId(0L);
shoppingCart.setSpuId(goodsSku.getSpuId()); shoppingCart.setSpuId(goodsSku.getSpuId());
shoppingCart.setSkuId(confirmOrder.getSkuId()); shoppingCart.setSkuId(confirmOrder.getSkuId());
shoppingCart.setSpuCode(goodsSpu.getSpuCode());
shoppingCart.setSkuCode(goodsSku.getSkuCode());
shoppingCart.setQuantity(confirmOrder.getQuantity()); shoppingCart.setQuantity(confirmOrder.getQuantity());
shoppingCart.setSpecInfo(goodsSku.getSpecInfos()); shoppingCart.setSpecInfo(goodsSku.getSpecInfos());
shoppingCart.setPicUrl(goodsSku.getPicUrl()); shoppingCart.setPicUrl(goodsSku.getPicUrl());
@ -79,7 +84,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
BigDecimal totalAmount = BigDecimal.ZERO; BigDecimal totalAmount = BigDecimal.ZERO;
for (OmsShoppingCart shoppingCart : shoppingCarts) { for (OmsShoppingCart shoppingCart : shoppingCarts) {
GoodSkuVo goodSkuVo = shoppingCart.getGoodSkuVo(); GoodSkuVo goodSkuVo = shoppingCart.getGoodSkuVo();
//todo 客户特殊价 //客户特殊价
BigDecimal salePrice = goodSkuVo.getSalesPrice(); BigDecimal salePrice = goodSkuVo.getSalesPrice();
shoppingCart.setSupplierSalesPrice(salePrice); shoppingCart.setSupplierSalesPrice(salePrice);
@ -108,6 +113,9 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
SysUser user = sysUserService.getById(AuthContextUtils.getSysUserId()); SysUser user = sysUserService.getById(AuthContextUtils.getSysUserId());
BmsSupplier supplier = confirmOrder.getSupplier(); BmsSupplier supplier = confirmOrder.getSupplier();
BmsSupplierAddress address = confirmOrder.getDefaultAddress(); BmsSupplierAddress address = confirmOrder.getDefaultAddress();
if(address==null){
Assert.throwEx("请补充收货地址");
}
List<OmsShoppingCart> shoppingCarts = confirmOrder.getShoppingCarts(); List<OmsShoppingCart> shoppingCarts = confirmOrder.getShoppingCarts();
OmsOrder order = new OmsOrder(); OmsOrder order = new OmsOrder();
order.setOrderSn(StringUtils.generateOrderNo()); order.setOrderSn(StringUtils.generateOrderNo());

3
src/main/java/com/qs/serve/modules/oms/service/impl/OmsShoppingCartServiceImpl.java

@ -76,7 +76,8 @@ public class OmsShoppingCartServiceImpl extends ServiceImpl<OmsShoppingCartMappe
} }
} }
goodsSkus = goodsSkus.stream().filter(vo->vo.getShelf().equals(1)&&vo.getEnable().equals(1)).collect(Collectors.toList()); goodsSkus = goodsSkus.stream().filter(vo->vo.getShelf().equals(1)&&vo.getEnable().equals(1)).collect(Collectors.toList());
//todo 检验库存 //设置客户特殊价
goodsSkuService.initSkuVoCusPrice(supplier.getSupplierCode(),goodsSkus);
//检验规格拦截 //检验规格拦截
List<GoodsSku> goodsSkuEntities = goodsSkus.stream().map(vo-> CopierUtil.copy(vo,new GoodsSku())).collect(Collectors.toList()); List<GoodsSku> goodsSkuEntities = goodsSkus.stream().map(vo-> CopierUtil.copy(vo,new GoodsSku())).collect(Collectors.toList());
List<Long> invalidSkuIds = bmsRuleMainService.checkErrSkuIds(supplier,goodsSkuEntities); List<Long> invalidSkuIds = bmsRuleMainService.checkErrSkuIds(supplier,goodsSkuEntities);

1
src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java

@ -118,6 +118,7 @@ public interface SeeYonOperationService extends SeeYonBaseService{
addNodeDTO.setUserCode(sysUser.getAccount()); addNodeDTO.setUserCode(sysUser.getAccount());
addNodeDTO.setUserSyId(sysUser.getSyUserId()); addNodeDTO.setUserSyId(sysUser.getSyUserId());
addNodeDTO.setTemplateCode(getTemplateCode()); addNodeDTO.setTemplateCode(getTemplateCode());
addNodeDTO.setComment(param.getComment());
R<String> result = getRequestService().addNode(addNodeDTO); R<String> result = getRequestService().addNode(addNodeDTO);
if(result.getData()!=null&&result.getData().toLowerCase(Locale.ROOT).contains("ok")){ if(result.getData()!=null&&result.getData().toLowerCase(Locale.ROOT).contains("ok")){
return R.ok(); return R.ok();

4
src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java

@ -78,6 +78,10 @@ public interface TbsSeeYonConst {
String OA_USER_INFO = "/process/getUserByCode"; String OA_USER_INFO = "/process/getUserByCode";
String OA_USER_LIST_1 = "/process/getUsersList"; String OA_USER_LIST_1 = "/process/getUsersList";
/** 客户账单余额 */
String ERP_CUS_AMOUNT = "/erp/customer/amount";
String ERP_CUS_INV_PRICE = "/erp/inventory/invPrices";
String XLT_SAVE_CHECK = "/xlt/saveCheck"; String XLT_SAVE_CHECK = "/xlt/saveCheck";
String XLT_SAVE_PAYMENT = "/xlt/savePayment"; String XLT_SAVE_PAYMENT = "/xlt/savePayment";
String XLT_SAVE_POLICY = "/xlt/savePolicyItem"; String XLT_SAVE_POLICY = "/xlt/savePolicyItem";

20
src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetChangeController.java

@ -8,18 +8,17 @@ import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.AuthContextUtils; import com.qs.serve.common.util.*;
import com.qs.serve.common.util.PageUtil;
import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.sys.service.SysAttachService; import com.qs.serve.modules.sys.service.SysAttachService;
import com.qs.serve.modules.tbs.common.TbsBudgetCheckState; import com.qs.serve.modules.tbs.common.TbsBudgetCheckState;
import com.qs.serve.modules.tbs.common.consts.ChangeTypeEnum; import com.qs.serve.modules.tbs.common.consts.ChangeTypeEnum;
import com.qs.serve.modules.tbs.common.dto.TbsBudgetChangeVo; import com.qs.serve.modules.tbs.common.dto.TbsBudgetChangeVo;
import com.qs.serve.modules.tbs.entity.*; import com.qs.serve.modules.tbs.entity.*;
import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo;
import com.qs.serve.modules.tbs.entity.so.TbsBudgetChangeSo; import com.qs.serve.modules.tbs.entity.so.TbsBudgetChangeSo;
import com.qs.serve.modules.tbs.service.*; import com.qs.serve.modules.tbs.service.*;
import com.qs.serve.modules.tbs.service.impl.TbsBudgetChangeOperationServiceImpl; import com.qs.serve.modules.tbs.service.impl.TbsBudgetChangeOperationServiceImpl;
import com.qs.serve.modules.tbs.service.impl.TbsCostApplyOperationServiceImpl;
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;
@ -50,6 +49,19 @@ public class TbsBudgetChangeController {
private TbsScheduleItemBudgetService tbsScheduleItemBudgetService; private TbsScheduleItemBudgetService tbsScheduleItemBudgetService;
private TbsBudgetConditionService tbsBudgetConditionService; private TbsBudgetConditionService tbsBudgetConditionService;
/**
* 测试
* @param param
* @return
*/
@PostMapping("/testChangeAmt")
public R<?> testChangeAmt(@RequestBody TbsAffairCommitBo param){
TbsBudgetChangeOperationServiceImpl impl = SpringUtils.getBean(TbsBudgetChangeOperationServiceImpl.class);
impl.doFinished(param);
return R.ok();
}
/** /**
* 预算审批整合翻页 * 预算审批整合翻页
* @param query * @param query

11
src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java

@ -75,17 +75,6 @@ public class TbsCostApplyController {
private TbsCostApplyOperationServiceImpl tbsCostApplyOperationServiceImpl; private TbsCostApplyOperationServiceImpl tbsCostApplyOperationServiceImpl;
private TbsBudgetMatchApplication tbsBudgetMatchApplication; private TbsBudgetMatchApplication tbsBudgetMatchApplication;
/**
* 测试
* @param param
* @return
*/
//@PostMapping("/testChangeAmt")
public R<?> testChangeAmt(@RequestBody TbsAffairCommitBo param){
TbsCostApplyOperationServiceImpl impl = SpringUtils.getBean(TbsCostApplyOperationServiceImpl.class);
impl.doFinished(param);
return R.ok();
}
/** /**
* 复制 * 复制

2
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetApplyOperationServiceImpl.java

@ -47,7 +47,7 @@ public class TbsBudgetApplyOperationServiceImpl implements SeeYonOperationServic
@Override @Override
public void doCommitBacked(String targetId) { public void doCommitBacked(String targetId) {
AsyncManager.me().execute(AsyncFactory.submitBudgetApply(targetId)); AsyncFactory.submitBudgetApply(targetId);
} }
@Override @Override

6
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchOperationServiceImpl.java

@ -62,6 +62,9 @@ public class TbsBudgetBatchOperationServiceImpl implements SeeYonOperationServic
@Override @Override
public Object doFinished(TbsAffairCommitBo param) { public Object doFinished(TbsAffairCommitBo param) {
TbsBudgetBatch budgetBatch = budgetBatchService.getById(param.getTargetId()); TbsBudgetBatch budgetBatch = budgetBatchService.getById(param.getTargetId());
if(!budgetBatch.getBatchState().equals(TbsBudgetCheckState.State_1_apply)){
return null;
}
List<TbsBudgetBatchItem> budgetBatchItemList = budgetBatchItemService.listByBatchId(budgetBatch.getId()); List<TbsBudgetBatchItem> budgetBatchItemList = budgetBatchItemService.listByBatchId(budgetBatch.getId());
for (TbsBudgetBatchItem batchItem : budgetBatchItemList) { for (TbsBudgetBatchItem batchItem : budgetBatchItemList) {
if(batchItem.getChangeId()==null){ if(batchItem.getChangeId()==null){
@ -83,6 +86,9 @@ public class TbsBudgetBatchOperationServiceImpl implements SeeYonOperationServic
@Override @Override
public Object doRefuse(TbsAffairCommitBo param) { public Object doRefuse(TbsAffairCommitBo param) {
TbsBudgetBatch budgetBatch = budgetBatchService.getById(param.getTargetId()); TbsBudgetBatch budgetBatch = budgetBatchService.getById(param.getTargetId());
if(!budgetBatch.getBatchState().equals(TbsBudgetCheckState.State_1_apply)){
return null;
}
List<TbsBudgetBatchItem> budgetBatchItemList = budgetBatchItemService.listByBatchId(budgetBatch.getId()); List<TbsBudgetBatchItem> budgetBatchItemList = budgetBatchItemService.listByBatchId(budgetBatch.getId());
for (TbsBudgetBatchItem batchItem : budgetBatchItemList) { for (TbsBudgetBatchItem batchItem : budgetBatchItemList) {
if(batchItem.getChangeId()==null){ if(batchItem.getChangeId()==null){

1
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchServiceImpl.java

@ -409,6 +409,7 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl<TbsBudgetBatchMapper,
if(ne1 || ne2){ if(ne1 || ne2){
TbsBudgetChangeScheduleItem resultItem = TbsBudgetChangeScheduleItem.toNewObject(itemBudget); TbsBudgetChangeScheduleItem resultItem = TbsBudgetChangeScheduleItem.toNewObject(itemBudget);
resultItem.setChangeId(changeId); resultItem.setChangeId(changeId);
resultItem.setBudgetAmount(realAmt);
resultItem.setNewBudgetAmount(budgetAmount.getBudgetAmount()); resultItem.setNewBudgetAmount(budgetAmount.getBudgetAmount());
resultItem.setNewPreDispatchAmount(budgetAmount.getPreDispatchAmount()); resultItem.setNewPreDispatchAmount(budgetAmount.getPreDispatchAmount());
changeScheduleItemList.add(resultItem); changeScheduleItemList.add(resultItem);

5
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java

@ -55,7 +55,7 @@ public class TbsBudgetChangeOperationServiceImpl implements SeeYonOperationServi
@Override @Override
public void doCommitBacked(String targetId) { public void doCommitBacked(String targetId) {
AsyncManager.me().execute(AsyncFactory.submitBudgetChange(targetId)); AsyncFactory.submitBudgetChange(targetId);
} }
@Override @Override
@ -92,6 +92,8 @@ public class TbsBudgetChangeOperationServiceImpl implements SeeYonOperationServi
if(budgetChange.getBudgetCheckState().equals(TbsBudgetCheckState.State_1_apply)){ if(budgetChange.getBudgetCheckState().equals(TbsBudgetCheckState.State_1_apply)){
budgetChange.setBudgetCheckState(TbsBudgetCheckState.State_2_finished); budgetChange.setBudgetCheckState(TbsBudgetCheckState.State_2_finished);
budgetChangeMapper.updateById(budgetChange); budgetChangeMapper.updateById(budgetChange);
}else {
return;
} }
TbsBudget tbsBudget = budgetMapper.selectById(budgetChange.getBudgetId()); TbsBudget tbsBudget = budgetMapper.selectById(budgetChange.getBudgetId());
if(budgetChange.getNewAttachIds()!=null&& budgetChange.getNewAttachIds().length>0){ if(budgetChange.getNewAttachIds()!=null&& budgetChange.getNewAttachIds().length>0){
@ -140,6 +142,7 @@ public class TbsBudgetChangeOperationServiceImpl implements SeeYonOperationServi
if(changeAmtIsNotNull && changeItem.getBudgetAmount().compareTo(changeItem.getNewBudgetAmount())!=0){ if(changeAmtIsNotNull && changeItem.getBudgetAmount().compareTo(changeItem.getNewBudgetAmount())!=0){
BudgetLogOptFlag optType; BudgetLogOptFlag optType;
BigDecimal amount = changeItem.getNewBudgetAmount().subtract(changeItem.getBudgetAmount()); BigDecimal amount = changeItem.getNewBudgetAmount().subtract(changeItem.getBudgetAmount());
log.debug("预算:{},项:{},原金额:{},新金额:{}",budget.getBudgetCode(),changeItem.getItemName(),changeItem.getBudgetAmount(),changeItem.getNewBudgetAmount());
if(amount.compareTo(BigDecimal.ZERO)>0){ if(amount.compareTo(BigDecimal.ZERO)>0){
optType = BudgetLogOptFlag.State_2; optType = BudgetLogOptFlag.State_2;
}else if(amount.compareTo(BigDecimal.ZERO)<0){ }else if(amount.compareTo(BigDecimal.ZERO)<0){

10
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java

@ -153,6 +153,16 @@ public class TbsBudgetChangeServiceImpl extends ServiceImpl<TbsBudgetChangeMappe
Assert.throwEx("不可添加品类条件"); Assert.throwEx("不可添加品类条件");
} }
} }
//防止多种情况申请修改而导致金额异常
Long countExist = this.count(
new LambdaQueryWrapper<TbsBudgetChange>()
.in(TbsBudgetChange::getBudgetId,budget.getId())
.eq(TbsBudgetChange::getBudgetCheckState,TbsBudgetCheckState.State_1_apply)
);
if(countExist>0){
Assert.throwEx("当前预算已存在修改审批");
}
if(param.getOrgChangeId()!=null){ if(param.getOrgChangeId()!=null){
TbsBudgetChange orgBudgetChange = this.getById(param.getOrgChangeId()); TbsBudgetChange orgBudgetChange = this.getById(param.getOrgChangeId());
if(orgBudgetChange.getBudgetCheckState().equals(TbsBudgetCheckState.State_3_setback)){ if(orgBudgetChange.getBudgetCheckState().equals(TbsBudgetCheckState.State_3_setback)){

2
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java

@ -329,7 +329,7 @@ public class TbsBudgetServiceImpl extends ServiceImpl<TbsBudgetMapper,TbsBudget>
budget.setBudgetState(1); budget.setBudgetState(1);
budget.setBudgetCheckState(TbsBudgetCheckState.State_2_finished); budget.setBudgetCheckState(TbsBudgetCheckState.State_2_finished);
this.updateById(budget); this.updateById(budget);
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId()); SysUser sysUser = sysUserService.getById(budget.getUserId());
LambdaQueryWrapper<TbsScheduleItemBudget> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<TbsScheduleItemBudget> lqw = new LambdaQueryWrapper<>();
lqw.eq(TbsScheduleItemBudget::getBudgetId,id); lqw.eq(TbsScheduleItemBudget::getBudgetId,id);
List<TbsScheduleItemBudget> scheduleItemBudgets = scheduleItemBudgetService.list(lqw); List<TbsScheduleItemBudget> scheduleItemBudgets = scheduleItemBudgetService.list(lqw);

5
src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationDataController.java

@ -2,6 +2,7 @@ package com.qs.serve.modules.vtb.controller;
import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.util.PageUtil;
import com.qs.serve.modules.vtb.entity.dto.VtbActivityCheckDTO; import com.qs.serve.modules.vtb.entity.dto.VtbActivityCheckDTO;
import com.qs.serve.modules.vtb.entity.dto.VtbVerificationDTO; import com.qs.serve.modules.vtb.entity.dto.VtbVerificationDTO;
import com.qs.serve.modules.vtb.entity.so.VtbActivityCheckSo; import com.qs.serve.modules.vtb.entity.so.VtbActivityCheckSo;
@ -37,6 +38,7 @@ public class VtbVerificationDataController {
public R<PageVo<VtbActivityCheckDTO>> getActivityData(VtbActivityCheckSo query){ public R<PageVo<VtbActivityCheckDTO>> getActivityData(VtbActivityCheckSo query){
Long count = verReportMapper.countActivityCheck(query); Long count = verReportMapper.countActivityCheck(query);
if(count>0){ if(count>0){
query.setStartRow(PageUtil.getStartRow());
List<VtbActivityCheckDTO> list = verReportMapper.pageActivityCheck(query); List<VtbActivityCheckDTO> list = verReportMapper.pageActivityCheck(query);
PageVo<VtbActivityCheckDTO> page = new PageVo<>(); PageVo<VtbActivityCheckDTO> page = new PageVo<>();
page.initPageByTotal(count); page.initPageByTotal(count);
@ -52,9 +54,10 @@ public class VtbVerificationDataController {
* @return * @return
*/ */
@GetMapping("pageVerificationCheck") @GetMapping("pageVerificationCheck")
public R<?> getVerificationData(VtbVerificationCheckSo query){ public R<PageVo<VtbVerificationDTO>> getVerificationData(VtbVerificationCheckSo query){
Long count = verReportMapper.countVerificationCheck(query); Long count = verReportMapper.countVerificationCheck(query);
if(count>0){ if(count>0){
query.setStartRow(PageUtil.getStartRow());
List<VtbVerificationDTO> list = verReportMapper.pageVerificationCheck(query); List<VtbVerificationDTO> list = verReportMapper.pageVerificationCheck(query);
PageVo<VtbVerificationDTO> page = new PageVo<>(); PageVo<VtbVerificationDTO> page = new PageVo<>();
page.initPageByTotal(count); page.initPageByTotal(count);

6
src/main/java/com/qs/serve/modules/vtb/entity/so/VtbActivityCheckSo.java

@ -39,17 +39,17 @@ public class VtbActivityCheckSo {
/** 提交结束时间 */ /** 提交结束时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime queryEndSubmitTime; private String queryEndSubmitTime;
/** 核销开始时间 */ /** 核销开始时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime queryStartCheckTime; private String queryStartCheckTime;
/** 核销开始时间 */ /** 核销开始时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime queryEndCheckTime; private String queryEndCheckTime;
private Integer pageSize; private Integer pageSize;

5
src/main/java/com/qs/serve/modules/vtb/entity/so/VtbVerificationCheckSo.java

@ -27,6 +27,7 @@ public class VtbVerificationCheckSo {
/** 活动内容 */ /** 活动内容 */
private String actTitle; private String actTitle;
/** 开始核销时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime startCheckTime; private LocalDateTime startCheckTime;
@ -35,6 +36,7 @@ public class VtbVerificationCheckSo {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime endCheckTime; private LocalDateTime endCheckTime;
/** 开始支付时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime startPayTime; private LocalDateTime startPayTime;
@ -43,4 +45,7 @@ public class VtbVerificationCheckSo {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime endPayTime; private LocalDateTime endPayTime;
private Integer pageSize;
private Integer startRow;
} }

2
src/main/resources/mapper/his/HisUserSupplierMapper.xml

@ -46,7 +46,7 @@
<if test="query.bizRegionFourthly != null and query.bizRegionFourthly != ''"> and `his_user_supplier`.`biz_region_fourthly` = #{query.bizRegionFourthly}</if> <if test="query.bizRegionFourthly != null and query.bizRegionFourthly != ''"> and `his_user_supplier`.`biz_region_fourthly` = #{query.bizRegionFourthly}</if>
<if test="query.tenantId != null and query.tenantId != ''"> and `his_user_supplier`.`tenant_id` = #{query.tenantId}</if> <if test="query.tenantId != null and query.tenantId != ''"> and `his_user_supplier`.`tenant_id` = #{query.tenantId}</if>
<if test="query.stopFlag != null"> and `his_user_supplier`.`stop_flag` = #{query.stopFlag}</if> <if test="query.stopFlag != null"> and `his_user_supplier`.`stop_flag` = #{query.stopFlag}</if>
<if test="query.cooperatePauseFlag != null"> and `his_user_supplier`.`cooperate_puse_flag` = #{query.cooperatePauseFlag}</if> <if test="query.cooperatePauseFlag != null"> and `his_user_supplier`.`cooperate_pause_flag` = #{query.cooperatePauseFlag}</if>
<if test="query.queryAddress != null and query.queryAddress != ''"> and `bms_supplier_visit_address`.`address_detail` like concat('%',#{query.queryAddress},'%') </if> <if test="query.queryAddress != null and query.queryAddress != ''"> and `bms_supplier_visit_address`.`address_detail` like concat('%',#{query.queryAddress},'%') </if>
<if test="query.queryValue != null and query.queryValue != ''"> <if test="query.queryValue != null and query.queryValue != ''">
and (`bms_supplier_visit_address`.`address_detail` like concat('%',#{query.queryValue},'%') and (`bms_supplier_visit_address`.`address_detail` like concat('%',#{query.queryValue},'%')

22
src/main/resources/mapper/vtb/VtbVerReportMapper.xml

@ -20,6 +20,10 @@
<if test="query.costTitle != null and query.costTitle != ''"> and `tbs_cost_apply`.`charge_theme` like concat('%',#{query.costTitle},'%') </if> <if test="query.costTitle != null and query.costTitle != ''"> and `tbs_cost_apply`.`charge_theme` like concat('%',#{query.costTitle},'%') </if>
</sql> </sql>
<resultMap id="vtbActivityCheckDTOMap" type="com.qs.serve.modules.vtb.entity.dto.VtbActivityCheckDTO">
</resultMap>
<select id="pageActivityCheck" resultType="com.qs.serve.modules.vtb.entity.dto.VtbActivityCheckDTO"> <select id="pageActivityCheck" resultType="com.qs.serve.modules.vtb.entity.dto.VtbActivityCheckDTO">
select select
tbs_cost_apply.`id` as costApplyId, tbs_cost_apply.`id` as costApplyId,
@ -79,8 +83,22 @@
<include refid="baseSelectCheckWhere"></include> <include refid="baseSelectCheckWhere"></include>
</select> </select>
<resultMap id="verificationCheckMap" type="com.qs.serve.modules.vtb.entity.dto.VtbVerificationDTO">
<result property="verificationCode" column="verification_code"/>
<result property="supplierCode" column="supplier_code"/>
<result property="supplierName" column="supplier_name"/>
<result property="wayTitle" column="way_title"/>
<result property="amount" column="amount"/>
<result property="payAmt" column="pay_amt"/>
<result property="notPayAmt" column="not_pay_amt"/>
<result property="costApplyCode" column="code"/>
<result property="chargeTheme" column="charge_theme"/>
<result property="submitTime" column="submit_time"/>
<result property="activityCode" column="activity_code"/>
<result property="actTitle" column="act_title"/>
</resultMap>
<select id="pageVerificationCheck" resultType="com.qs.serve.modules.vtb.entity.dto.VtbVerificationDTO"> <select id="pageVerificationCheck" resultType="com.qs.serve.modules.vtb.entity.dto.VtbVerificationDTO" resultMap="verificationCheckMap">
select select
vtb.verification_code , vtb.verification_code ,
vtb.supplier_code , vtb.supplier_code ,
@ -123,6 +141,7 @@
left join tbs_activity act on act.id = vtb.activity_id left join tbs_activity act on act.id = vtb.activity_id
where where
vtb.del_flag = 0 vtb.del_flag = 0
and vtb.verification_state = 1
and act.del_flag = 0 and act.del_flag = 0
and act.cancel_flag = 0 and act.cancel_flag = 0
and cost.del_flag = 0 and cost.del_flag = 0
@ -136,6 +155,7 @@
<if test="query.chargeTheme != null and query.chargeTheme != ''"> and `cost`.`charge_theme` like concat('%',#{query.chargeTheme},'%')</if> <if test="query.chargeTheme != null and query.chargeTheme != ''"> and `cost`.`charge_theme` like concat('%',#{query.chargeTheme},'%')</if>
<if test="query.startCheckTime != null and query.startCheckTime != ''"> and `vtb`.`finished_time` &gt;= #{query.startCheckTime}</if> <if test="query.startCheckTime != null and query.startCheckTime != ''"> and `vtb`.`finished_time` &gt;= #{query.startCheckTime}</if>
<if test="query.startCheckTime != null and query.startCheckTime != ''"> and `vtb`.`finished_time` &lt;= #{query.endCheckTime}</if> <if test="query.startCheckTime != null and query.startCheckTime != ''"> and `vtb`.`finished_time` &lt;= #{query.endCheckTime}</if>
limit #{query.startRow},#{query.pageSize}
</select> </select>
<select id="countVerificationCheck" resultType="java.lang.Long"> <select id="countVerificationCheck" resultType="java.lang.Long">

Loading…
Cancel
Save