|
|
@@ -1,4 +1,5 @@
|
|
|
package com.sckw.contract.service;
|
|
|
+
|
|
|
import java.io.IOException;
|
|
|
import java.util.Date;
|
|
|
|
|
|
@@ -20,10 +21,7 @@ import com.sckw.core.model.enums.ContractStatusEnum;
|
|
|
import com.sckw.core.model.enums.EntTypeEnum;
|
|
|
import com.sckw.core.model.page.PageHelperUtil;
|
|
|
import com.sckw.core.model.page.PageResult;
|
|
|
-import com.sckw.core.utils.BeanUtils;
|
|
|
-import com.sckw.core.utils.CollectionUtils;
|
|
|
-import com.sckw.core.utils.IdWorker;
|
|
|
-import com.sckw.core.utils.StringUtils;
|
|
|
+import com.sckw.core.utils.*;
|
|
|
import com.sckw.core.web.constant.HttpStatus;
|
|
|
import com.sckw.core.web.context.LoginUserHolder;
|
|
|
import com.sckw.excel.utils.EasyExcelUtil;
|
|
|
@@ -37,6 +35,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import com.sckw.system.api.RemoteSystemService;
|
|
|
+
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
@@ -44,10 +43,10 @@ import java.util.stream.Collectors;
|
|
|
import com.sckw.contract.dao.KwcContractTradeMapper;
|
|
|
|
|
|
/**
|
|
|
-* @author PC
|
|
|
-* @description 针对表【kwc_contract_trade(交易合同(采购合同/销售合同))】的数据库操作Service实现
|
|
|
-* @createDate 2023-07-13 13:36:19
|
|
|
-*/
|
|
|
+ * @author PC
|
|
|
+ * @description 针对表【kwc_contract_trade(交易合同(采购合同/销售合同))】的数据库操作Service实现
|
|
|
+ * @createDate 2023-07-13 13:36:19
|
|
|
+ */
|
|
|
@Service
|
|
|
@Slf4j
|
|
|
public class KwcContractTradeService {
|
|
|
@@ -72,11 +71,11 @@ public class KwcContractTradeService {
|
|
|
private GoodsInfoService goodsInfoService;
|
|
|
|
|
|
/**
|
|
|
+ * @return PageResult
|
|
|
* @desc: 分页查询
|
|
|
- * @param: reqVo
|
|
|
+ * @param: reqVo
|
|
|
* @author: sky
|
|
|
* @date 2023/7/17
|
|
|
- * @return PageResult
|
|
|
*/
|
|
|
public PageResult queryListByPage(QueryListReqVo reqVo) {
|
|
|
PageHelper.startPage(reqVo.getPage(), reqVo.getPageSize());
|
|
|
@@ -121,8 +120,8 @@ public class KwcContractTradeService {
|
|
|
}
|
|
|
queryListResVo.setTradingName(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(), String.valueOf(queryListResDto.getTrading())));
|
|
|
queryListResVo.setStatusName(ContractStatusEnum.getName(queryListResDto.getStatus()).getName());
|
|
|
-
|
|
|
- // todo
|
|
|
+ queryListResVo.setSigningWayName(DictEnum.getLabel(DictTypeEnum.SIGNING_TYPE.getType(), String.valueOf(queryListResDto.getSigningWay())));
|
|
|
+ queryListResVo.setAmount(queryListResDto.getAmount());
|
|
|
queryListResVo.setPerformedAmount(new BigDecimal("0"));
|
|
|
list.add(queryListResVo);
|
|
|
}
|
|
|
@@ -131,11 +130,17 @@ public class KwcContractTradeService {
|
|
|
|
|
|
@Transactional(rollbackFor = {})
|
|
|
public Long addTradeContract(ContractTradeReqVo reqVo) {
|
|
|
+ Long id = reqVo.getId();
|
|
|
+ //不为空时是修改
|
|
|
+ if (Objects.nonNull(id)) {
|
|
|
+ update(reqVo);
|
|
|
+ return id;
|
|
|
+ }
|
|
|
+
|
|
|
TradeBaseInfoReqVo baseInfo = reqVo.getBaseInfo();
|
|
|
List<TradeGoodsInfoReqVo> goodsInfoList = reqVo.getGoodsInfo();
|
|
|
- checkParams(reqVo,baseInfo);
|
|
|
//创建合同
|
|
|
- KwcContractTrade kwcContractTrade = getKwcContractTrade(baseInfo, reqVo.getRemark(), reqVo.getPId());
|
|
|
+ KwcContractTrade kwcContractTrade = getKwcContractTrade(baseInfo, reqVo.getGoodsInfo(), reqVo.getRemark(), reqVo.getPId());
|
|
|
long contactId = new IdWorker(1L).nextId();
|
|
|
kwcContractTrade.setId(contactId);
|
|
|
kwcContractTrade.setStatus(ContractStatusEnum.SAVE.getCode());
|
|
|
@@ -159,7 +164,7 @@ public class KwcContractTradeService {
|
|
|
* @author: czh
|
|
|
* @date: 2023/7/20
|
|
|
*/
|
|
|
- public KwcContractTrade getKwcContractTrade(TradeBaseInfoReqVo baseInfo, String remark, Long pid) {
|
|
|
+ public KwcContractTrade getKwcContractTrade(TradeBaseInfoReqVo baseInfo, List<TradeGoodsInfoReqVo> goodsInfo, String remark, Long pid) {
|
|
|
Date date = new Date();
|
|
|
KwcContractTrade kwcContractTrade = new KwcContractTrade();
|
|
|
kwcContractTrade.setEntId(LoginUserHolder.getEntId());
|
|
|
@@ -177,6 +182,16 @@ public class KwcContractTradeService {
|
|
|
kwcContractTrade.setUpdateBy(LoginUserHolder.getUserId());
|
|
|
kwcContractTrade.setUpdateTime(date);
|
|
|
kwcContractTrade.setDelFlag(Global.NO);
|
|
|
+
|
|
|
+ BigDecimal amountTotal = new BigDecimal(Global.NUMERICAL_ZERO);
|
|
|
+ if (CollectionUtils.isNotEmpty(goodsInfo)) {
|
|
|
+ for (TradeGoodsInfoReqVo tradeGoodsInfoReqVo : goodsInfo) {
|
|
|
+ if (Objects.nonNull(tradeGoodsInfoReqVo.getAmount())) {
|
|
|
+ amountTotal = amountTotal.add(tradeGoodsInfoReqVo.getAmount());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ kwcContractTrade.setAmount(amountTotal);
|
|
|
return kwcContractTrade;
|
|
|
}
|
|
|
|
|
|
@@ -188,8 +203,8 @@ public class KwcContractTradeService {
|
|
|
*/
|
|
|
public void supplement(ContractTradeReqVo reqVo) {
|
|
|
Long id = reqVo.getPId();
|
|
|
- KwcContractTrade KwcContractTrade = kwcContractTradeMapper.selectById(id);
|
|
|
- if (Objects.isNull(KwcContractTrade)) {
|
|
|
+ KwcContractTrade kwcContractTrade = kwcContractTradeMapper.selectById(id);
|
|
|
+ if (Objects.isNull(kwcContractTrade)) {
|
|
|
throw new SystemException(HttpStatus.QUERY_FAIL_CODE, HttpStatus.CONTRACT_NOT_EXISTS);
|
|
|
}
|
|
|
|
|
|
@@ -198,11 +213,11 @@ public class KwcContractTradeService {
|
|
|
|
|
|
|
|
|
/**
|
|
|
+ * @param id 合同id
|
|
|
+ * @return ContractTradeDetailResVo
|
|
|
* @desc: 合同详情
|
|
|
- * @param id 合同id
|
|
|
* @author: czh
|
|
|
* @date 2023/7/16
|
|
|
- * @return ContractTradeDetailResVo
|
|
|
*/
|
|
|
public ContractTradeDetailResVo detail(Long id) {
|
|
|
//基础信息
|
|
|
@@ -227,10 +242,12 @@ public class KwcContractTradeService {
|
|
|
TradeBaseInfoResVo tradeBaseInfoResVo = new TradeBaseInfoResVo();
|
|
|
tradeBaseInfoResVo.setContractCode(kwcContractTrade.getContractNo());
|
|
|
tradeBaseInfoResVo.setContractName(kwcContractTrade.getName());
|
|
|
- tradeBaseInfoResVo.setEndTime(kwcContractTrade.getEndTime());
|
|
|
+ tradeBaseInfoResVo.setEndTime(Objects.isNull(kwcContractTrade.getEndTime()) ? Global.EMPTY_STRING : DateUtils.format(kwcContractTrade.getEndTime()));
|
|
|
tradeBaseInfoResVo.setSigningWayName(DictEnum.getLabel(DictTypeEnum.SIGNING_WAY.getType(), String.valueOf(kwcContractTrade.getSigningWay())));
|
|
|
+ tradeBaseInfoResVo.setSigningWay(String.valueOf(kwcContractTrade.getSigningWay()));
|
|
|
tradeBaseInfoResVo.setStartTime(kwcContractTrade.getStartTime());
|
|
|
tradeBaseInfoResVo.setTradingName(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(), String.valueOf(kwcContractTrade.getTrading())));
|
|
|
+ tradeBaseInfoResVo.setTrading(String.valueOf(kwcContractTrade.getTrading()));
|
|
|
|
|
|
ContractTradeDetailResVo contractTradeDetailResVo = new ContractTradeDetailResVo();
|
|
|
List<KwcContractTradeUnit> kwcContractTradeUnits = kwcContractTradeUnitService.queryByContractId(id);
|
|
|
@@ -277,7 +294,7 @@ public class KwcContractTradeService {
|
|
|
}
|
|
|
|
|
|
SysDictResDto sysDictResDto = stringSysDictResDtoMap.get(DictTypeEnum.UNIT_TYPE.getType() + Global.POUND + kwcContractTradeGoods.getUnit());
|
|
|
- if(Objects.nonNull(sysDictResDto)) {
|
|
|
+ if (Objects.nonNull(sysDictResDto)) {
|
|
|
tradeGoodsInfoResVo.setUnitName(sysDictResDto.getLabel());
|
|
|
}
|
|
|
|
|
|
@@ -313,8 +330,8 @@ public class KwcContractTradeService {
|
|
|
|
|
|
|
|
|
/**
|
|
|
- * @desc: 发起签约
|
|
|
* @param reqVo id
|
|
|
+ * @desc: 发起签约
|
|
|
* @author: czh
|
|
|
* @date 2023/7/16
|
|
|
*/
|
|
|
@@ -322,7 +339,7 @@ public class KwcContractTradeService {
|
|
|
Long id = reqVo.getId();
|
|
|
if (Objects.isNull(id)) {
|
|
|
//创建合同
|
|
|
- KwcContractTrade kwcContractLogistics = getKwcContractTrade(reqVo.getBaseInfo(), reqVo.getRemark(), reqVo.getPId());
|
|
|
+ KwcContractTrade kwcContractLogistics = getKwcContractTrade(reqVo.getBaseInfo(), reqVo.getGoodsInfo(), reqVo.getRemark(), reqVo.getPId());
|
|
|
id = new IdWorker(1L).nextId();
|
|
|
kwcContractLogistics.setId(id);
|
|
|
kwcContractLogistics.setStatus(ContractStatusEnum.SUBMIT.getCode());
|
|
|
@@ -351,17 +368,17 @@ public class KwcContractTradeService {
|
|
|
@Transactional(rollbackFor = {})
|
|
|
public void update(ContractTradeReqVo reqVo) {
|
|
|
Long contractId = reqVo.getId();
|
|
|
+ Date date = new Date();
|
|
|
KwcContractTrade kwcContractTrade = kwcContractTradeMapper.selectById(contractId);
|
|
|
if (Objects.isNull(kwcContractTrade)) {
|
|
|
throw new SystemException(HttpStatus.QUERY_FAIL_CODE, HttpStatus.CONTRACT_NOT_EXISTS);
|
|
|
}
|
|
|
- checkParams(reqVo,reqVo.getBaseInfo());
|
|
|
- KwcContractTrade param = getKwcContractTrade(reqVo.getBaseInfo(), reqVo.getRemark(), reqVo.getPId());
|
|
|
+ KwcContractTrade param = getKwcContractTrade(reqVo.getBaseInfo(), reqVo.getGoodsInfo(), reqVo.getRemark(), reqVo.getPId());
|
|
|
param.setId(contractId);
|
|
|
param.setSigningUrl(reqVo.getContractFile());
|
|
|
param.setStatus(ContractStatusEnum.SAVE.getCode());
|
|
|
param.setUpdateBy(LoginUserHolder.getUserId());
|
|
|
- param.setUpdateTime(new Date());
|
|
|
+ param.setUpdateTime(date);
|
|
|
if (kwcContractTradeMapper.updateById(param) <= 0) {
|
|
|
throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
|
|
|
}
|
|
|
@@ -370,7 +387,6 @@ public class KwcContractTradeService {
|
|
|
//保存交易合同商品信息-先把以前的删除
|
|
|
List<KwcContractTradeGoods> kwcContractTradeGoodsList = kwcContractTradeGoodsService.queryGoodsInfoByContractId(contractId);
|
|
|
if (CollectionUtils.isNotEmpty(kwcContractTradeGoodsList)) {
|
|
|
- Date date = new Date();
|
|
|
kwcContractTradeGoodsList.forEach(item -> {
|
|
|
item.setDelFlag(Global.YES);
|
|
|
item.setUpdateBy(LoginUserHolder.getUserId());
|
|
|
@@ -382,6 +398,21 @@ public class KwcContractTradeService {
|
|
|
}
|
|
|
}
|
|
|
kwcContractTradeGoodsService.saveContractTradeGoods(kwcContractTrade.getId(), reqVo.getGoodsInfo());
|
|
|
+
|
|
|
+ //保存单位信息-先把以前的删除
|
|
|
+ List<KwcContractTradeUnit> kwcContractTradeUnits = kwcContractTradeUnitService.queryByContractId(contractId);
|
|
|
+ if (CollectionUtils.isNotEmpty(kwcContractTradeUnits)) {
|
|
|
+ kwcContractTradeUnits.forEach(item -> {
|
|
|
+ item.setDelFlag(Global.YES);
|
|
|
+ item.setUpdateBy(LoginUserHolder.getUserId());
|
|
|
+ item.setUpdateTime(date);
|
|
|
+ });
|
|
|
+
|
|
|
+ if (kwcContractTradeUnitService.updateBatch(kwcContractTradeUnits) != kwcContractTradeUnits.size()) {
|
|
|
+ throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ kwcContractTradeUnitService.saveContractTradeUnit(contractId, reqVo.getBaseInfo());
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -392,18 +423,19 @@ public class KwcContractTradeService {
|
|
|
* @date 2023/7/16
|
|
|
*/
|
|
|
@Transactional(rollbackFor = {})
|
|
|
- public void complete(String ids) {
|
|
|
- List<Long> contractIdList = Arrays.stream(ids.split(Global.COMMA)).map(Long::parseLong).toList();
|
|
|
- List<KwcContractTrade> kwcContractTradeList = kwcContractTradeMapper.selectBatchIds(contractIdList);
|
|
|
- Date date = new Date();
|
|
|
- kwcContractTradeList.forEach(item -> {
|
|
|
- item.setStatus(ContractStatusEnum.COMPLETE.getCode());
|
|
|
- item.setUpdateBy(LoginUserHolder.getUserId());
|
|
|
- item.setUpdateTime(date);
|
|
|
- if (kwcContractTradeMapper.updateById(item) <= 0) {
|
|
|
- throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
|
|
|
- }
|
|
|
- });
|
|
|
+ public void complete(CompleteReqVo reqVo) {
|
|
|
+ KwcContractTrade kwcContractTrade = kwcContractTradeMapper.selectById(reqVo.getId());
|
|
|
+ if (!kwcContractTrade.getStatus().equals(ContractStatusEnum.SIGNED.getCode())) {
|
|
|
+ throw new SystemException(HttpStatus.CODE_10301, HttpStatus.MSG_028);
|
|
|
+ }
|
|
|
+ kwcContractTrade.setStatus(ContractStatusEnum.COMPLETE.getCode());
|
|
|
+ kwcContractTrade.setUpdateBy(LoginUserHolder.getUserId());
|
|
|
+ kwcContractTrade.setUpdateTime(new Date());
|
|
|
+ kwcContractTrade.setPerformedAmount(reqVo.getPerformedAmount());
|
|
|
+ kwcContractTrade.setRemark(reqVo.getRemark());
|
|
|
+ if (kwcContractTradeMapper.updateById(kwcContractTrade) <= 0) {
|
|
|
+ throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -432,8 +464,8 @@ public class KwcContractTradeService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * @desc: 导出
|
|
|
* @param reqVo 查询入参
|
|
|
+ * @desc: 导出
|
|
|
* @author: czh
|
|
|
* @date 2023/7/17
|
|
|
*/
|
|
|
@@ -515,14 +547,6 @@ public class KwcContractTradeService {
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
- private void checkParams(ContractTradeReqVo param,TradeBaseInfoReqVo baseInfo) {
|
|
|
- if (Objects.isNull(baseInfo.getContractCode()) && baseInfo.getContractCode().length() > 20) {
|
|
|
- throw new BusinessException("合同编号不能为空且最长20字符!");
|
|
|
- }
|
|
|
- if (Objects.isNull(baseInfo.getContractName()) && baseInfo.getContractName().length() > 20) {
|
|
|
- throw new BusinessException("合同名称不能为空且最长20字符!");
|
|
|
- }
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
|