|
|
@@ -1,44 +1,41 @@
|
|
|
package com.sckw.contract.service;
|
|
|
+import java.io.IOException;
|
|
|
+import java.util.Date;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.github.pagehelper.PageHelper;
|
|
|
import com.github.pagehelper.PageInfo;
|
|
|
-import com.sckw.contract.model.entity.KwcContractLogisticsGoods;
|
|
|
-import com.sckw.contract.model.entity.KwcContractLogisticsUnit;
|
|
|
-import com.sckw.contract.model.entity.KwcContractTrade;
|
|
|
-import com.sckw.contract.model.entity.KwcContractLogistics;
|
|
|
-import com.sckw.contract.model.vo.req.ContractLogisticsReqVo;
|
|
|
-import com.sckw.contract.model.vo.req.LogisticsBaseInfoReqVo;
|
|
|
-
|
|
|
-import com.sckw.contract.model.vo.req.LogisticsGoodsInfoReqVo;
|
|
|
-import com.sckw.contract.model.vo.req.QueryListReqVo;
|
|
|
-import com.sckw.contract.model.vo.res.ContractLogisticsDetailResVo;
|
|
|
-import com.sckw.contract.model.vo.res.LogisticsBaseInfoResVo;
|
|
|
-import com.sckw.contract.model.vo.res.LogisticsGoodsInfoResVo;
|
|
|
-import com.sckw.contract.model.vo.res.QueryListResVo;
|
|
|
+import com.sckw.contract.model.dto.req.QueryListReqDto;
|
|
|
+import com.sckw.contract.model.dto.res.QueryListResDto;
|
|
|
+import com.sckw.contract.model.entity.*;
|
|
|
+import com.sckw.contract.model.vo.req.*;
|
|
|
+
|
|
|
+import com.sckw.contract.model.vo.res.*;
|
|
|
+import com.sckw.core.common.enums.enums.DictEnum;
|
|
|
import com.sckw.core.common.enums.enums.DictTypeEnum;
|
|
|
import com.sckw.core.exception.SystemException;
|
|
|
import com.sckw.core.model.constant.Global;
|
|
|
import com.sckw.core.model.enums.ContractStatusEnum;
|
|
|
-import com.sckw.core.model.enums.CooperateTypeEnum;
|
|
|
-import com.sckw.core.model.enums.SigningWayEnum;
|
|
|
+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.web.constant.HttpStatus;
|
|
|
import com.sckw.core.web.context.LoginUserHolder;
|
|
|
-import com.sckw.system.api.model.dto.res.SysDictResDto;
|
|
|
+import com.sckw.excel.utils.EasyExcelUtil;
|
|
|
+import com.sckw.product.api.dubbo.GoodsInfoService;
|
|
|
+import com.sckw.system.api.model.dto.res.UserCacheResDto;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.dubbo.config.annotation.DubboReference;
|
|
|
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.ArrayList;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Objects;
|
|
|
+import java.util.*;
|
|
|
|
|
|
import com.sckw.contract.dao.KwcContractTradeMapper;
|
|
|
|
|
|
@@ -48,15 +45,28 @@ import com.sckw.contract.dao.KwcContractTradeMapper;
|
|
|
* @createDate 2023-07-13 13:36:19
|
|
|
*/
|
|
|
@Service
|
|
|
+@Slf4j
|
|
|
public class KwcContractTradeService {
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
- private KwcContractTradeMapper KwcContractTradeMapper;
|
|
|
+ private KwcContractTradeMapper kwcContractTradeMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private KwcContractTradeGoodsService kwcContractTradeGoodsService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private KwcContractTradeTrackService kwcContractTradeTrackService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private KwcContractTradeUnitService kwcContractTradeUnitService;
|
|
|
|
|
|
@DubboReference(version = "2.0.0", group = "design", check = false)
|
|
|
private RemoteSystemService remoteSystemService;
|
|
|
|
|
|
+ @DubboReference(version = "2.0.0", group = "design", check = false)
|
|
|
+ private GoodsInfoService goodsInfoService;
|
|
|
+
|
|
|
/**
|
|
|
* @desc: 分页查询
|
|
|
* @param: reqVo
|
|
|
@@ -66,62 +76,102 @@ public class KwcContractTradeService {
|
|
|
*/
|
|
|
public PageResult queryListByPage(QueryListReqVo reqVo) {
|
|
|
PageHelper.startPage(reqVo.getPage(), reqVo.getPageSize());
|
|
|
- List<QueryListResVo> list = KwcContractTradeMapper.queryList(reqVo);
|
|
|
- return PageHelperUtil.getPageResult(new PageInfo<>(list));
|
|
|
+ QueryListReqDto queryListReqDto = new QueryListReqDto();
|
|
|
+ BeanUtils.copyProperties(reqVo, queryListReqDto);
|
|
|
+ queryListReqDto.setEntId(LoginUserHolder.getEntId());
|
|
|
+ List<QueryListResDto> queryListResDtos = kwcContractTradeMapper.queryList(queryListReqDto);
|
|
|
+ if (CollectionUtils.isEmpty(queryListResDtos)) {
|
|
|
+ return PageHelperUtil.getPageResult(new PageInfo<>());
|
|
|
+ }
|
|
|
+ List<QueryListResVo> list = getQueryListResVos(queryListResDtos);
|
|
|
+ return PageHelperUtil.getPageResult(new PageInfo<>(list), queryListResDtos, reqVo.getPageSize());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param queryListResDtos 入参
|
|
|
+ * @return QueryListResVo
|
|
|
+ * @desc: 抽取公共部分
|
|
|
+ * @author: czh
|
|
|
+ * @date: 2023/7/18
|
|
|
+ */
|
|
|
+ private List<QueryListResVo> getQueryListResVos(List<QueryListResDto> queryListResDtos) {
|
|
|
+ Map<Long, UserCacheResDto> longUserCacheResDtoMap = new HashMap<>();
|
|
|
+ List<Long> initiateByList = queryListResDtos.stream().map(QueryListResDto::getInitiateBy).toList();
|
|
|
+ if (CollectionUtils.isNotEmpty(initiateByList)) {
|
|
|
+ longUserCacheResDtoMap = remoteSystemService.queryUserCacheMapByIds(initiateByList);
|
|
|
+ }
|
|
|
+
|
|
|
+ List<QueryListResVo> list = new ArrayList<>();
|
|
|
+ for (QueryListResDto queryListResDto : queryListResDtos) {
|
|
|
+ QueryListResVo queryListResVo = new QueryListResVo();
|
|
|
+ queryListResVo.setProvideEntName(queryListResDto.getUnitType().compareTo(EntTypeEnum.SUPPLIER.getCode()) == 0 ? queryListResDto.getEntName() : queryListResDto.getTargetEntName());
|
|
|
+ queryListResVo.setPurchaseEntName(queryListResDto.getUnitType().compareTo(EntTypeEnum.SUPPLIER.getCode()) == 0 ? queryListResDto.getTargetEntName() : queryListResDto.getEntName());
|
|
|
+
|
|
|
+ UserCacheResDto userCacheResDto = longUserCacheResDtoMap.get(queryListResDto.getInitiateBy());
|
|
|
+ if (Objects.nonNull(userCacheResDto)) {
|
|
|
+ queryListResVo.setInitiateName(userCacheResDto.getName());
|
|
|
+ queryListResVo.setInitiateEntName(Objects.isNull(userCacheResDto.getEntInfo()) ? "" : userCacheResDto.getEntInfo().getFirmName());
|
|
|
+ }
|
|
|
+ queryListResVo.setTradingName(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(), String.valueOf(queryListResDto.getTrading())));
|
|
|
+ queryListResVo.setStatusName(ContractStatusEnum.getName(queryListResDto.getStatus()).getName());
|
|
|
+
|
|
|
+ // todo
|
|
|
+ queryListResVo.setPerformedAmount(new BigDecimal("0"));
|
|
|
+ list.add(queryListResVo);
|
|
|
+ }
|
|
|
+ return list;
|
|
|
}
|
|
|
|
|
|
@Transactional(rollbackFor = {})
|
|
|
- public Long addTradeContract(ContractLogisticsReqVo reqVo) {
|
|
|
- LogisticsBaseInfoReqVo baseInfo = reqVo.getBaseInfo();
|
|
|
- String contractFileList = reqVo.getContractFile();
|
|
|
- List<LogisticsGoodsInfoReqVo> goodsInfoList = reqVo.getGoodsInfo();
|
|
|
+ public Long addTradeContract(ContractTradeReqVo reqVo) {
|
|
|
+ TradeBaseInfoReqVo baseInfo = reqVo.getBaseInfo();
|
|
|
+ List<TradeGoodsInfoReqVo> goodsInfoList = reqVo.getGoodsInfo();
|
|
|
|
|
|
//创建合同
|
|
|
- KwcContractTrade KwcContractTrade = getKwcContractTrade(baseInfo, reqVo.getRemark(), reqVo.getPId());
|
|
|
- Date date = new Date();
|
|
|
+ KwcContractTrade kwcContractTrade = getKwcContractTrade(baseInfo, reqVo.getRemark(), reqVo.getPId());
|
|
|
long contactId = new IdWorker(1L).nextId();
|
|
|
- KwcContractTrade.setId(contactId);
|
|
|
- KwcContractTrade.setStatus(ContractStatusEnum.SAVE.getCode());
|
|
|
- KwcContractTrade.setCreateBy(LoginUserHolder.getUserId());
|
|
|
- KwcContractTrade.setCreateTime(date);
|
|
|
- KwcContractTrade.setUpdateBy(LoginUserHolder.getUserId());
|
|
|
- KwcContractTrade.setUpdateTime(date);
|
|
|
- KwcContractTrade.setDelFlag(Global.NO);
|
|
|
- if (KwcContractTradeMapper.insert(KwcContractTrade) <= 0) {
|
|
|
+ kwcContractTrade.setId(contactId);
|
|
|
+ kwcContractTrade.setStatus(ContractStatusEnum.SAVE.getCode());
|
|
|
+ kwcContractTrade.setSigningUrl(reqVo.getContractFile());
|
|
|
+ if (kwcContractTradeMapper.insert(kwcContractTrade) <= 0) {
|
|
|
throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
|
|
|
}
|
|
|
+
|
|
|
//保存交易合同商品信息
|
|
|
- //kwcContractLogisticsGoodsService.saveContractLogisticsGoods(KwcContractTrade.getId(), goodsInfoList);
|
|
|
+ kwcContractTradeGoodsService.saveContractTradeGoods(contactId, goodsInfoList);
|
|
|
+
|
|
|
//存单位信息
|
|
|
- //kwcContractLogisticsUnitService.saveContractLogisticsUnit(kwcContractLogistics.getId(), baseInfo);
|
|
|
+ kwcContractTradeUnitService.saveContractTradeUnit(contactId, baseInfo);
|
|
|
return contactId;
|
|
|
}
|
|
|
- //合同基本信息
|
|
|
- public KwcContractTrade getKwcContractTrade(LogisticsBaseInfoReqVo baseInfo, String remark, Long pid) {
|
|
|
- KwcContractTrade KwcContractTrade = new KwcContractTrade();
|
|
|
- System.out.println(LoginUserHolder.getEntId());
|
|
|
- KwcContractTrade.setEntId(1);
|
|
|
- KwcContractTrade.setContractNo(baseInfo.getContractCode());
|
|
|
- KwcContractTrade.setName(baseInfo.getContractName());
|
|
|
- KwcContractTrade.setSigningWay(SigningWayEnum.getName(baseInfo.getSigningWay()).getName());
|
|
|
- SysDictResDto sysDictResDto = remoteSystemService.queryDictByTypeAndValue(DictTypeEnum.CHARGING_TYPE.getType(), baseInfo.getCharging());
|
|
|
- /*if (Objects.isNull(sysDictResDto)) {
|
|
|
- KwcContractTrade.setCharging(sysDictResDto.getId());
|
|
|
- }*/
|
|
|
-
|
|
|
-// remoteSystemService.queryDictByTypeAndValue(DictTypeEnum.TRADE_TYPE, baseInfo.getT)
|
|
|
-// kwcContractLogistics.setTrading(pid);
|
|
|
- KwcContractTrade.setStartTime(baseInfo.getStartTime());
|
|
|
- KwcContractTrade.setEndTime(baseInfo.getEndTime());
|
|
|
- //单位不同怎么汇总?
|
|
|
- KwcContractTrade.setAmount(new BigDecimal("0"));
|
|
|
- KwcContractTrade.setPerformedAmount(new BigDecimal("0"));
|
|
|
- KwcContractTrade.setSigningUrl("");
|
|
|
- KwcContractTrade.setSignedUrl("");
|
|
|
- KwcContractTrade.setSigningNo("");
|
|
|
- KwcContractTrade.setContractPid(pid);
|
|
|
- KwcContractTrade.setRemark(remark);
|
|
|
- return KwcContractTrade;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param baseInfo 贸易基本信息 remark备注 pid父id
|
|
|
+ * @return KwcContractTrade
|
|
|
+ * @desc: 抽取公共
|
|
|
+ * @author: czh
|
|
|
+ * @date: 2023/7/20
|
|
|
+ */
|
|
|
+ public KwcContractTrade getKwcContractTrade(TradeBaseInfoReqVo baseInfo, String remark, Long pid) {
|
|
|
+ Date date = new Date();
|
|
|
+ KwcContractTrade kwcContractTrade = new KwcContractTrade();
|
|
|
+ kwcContractTrade.setEntId(LoginUserHolder.getEntId());
|
|
|
+ kwcContractTrade.setContractNo(baseInfo.getContractCode());
|
|
|
+ kwcContractTrade.setName(baseInfo.getContractName());
|
|
|
+ kwcContractTrade.setSigningWay(baseInfo.getSigningWay());
|
|
|
+ kwcContractTrade.setTrading(baseInfo.getTrading());
|
|
|
+ kwcContractTrade.setStartTime(baseInfo.getStartTime());
|
|
|
+ kwcContractTrade.setEndTime(baseInfo.getEndTime());
|
|
|
+ kwcContractTrade.setPerformedAmount(new BigDecimal("0"));
|
|
|
+ kwcContractTrade.setContractPid(pid);
|
|
|
+ kwcContractTrade.setRemark(remark);
|
|
|
+ kwcContractTrade.setCreateBy(LoginUserHolder.getUserId());
|
|
|
+ kwcContractTrade.setCreateTime(date);
|
|
|
+ kwcContractTrade.setUpdateBy(LoginUserHolder.getUserId());
|
|
|
+ kwcContractTrade.setUpdateTime(date);
|
|
|
+ kwcContractTrade.setDelFlag(Global.NO);
|
|
|
+ return kwcContractTrade;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -130,108 +180,270 @@ public class KwcContractTradeService {
|
|
|
* @author: czh
|
|
|
* @date: 2023/7/14
|
|
|
*/
|
|
|
- public void supplement(ContractLogisticsReqVo reqVo) {
|
|
|
+ public void supplement(ContractTradeReqVo reqVo) {
|
|
|
Long id = reqVo.getPId();
|
|
|
- KwcContractTrade KwcContractTrade = KwcContractTradeMapper.selectById(id);
|
|
|
+ KwcContractTrade KwcContractTrade = kwcContractTradeMapper.selectById(id);
|
|
|
if (Objects.isNull(KwcContractTrade)) {
|
|
|
-
|
|
|
+ throw new SystemException(HttpStatus.QUERY_FAIL_CODE, HttpStatus.CONTRACT_NOT_EXISTS);
|
|
|
}
|
|
|
|
|
|
addTradeContract(reqVo);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
/**
|
|
|
- * @return ContractLogisticsDetailResVo
|
|
|
* @desc: 合同详情
|
|
|
- * @param: reqVo id
|
|
|
+ * @param id 合同id
|
|
|
* @author: czh
|
|
|
* @date 2023/7/16
|
|
|
+ * @return ContractTradeDetailResVo
|
|
|
*/
|
|
|
- /*public ContractLogisticsDetailResVo detail(Long id) {
|
|
|
- KwcContractTrade KwcContractTrade = KwcContractTradeMapper.selectById(id);
|
|
|
- if (Objects.isNull(KwcContractTrade)) {
|
|
|
+ public ContractTradeDetailResVo detail(Long id) {
|
|
|
+ //基础信息
|
|
|
+ KwcContractTrade kwcContractTrade = kwcContractTradeMapper.selectById(id);
|
|
|
+ if (Objects.isNull(kwcContractTrade)) {
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
- return buildContractLogisticsDetailResVo(KwcContractTrade);
|
|
|
+ return buildContractTradeDetailResVo(kwcContractTrade);
|
|
|
}
|
|
|
|
|
|
- private ContractLogisticsDetailResVo buildContractLogisticsDetailResVo(KwcContractTrade kwcContractLogistics) {
|
|
|
- ContractLogisticsDetailResVo contractLogisticsDetailResVo = new ContractLogisticsDetailResVo();
|
|
|
- //基础信息
|
|
|
- List<KwcContractLogisticsUnit> kwcContractLogisticsUnitList = kwcContractLogisticsUnitService.queryByContractId(kwcContractLogistics.getId());
|
|
|
- if (CollectionUtils.isNotEmpty(kwcContractLogisticsUnitList)) {
|
|
|
- LogisticsBaseInfoResVo logisticsBaseInfoResVo = new LogisticsBaseInfoResVo();
|
|
|
- for (KwcContractLogisticsUnit kwcContractLogisticsUnit : kwcContractLogisticsUnitList) {
|
|
|
- if (kwcContractLogisticsUnit.getUnitType().equals(CooperateTypeEnum.CONSIGN.getCode())) {
|
|
|
- logisticsBaseInfoResVo.setCheckedEntName(kwcContractLogisticsUnit.getFirmName());
|
|
|
- logisticsBaseInfoResVo.setCheckedPhone(kwcContractLogisticsUnit.getSignPhone());
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param kwcContractTrade 合同实体
|
|
|
+ * @return ContractTradeDetailResVo
|
|
|
+ * @desc: 构建返参
|
|
|
+ * @author: czh
|
|
|
+ * @date: 2023/7/20
|
|
|
+ */
|
|
|
+ private ContractTradeDetailResVo buildContractTradeDetailResVo(KwcContractTrade kwcContractTrade) {
|
|
|
+ Long id = kwcContractTrade.getId();
|
|
|
+ TradeBaseInfoResVo tradeBaseInfoResVo = new TradeBaseInfoResVo();
|
|
|
+ tradeBaseInfoResVo.setContractCode(kwcContractTrade.getContractNo());
|
|
|
+ tradeBaseInfoResVo.setContractName(kwcContractTrade.getName());
|
|
|
+ tradeBaseInfoResVo.setEndTime(kwcContractTrade.getEndTime());
|
|
|
+ tradeBaseInfoResVo.setSigningWayName(DictEnum.getLabel(DictTypeEnum.SIGNING_WAY.getType(), String.valueOf(kwcContractTrade.getSigningWay())));
|
|
|
+ tradeBaseInfoResVo.setStartTime(kwcContractTrade.getStartTime());
|
|
|
+ tradeBaseInfoResVo.setTradingName(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(), String.valueOf(kwcContractTrade.getTrading())));
|
|
|
+
|
|
|
+ ContractTradeDetailResVo contractTradeDetailResVo = new ContractTradeDetailResVo();
|
|
|
+ List<KwcContractTradeUnit> kwcContractTradeUnits = kwcContractTradeUnitService.queryByContractId(id);
|
|
|
+ if (CollectionUtils.isNotEmpty(kwcContractTradeUnits)) {
|
|
|
+ for (KwcContractTradeUnit kwcContractTradeUnit : kwcContractTradeUnits) {
|
|
|
+ if (kwcContractTradeUnit.getUnitType().compareTo(EntTypeEnum.SUPPLIER.getCode()) == 0) {
|
|
|
+ tradeBaseInfoResVo.setProvideEntName(kwcContractTradeUnit.getFirmName());
|
|
|
+ tradeBaseInfoResVo.setProvidePhone(kwcContractTradeUnit.getSignPhone());
|
|
|
}
|
|
|
|
|
|
- if (kwcContractLogisticsUnit.getUnitType().equals(CooperateTypeEnum.CARRIAGE.getCode())) {
|
|
|
- logisticsBaseInfoResVo.setCarrierEntName(kwcContractLogisticsUnit.getFirmName());
|
|
|
- logisticsBaseInfoResVo.setCarrierPhone(kwcContractLogisticsUnit.getSignPhone());
|
|
|
+ if (kwcContractTradeUnit.getUnitType().compareTo(EntTypeEnum.PURCHASER.getCode()) == 0) {
|
|
|
+ tradeBaseInfoResVo.setPurchaseEntName(kwcContractTradeUnit.getFirmName());
|
|
|
+ tradeBaseInfoResVo.setPurchasePhone(kwcContractTradeUnit.getPhone());
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- //logisticsBaseInfoResVo.setChargingName();
|
|
|
- logisticsBaseInfoResVo.setContractCode(kwcContractLogistics.getContractNo());
|
|
|
- logisticsBaseInfoResVo.setContractName(kwcContractLogistics.getName());
|
|
|
- logisticsBaseInfoResVo.setEndTime(kwcContractLogistics.getEndTime());
|
|
|
- logisticsBaseInfoResVo.setSigningWayName(kwcContractLogistics.getSigningWay());
|
|
|
- logisticsBaseInfoResVo.setStartTime(kwcContractLogistics.getStartTime());
|
|
|
- contractLogisticsDetailResVo.setBaseInfo(logisticsBaseInfoResVo);
|
|
|
}
|
|
|
+ contractTradeDetailResVo.setBaseInfo(tradeBaseInfoResVo);
|
|
|
|
|
|
//标的信息
|
|
|
- List<KwcContractLogisticsGoods> kwcContractLogisticsGoodsList = kwcContractLogisticsGoodsService.queryGoodsInfoByContractId(kwcContractLogistics.getId());
|
|
|
- if (CollectionUtils.isNotEmpty(kwcContractLogisticsGoodsList)) {
|
|
|
- List<Long> goodsIdList = kwcContractLogisticsGoodsList.stream().map(KwcContractLogisticsGoods::getGoodsId).toList();
|
|
|
- List<LogisticsGoodsInfoResVo> goodsInfo = new ArrayList<>();
|
|
|
- for (KwcContractLogisticsGoods kwcContractLogisticsGoods : kwcContractLogisticsGoodsList) {
|
|
|
- LogisticsGoodsInfoResVo logisticsGoodsInfoResVo = new LogisticsGoodsInfoResVo();
|
|
|
- logisticsGoodsInfoResVo.setAmount(kwcContractLogisticsGoods.getAmount());
|
|
|
- logisticsGoodsInfoResVo.setUnit(kwcContractLogisticsGoods.getUnit());
|
|
|
- logisticsGoodsInfoResVo.setPrice(kwcContractLogisticsGoods.getPrice());
|
|
|
- //logisticsGoodsInfoResVo.setPriceUnit();
|
|
|
- logisticsGoodsInfoResVo.setDeficitPrice(kwcContractLogisticsGoods.getDeficitPrice());
|
|
|
- logisticsGoodsInfoResVo.setDeficitUnit(kwcContractLogisticsGoods.getDeficitUnit());
|
|
|
- //logisticsGoodsInfoResVo.setGoodsName();
|
|
|
- logisticsGoodsInfoResVo.setLoss(kwcContractLogisticsGoods.getLoss());
|
|
|
- logisticsGoodsInfoResVo.setLossUnit(kwcContractLogisticsGoods.getLossUnit());
|
|
|
- goodsInfo.add(logisticsGoodsInfoResVo);
|
|
|
+ List<KwcContractTradeGoods> kwcContractTradeGoodsList = kwcContractTradeGoodsService.queryGoodsInfoByContractId(id);
|
|
|
+ if (CollectionUtils.isNotEmpty(kwcContractTradeGoodsList)) {
|
|
|
+ //todo 通过商品id查商品信息,填充商品名
|
|
|
+ List<TradeGoodsInfoResVo> tradeGoodsInfoResVoList = new ArrayList<>();
|
|
|
+ for (KwcContractTradeGoods kwcContractTradeGoods : kwcContractTradeGoodsList) {
|
|
|
+ TradeGoodsInfoResVo tradeGoodsInfoResVo = new TradeGoodsInfoResVo();
|
|
|
+ tradeGoodsInfoResVo.setAmount(kwcContractTradeGoods.getAmount());
|
|
|
+// tradeGoodsInfoResVo.setGoodsName();
|
|
|
+ tradeGoodsInfoResVo.setPrice(kwcContractTradeGoods.getPrice());
|
|
|
+// tradeGoodsInfoResVo.setUnit(0);
|
|
|
+ tradeGoodsInfoResVoList.add(tradeGoodsInfoResVo);
|
|
|
}
|
|
|
- contractLogisticsDetailResVo.setGoodsInfo(goodsInfo);
|
|
|
+ contractTradeDetailResVo.setGoodsInfo(tradeGoodsInfoResVoList);
|
|
|
}
|
|
|
|
|
|
- //合同文件
|
|
|
List<String> fileList = new ArrayList<>();
|
|
|
- fileList.add(kwcContractLogistics.getSignedUrl());
|
|
|
- fileList.add(kwcContractLogistics.getSigningUrl());
|
|
|
- contractLogisticsDetailResVo.setContractFile(fileList);
|
|
|
+ fileList.add(kwcContractTrade.getSigningUrl());
|
|
|
+ fileList.add(kwcContractTrade.getSignedUrl());
|
|
|
+ contractTradeDetailResVo.setContractFile(fileList);
|
|
|
|
|
|
- //补充合同
|
|
|
- List<KwcContractLogistics> supplementList = getSupplementList(kwcContractLogistics);
|
|
|
+ List<KwcContractTrade> supplementList = getSupplementList(id);
|
|
|
if (CollectionUtils.isNotEmpty(supplementList)) {
|
|
|
- List<ContractLogisticsDetailResVo> child = new ArrayList<>();
|
|
|
- for (KwcContractLogistics supplement : supplementList) {
|
|
|
- child.add(buildContractLogisticsDetailResVo(supplement));
|
|
|
+ List<ContractTradeDetailResVo> child = new ArrayList<>();
|
|
|
+ for (KwcContractTrade supplement : supplementList) {
|
|
|
+ child.add(buildContractTradeDetailResVo(supplement));
|
|
|
}
|
|
|
- contractLogisticsDetailResVo.setChild(child);
|
|
|
+ contractTradeDetailResVo.setChild(child);
|
|
|
}
|
|
|
- return contractLogisticsDetailResVo;
|
|
|
+ return contractTradeDetailResVo;
|
|
|
}
|
|
|
|
|
|
|
|
|
- private List<KwcContractLogistics> getSupplementList(KwcContractLogistics kwcContractLogistics) {
|
|
|
- LambdaQueryWrapper<KwcContractLogistics> wrapper = new LambdaQueryWrapper<>();
|
|
|
- wrapper.eq(KwcContractLogistics::getContractPid, kwcContractLogistics.getId());
|
|
|
- wrapper.eq(KwcContractLogistics::getDelFlag, Global.NO);
|
|
|
- wrapper.eq(KwcContractLogistics::getStatus, Global.NO);
|
|
|
- List<KwcContractLogistics> supplementList = kwcContractLogisticsMapper.selectList(wrapper);
|
|
|
- return supplementList;
|
|
|
- }*/
|
|
|
+ private List<KwcContractTrade> getSupplementList(Long id) {
|
|
|
+ LambdaQueryWrapper<KwcContractTrade> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ wrapper.eq(KwcContractTrade::getContractPid, id);
|
|
|
+ wrapper.eq(KwcContractTrade::getDelFlag, Global.NO);
|
|
|
+ wrapper.eq(KwcContractTrade::getStatus, Global.NO);
|
|
|
+ return kwcContractTradeMapper.selectList(wrapper);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
+ /**
|
|
|
+ * @desc: 发起签约
|
|
|
+ * @param reqVo id
|
|
|
+ * @author: czh
|
|
|
+ * @date 2023/7/16
|
|
|
+ */
|
|
|
+ public void submit(ContractTradeReqVo reqVo) {
|
|
|
+ Long id = reqVo.getId();
|
|
|
+ if (Objects.isNull(id)) {
|
|
|
+ //创建合同
|
|
|
+ KwcContractTrade kwcContractLogistics = getKwcContractTrade(reqVo.getBaseInfo(), reqVo.getRemark(), reqVo.getPId());
|
|
|
+ id = new IdWorker(1L).nextId();
|
|
|
+ kwcContractLogistics.setId(id);
|
|
|
+ kwcContractLogistics.setStatus(ContractStatusEnum.SUBMIT.getCode());
|
|
|
+ kwcContractLogistics.setSigningUrl(reqVo.getContractFile());
|
|
|
+ if (kwcContractTradeMapper.insert(kwcContractLogistics) <= 0) {
|
|
|
+ throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
|
|
|
+ }
|
|
|
+
|
|
|
+ //存审批记录
|
|
|
+ kwcContractTradeTrackService.saveContractTradeTrack(id);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ id = addTradeContract(reqVo);
|
|
|
+ //存审批记录
|
|
|
+ kwcContractTradeTrackService.saveContractTradeTrack(id);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @desc: 修改草稿
|
|
|
+ * @param: reqVo 入参
|
|
|
+ * @author: czh
|
|
|
+ * @date 2023/7/16
|
|
|
+ */
|
|
|
+ @Transactional(rollbackFor = {})
|
|
|
+ public void update(ContractTradeReqVo reqVo) {
|
|
|
+ Long contractId = reqVo.getId();
|
|
|
+ KwcContractTrade kwcContractTrade = kwcContractTradeMapper.selectById(contractId);
|
|
|
+ if (Objects.isNull(kwcContractTrade)) {
|
|
|
+ throw new SystemException(HttpStatus.QUERY_FAIL_CODE, HttpStatus.CONTRACT_NOT_EXISTS);
|
|
|
+ }
|
|
|
+
|
|
|
+ KwcContractTrade param = getKwcContractTrade(reqVo.getBaseInfo(), reqVo.getRemark(), reqVo.getPId());
|
|
|
+ param.setId(contractId);
|
|
|
+ param.setSigningUrl(reqVo.getContractFile());
|
|
|
+ param.setStatus(ContractStatusEnum.SAVE.getCode());
|
|
|
+ param.setUpdateBy(LoginUserHolder.getUserId());
|
|
|
+ param.setUpdateTime(new Date());
|
|
|
+ if (kwcContractTradeMapper.updateById(param) <= 0) {
|
|
|
+ throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //保存交易合同商品信息-先把以前的删除
|
|
|
+ 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());
|
|
|
+ item.setUpdateTime(date);
|
|
|
+ });
|
|
|
+
|
|
|
+ if (kwcContractTradeGoodsService.updateBatch(kwcContractTradeGoodsList) != kwcContractTradeGoodsList.size()) {
|
|
|
+ throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ kwcContractTradeGoodsService.saveContractTradeGoods(kwcContractTrade.getId(), reqVo.getGoodsInfo());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @desc: 手动完结
|
|
|
+ * @param: reqVo ids
|
|
|
+ * @author: czh
|
|
|
+ * @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);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @desc: 手动完结
|
|
|
+ * @param: reqVo ids
|
|
|
+ * @author: czh
|
|
|
+ * @date 2023/7/16
|
|
|
+ */
|
|
|
+ @Transactional(rollbackFor = {})
|
|
|
+ public void delete(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 -> {
|
|
|
+ if (item.getStatus() != ContractStatusEnum.SAVE.getCode()) {
|
|
|
+ throw new SystemException(HttpStatus.CODE_10301, HttpStatus.MSG_022);
|
|
|
+ }
|
|
|
+ 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 export(QueryListReqVo reqVo) {
|
|
|
+ QueryListReqDto queryListReqDto = new QueryListReqDto();
|
|
|
+ BeanUtils.copyProperties(reqVo, queryListReqDto);
|
|
|
+ queryListReqDto.setEntId(LoginUserHolder.getEntId());
|
|
|
+ if (StringUtils.isNotBlank(reqVo.getIds())) {
|
|
|
+ List<Long> idList = Arrays.stream(reqVo.getIds().split(Global.COMMA)).map(Long::parseLong).toList();
|
|
|
+ queryListReqDto.setIdList(idList);
|
|
|
+ }
|
|
|
+
|
|
|
+ List<QueryListResVo> queryListResVos = new ArrayList<>();
|
|
|
+ List<QueryListResDto> queryListResDtos = kwcContractTradeMapper.queryList(queryListReqDto);
|
|
|
+ if (CollectionUtils.isNotEmpty(queryListResDtos)) {
|
|
|
+ queryListResVos = getQueryListResVos(queryListResDtos);
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ EasyExcelUtil.writeSingleExcel("贸易合同.xlsx", "sheet1", queryListResVos, QueryListResVo.class);
|
|
|
+ } catch (IOException e) {
|
|
|
+ log.error("导出失败:", e);
|
|
|
+ throw new SystemException(HttpStatus.CODE_10301, HttpStatus.MSG_014);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return HttpResult
|
|
|
+ * @desc: 查询当前企业的销售合同
|
|
|
+ * @author: czh
|
|
|
+ * @date: 2023/7/18
|
|
|
+ */
|
|
|
+ public List<QueryListResVo> queryCurrentEntSaleContractList() {
|
|
|
+ Long entId = LoginUserHolder.getEntId();
|
|
|
+ QueryListReqDto queryListReqDto = new QueryListReqDto();
|
|
|
+ queryListReqDto.setEntId(entId);
|
|
|
+ queryListReqDto.setStatus(ContractStatusEnum.SIGNED.getCode());
|
|
|
+ queryListReqDto.setEntType(EntTypeEnum.SUPPLIER.getCode());
|
|
|
+ List<QueryListResDto> queryListResDtos = kwcContractTradeMapper.queryList(queryListReqDto);
|
|
|
+ if (CollectionUtils.isEmpty(queryListResDtos)) {
|
|
|
+ return Collections.emptyList();
|
|
|
+ }
|
|
|
+ return getQueryListResVos(queryListResDtos);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|