|
|
@@ -21,15 +21,14 @@ import com.sckw.excel.utils.EasyExcelUtil;
|
|
|
import com.sckw.manage.dao.KwmCooperateMapper;
|
|
|
import com.sckw.manage.dao.KwmCooperateTypeMapper;
|
|
|
import com.sckw.manage.model.dto.req.CooperateManageQueryReqDto;
|
|
|
+import com.sckw.manage.model.dto.res.CooperateManageQueryResDto;
|
|
|
import com.sckw.manage.model.entity.KwmCooperate;
|
|
|
import com.sckw.manage.model.entity.KwmCooperateType;
|
|
|
import com.sckw.manage.model.vo.req.BindManagerReqVo;
|
|
|
import com.sckw.manage.model.vo.req.CooperateManageQueryReqVo;
|
|
|
+import com.sckw.manage.model.vo.req.FindCooperateByEntReqVo;
|
|
|
import com.sckw.manage.model.vo.req.FindEntCooperateReqVo;
|
|
|
-import com.sckw.manage.model.vo.res.CooperateManageQueryResVo;
|
|
|
-import com.sckw.manage.model.vo.res.FindEntCooperateResVo;
|
|
|
-import com.sckw.manage.model.vo.res.FindListGroupResVo;
|
|
|
-import com.sckw.manage.model.vo.res.QueryDetailResVo;
|
|
|
+import com.sckw.manage.model.vo.res.*;
|
|
|
import com.sckw.system.api.RemoteSystemService;
|
|
|
import com.sckw.system.api.model.dto.res.EntCacheResDto;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
@@ -39,6 +38,7 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* @author czh
|
|
|
@@ -71,11 +71,22 @@ public class KwmCooperateManageService {
|
|
|
*/
|
|
|
public PageResult queryByPage(CooperateManageQueryReqVo reqVo) {
|
|
|
PageHelper.startPage(reqVo.getPage(), reqVo.getPageSize());
|
|
|
- List<CooperateManageQueryResVo> list = commonBusinessService.findList(buildQueryParam(reqVo));
|
|
|
+ List<CooperateManageQueryResVo> list = findList(buildQueryParam(reqVo));
|
|
|
return PageHelperUtil.getPageResult(new PageInfo<>(list));
|
|
|
}
|
|
|
|
|
|
|
|
|
+ private List<CooperateManageQueryResVo> findList(CooperateManageQueryReqDto reqDto) {
|
|
|
+ Long entId = LoginUserHolder.getEntId();
|
|
|
+ reqDto.setCurrentEntId(entId);
|
|
|
+ List<CooperateManageQueryResDto> list = kwmCooperateMapper.findManageList(reqDto);
|
|
|
+ if (CollectionUtils.isEmpty(list)) {
|
|
|
+ return Collections.emptyList();
|
|
|
+ }
|
|
|
+
|
|
|
+ return commonBusinessService.getCooperateManageQueryResVos(reqDto, list);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* @param reqVo 查询入参
|
|
|
* @return CooperateManageQueryReqDto
|
|
|
@@ -95,14 +106,10 @@ public class KwmCooperateManageService {
|
|
|
//只允许查出申请中、已拒绝、已撤销的记录
|
|
|
List<Integer> status = new ArrayList<>();
|
|
|
if (Objects.isNull(reqVo.getStatus())) {
|
|
|
- status.add(CooperateStatusEnum.PROCESS.getCode());
|
|
|
status.add(CooperateStatusEnum.OK.getCode());
|
|
|
status.add(CooperateStatusEnum.PASS.getCode());
|
|
|
}
|
|
|
|
|
|
- if (Objects.nonNull(reqVo.getStatus()) && reqVo.getStatus().equals(CooperateStatusEnum.PROCESS.getCode())) {
|
|
|
- status.add(CooperateStatusEnum.PROCESS.getCode());
|
|
|
- }
|
|
|
if (Objects.nonNull(reqVo.getStatus()) && reqVo.getStatus().equals(CooperateStatusEnum.OK.getCode())) {
|
|
|
status.add(CooperateStatusEnum.OK.getCode());
|
|
|
}
|
|
|
@@ -144,7 +151,7 @@ public class KwmCooperateManageService {
|
|
|
* @date: 2023/7/10
|
|
|
*/
|
|
|
public void bindManager(BindManagerReqVo reqVo) throws SystemException {
|
|
|
- commonBusinessService.bingManager(reqVo.getUserId(), reqVo.getId());
|
|
|
+ commonBusinessService.bingManager(reqVo.getUserId(), reqVo.getId());
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -154,7 +161,7 @@ public class KwmCooperateManageService {
|
|
|
* @date: 2023/7/11
|
|
|
*/
|
|
|
@Transactional(rollbackFor = {})
|
|
|
- public void dissolve(String ids) {
|
|
|
+ public void dissolve(String ids, Integer type) {
|
|
|
//todo 判断是否可以解除(若和所选企业有未完结的业务单据(销售订单/采购订单、托运订单/承运订单、对账单、结算单),不支持解除合作)
|
|
|
//提示:您与所选企业存在未完结业务,当前无法删除!
|
|
|
List<KwmCooperate> kwmCooperates = kwmCooperateMapper.selectBatchIds(Arrays.asList(ids.split(Global.COMMA)));
|
|
|
@@ -165,11 +172,17 @@ public class KwmCooperateManageService {
|
|
|
Date date = new Date();
|
|
|
kwmCooperates.forEach(item -> {
|
|
|
//运营端可以操作任意状态,企业端只能操作合作中的数据
|
|
|
- if (checkUserPermission(item.getStatus())) {
|
|
|
- throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.MSG_012);
|
|
|
+ if (SystemTypeEnum.MANAGE.getCode().equals(LoginUserHolder.getSystemType())) {
|
|
|
+ if (!item.getStatus().equals(CooperateStatusEnum.OK.getCode()) && type.equals(CooperateStatusEnum.PASS.getCode())) {
|
|
|
+ throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.MSG_012);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!item.getStatus().equals(CooperateStatusEnum.PASS.getCode()) && type.equals(CooperateStatusEnum.OK.getCode())) {
|
|
|
+ throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.MSG_012);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- item.setStatus(CooperateStatusEnum.PASS.getCode());
|
|
|
+ item.setStatus(type);
|
|
|
item.setUpdateBy(userId);
|
|
|
item.setUpdateTime(date);
|
|
|
if (kwmCooperateMapper.updateById(item) <= 0) {
|
|
|
@@ -260,18 +273,18 @@ public class KwmCooperateManageService {
|
|
|
* @author: czh
|
|
|
* @date: 2023/7/22
|
|
|
*/
|
|
|
- public List<FindEntCooperateResVo> findEntCooperate(FindEntCooperateReqVo reqVo) {
|
|
|
+ public FindEntCooperateResVo findEntCooperate(FindEntCooperateReqVo reqVo) {
|
|
|
Long id = reqVo.getId();
|
|
|
Integer cooperateType = reqVo.getCooperateType();
|
|
|
LambdaQueryWrapper<KwmCooperate> wrapper = new LambdaQueryWrapper<>();
|
|
|
wrapper.eq(KwmCooperate::getInviterEntId, id).or().
|
|
|
eq(KwmCooperate::getInviteeEntId, id).and(
|
|
|
wp -> wp.eq(KwmCooperate::getDelFlag, Global.NO).
|
|
|
- eq(KwmCooperate::getStatus, CooperateStatusEnum.OK.getCode())
|
|
|
+ eq(KwmCooperate::getStatus, CooperateStatusEnum.OK.getCode())
|
|
|
);
|
|
|
List<KwmCooperate> kwmCooperates = kwmCooperateMapper.selectList(wrapper);
|
|
|
if (CollectionUtils.isEmpty(kwmCooperates)) {
|
|
|
- return Collections.emptyList();
|
|
|
+ return null;
|
|
|
}
|
|
|
|
|
|
LambdaQueryWrapper<KwmCooperateType> kwmCooperateTypeLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
@@ -280,48 +293,164 @@ public class KwmCooperateManageService {
|
|
|
kwmCooperateTypeLambdaQueryWrapper.eq(KwmCooperateType::getType, cooperateType);
|
|
|
List<KwmCooperateType> kwmCooperateTypes = kwmCooperateTypeMapper.selectList(kwmCooperateTypeLambdaQueryWrapper);
|
|
|
if (CollectionUtils.isEmpty(kwmCooperateTypes)) {
|
|
|
- return Collections.emptyList();
|
|
|
+ return null;
|
|
|
}
|
|
|
|
|
|
//装对方企业的id
|
|
|
List<Long> kwmCooperateIdList = kwmCooperateTypes.stream().map(KwmCooperateType::getCooperateId).toList();
|
|
|
+ kwmCooperates = kwmCooperates.stream().filter(item -> kwmCooperateIdList.contains(item.getId())).toList();
|
|
|
+ if (CollectionUtils.isEmpty(kwmCooperates)) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
List<Long> targetEntIdList = new ArrayList<>();
|
|
|
kwmCooperates.forEach(item -> {
|
|
|
- if (kwmCooperateIdList.contains(item.getId())) {
|
|
|
- targetEntIdList.add(item.getInviterEntId().equals(id) ? item.getInviteeEntId() : item.getInviterEntId());
|
|
|
- }
|
|
|
+ targetEntIdList.add(item.getInviterEntId().equals(id) ? item.getInviteeEntId() : item.getInviterEntId());
|
|
|
});
|
|
|
|
|
|
- List<EntCacheResDto> entCacheResDtos = remoteSystemService.queryEntCacheByIds(targetEntIdList);
|
|
|
- if (CollectionUtils.isEmpty(entCacheResDtos)) {
|
|
|
- return Collections.emptyList();
|
|
|
+ Map<Long, EntCacheResDto> entCacheResDtoMap = remoteSystemService.queryEntCacheMapByIds(targetEntIdList);
|
|
|
+ if (Objects.isNull(entCacheResDtoMap)) {
|
|
|
+ return null;
|
|
|
}
|
|
|
|
|
|
//装对方企业信息
|
|
|
- List<FindEntCooperateResVo> list = new ArrayList<>();
|
|
|
- entCacheResDtos.forEach(item -> {
|
|
|
+ List<FindEntCooperateResVo> targetEntList = new ArrayList<>();
|
|
|
+ kwmCooperates.forEach(item -> {
|
|
|
FindEntCooperateResVo findEntCooperateResVo = new FindEntCooperateResVo();
|
|
|
- findEntCooperateResVo.setEntId(item.getId());
|
|
|
- findEntCooperateResVo.setEntName(item.getFirmName());
|
|
|
- list.add(findEntCooperateResVo);
|
|
|
+ Long entId = item.getInviterEntId().equals(id) ? item.getInviteeEntId() : item.getInviterEntId();
|
|
|
+ EntCacheResDto entCacheResDto = entCacheResDtoMap.get(entId);
|
|
|
+ if (Objects.isNull(entCacheResDto)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ findEntCooperateResVo.setEntId(entId);
|
|
|
+ findEntCooperateResVo.setEntName(entCacheResDto.getFirmName());
|
|
|
+ findEntCooperateResVo.setContactsId(item.getInviterEntId().equals(id) ? item.getInviteeContactsId() : item.getInviterContactsId());
|
|
|
+ findEntCooperateResVo.setContacts(item.getInviterEntId().equals(id) ? item.getInviteeContacts() : item.getInviterContacts());
|
|
|
+ findEntCooperateResVo.setPhone(item.getInviterEntId().equals(id) ? item.getInviteePhone() : item.getInviterPhone());
|
|
|
+ targetEntList.add(findEntCooperateResVo);
|
|
|
});
|
|
|
|
|
|
//装对方企业的主体单位
|
|
|
- Map<Long, List<EntCacheResDto>> longListMap = remoteSystemService.queryEntDeptCacheByIds(targetEntIdList);
|
|
|
- List<Long> longs = list.stream().map(FindEntCooperateResVo::getEntId).toList();
|
|
|
- longs.forEach(item -> {
|
|
|
- List<EntCacheResDto> entCacheResDtos1 = longListMap.get(item);
|
|
|
- if (CollectionUtils.isEmpty(entCacheResDtos1)) {
|
|
|
- return;
|
|
|
- }
|
|
|
- entCacheResDtos1.forEach(x -> {
|
|
|
- FindEntCooperateResVo findEntCooperateResVo = new FindEntCooperateResVo();
|
|
|
- findEntCooperateResVo.setEntId(x.getId());
|
|
|
- findEntCooperateResVo.setEntName(x.getFirmName());
|
|
|
- list.add(findEntCooperateResVo);
|
|
|
- });
|
|
|
+// Map<Long, List<EntCacheResDto>> longListMap = remoteSystemService.queryEntDeptCacheByIds(targetEntIdList);
|
|
|
+// List<Long> longs = targetEntList.stream().map(FindEntCooperateResVo::getEntId).toList();
|
|
|
+// longs.forEach(item -> {
|
|
|
+// List<EntCacheResDto> entCacheResDtos1 = longListMap.get(item);
|
|
|
+// if (CollectionUtils.isEmpty(entCacheResDtos1)) {
|
|
|
+// return;
|
|
|
+// }
|
|
|
+// entCacheResDtos1.forEach(x -> {
|
|
|
+// FindEntCooperateResVo findEntCooperateResVo = new FindEntCooperateResVo();
|
|
|
+// findEntCooperateResVo.setEntId(x.getId());
|
|
|
+// findEntCooperateResVo.setEntName(x.getFirmName());
|
|
|
+// targetEntList.add(findEntCooperateResVo);
|
|
|
+// });
|
|
|
+// });
|
|
|
+
|
|
|
+ FindEntCooperateResVo findEntCooperateResVo = new FindEntCooperateResVo();
|
|
|
+ EntCacheResDto entCacheResDto = remoteSystemService.queryEntCacheById(id);
|
|
|
+ KwmCooperate kwmCooperate = kwmCooperates.get(0);
|
|
|
+ findEntCooperateResVo.setEntId(id);
|
|
|
+ findEntCooperateResVo.setEntName(entCacheResDto.getFirmName());
|
|
|
+ findEntCooperateResVo.setContactsId(kwmCooperate.getInviterEntId().equals(id) ? kwmCooperate.getInviterContactsId() : kwmCooperate.getInviteeContactsId());
|
|
|
+ findEntCooperateResVo.setContacts(kwmCooperate.getInviterEntId().equals(id) ? kwmCooperate.getInviterContacts() : kwmCooperate.getInviteeContacts());
|
|
|
+ findEntCooperateResVo.setPhone(kwmCooperate.getInviterEntId().equals(id) ? kwmCooperate.getInviterPhone() : kwmCooperate.getInviteePhone());
|
|
|
+ findEntCooperateResVo.setTarget(targetEntList);
|
|
|
+ return findEntCooperateResVo;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param reqVo 企业id
|
|
|
+ * @return FindCooperateByEntResVo
|
|
|
+ * @desc: 根据企业查合作信息
|
|
|
+ * @author: czh
|
|
|
+ * @date: 2023/8/1
|
|
|
+ */
|
|
|
+ public List<FindCooperateByEntResVo> findCooperateByEnt(FindCooperateByEntReqVo reqVo) {
|
|
|
+ List<KwmCooperate> kwmCooperates = kwmCooperateMapper.findCooperateByEnt(reqVo);
|
|
|
+ if (CollectionUtils.isEmpty(kwmCooperates)) {
|
|
|
+ return Collections.emptyList();
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取合作属性
|
|
|
+ List<Long> cooperateIdList = kwmCooperates.stream().map(KwmCooperate::getId).toList();
|
|
|
+ LambdaQueryWrapper<KwmCooperateType> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ wrapper.in(KwmCooperateType::getCooperateId, cooperateIdList);
|
|
|
+ wrapper.eq(KwmCooperateType::getDelFlag, Global.NO);
|
|
|
+ List<KwmCooperateType> kwmCooperateTypes = kwmCooperateTypeMapper.selectList(wrapper);
|
|
|
+ Map<Long, List<KwmCooperateType>> collect = new HashMap<>();
|
|
|
+ if (CollectionUtils.isNotEmpty(kwmCooperateTypes)) {
|
|
|
+ collect = kwmCooperateTypes.stream().collect(Collectors.groupingBy(KwmCooperateType::getCooperateId));
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取所有企业信息
|
|
|
+ List<Long> allEntIdList = new ArrayList<>();
|
|
|
+ kwmCooperates.forEach(item -> {
|
|
|
+ allEntIdList.add(item.getEntId());
|
|
|
+ allEntIdList.add(item.getInviterEntId());
|
|
|
+ allEntIdList.add(item.getInviteeEntId());
|
|
|
});
|
|
|
+ List<EntCacheResDto> entCacheResDtos = remoteSystemService.queryEntCacheByIds(allEntIdList);
|
|
|
+ Map<Long, EntCacheResDto> entMap = new HashMap<>();
|
|
|
+ if (CollectionUtils.isNotEmpty(entCacheResDtos)) {
|
|
|
+ entMap = entCacheResDtos.stream().collect(Collectors.toMap(EntCacheResDto::getId, e -> e, (n, o) -> n));
|
|
|
+ }
|
|
|
+
|
|
|
+ List<FindCooperateByEntResVo> list = new ArrayList<>();
|
|
|
+ Long currentEntId = LoginUserHolder.getEntId();
|
|
|
+ for (KwmCooperate kwmCooperate : kwmCooperates) {
|
|
|
+ FindCooperateByEntResVo findCooperateByEntResVo = new FindCooperateByEntResVo();
|
|
|
+ findCooperateByEntResVo.setId(kwmCooperate.getId());
|
|
|
+
|
|
|
+
|
|
|
+ //设置合作属性
|
|
|
+ List<KwmCooperateType> kwmCooperateTypes1 = collect.get(kwmCooperate.getId());
|
|
|
+ if (CollectionUtils.isNotEmpty(kwmCooperateTypes1)) {
|
|
|
+ findCooperateByEntResVo.setCooperateTypes(String.join(Global.COMMA, kwmCooperateTypes1.stream().map(KwmCooperateType::getType).map(String::valueOf).toList()));
|
|
|
+ }
|
|
|
+
|
|
|
+ //设置发起企业
|
|
|
+ EntCacheResDto entCacheResDto = entMap.get(kwmCooperate.getEntId());
|
|
|
+ findCooperateByEntResVo.setInitiateEntId(kwmCooperate.getEntId());
|
|
|
+ if (Objects.nonNull(entCacheResDto)) {
|
|
|
+ findCooperateByEntResVo.setInitiateEntName(entCacheResDto.getFirmName());
|
|
|
+ }
|
|
|
+
|
|
|
+ EntCacheResDto inviterEntCacheResDto = entMap.get(kwmCooperate.getInviterEntId());
|
|
|
+ EntCacheResDto inviteeEntCacheResDto = entMap.get(kwmCooperate.getInviteeEntId());
|
|
|
+ String inviterEntName = Objects.isNull(inviterEntCacheResDto) ? null : inviterEntCacheResDto.getFirmName();
|
|
|
+ String inviteeEntName = Objects.isNull(inviteeEntCacheResDto) ? null : inviteeEntCacheResDto.getFirmName();
|
|
|
+
|
|
|
+ //设置我方和对方企业信息、联系人
|
|
|
+ if (currentEntId.equals(kwmCooperate.getEntId())) {
|
|
|
+ findCooperateByEntResVo.setEntId(kwmCooperate.getInviterEntId());
|
|
|
+ findCooperateByEntResVo.setEntName(inviterEntName);
|
|
|
+ findCooperateByEntResVo.setContactsId(kwmCooperate.getInviterContactsId());
|
|
|
+ findCooperateByEntResVo.setContacts(kwmCooperate.getInviterContacts());
|
|
|
+ findCooperateByEntResVo.setPhone(kwmCooperate.getInviterPhone());
|
|
|
+ findCooperateByEntResVo.setTargetEntId(kwmCooperate.getInviteeEntId());
|
|
|
+ findCooperateByEntResVo.setTargetEntName(inviteeEntName);
|
|
|
+ findCooperateByEntResVo.setTargetContactsId(kwmCooperate.getInviteeContactsId());
|
|
|
+ findCooperateByEntResVo.setTargetContacts(kwmCooperate.getInviteeContacts());
|
|
|
+ findCooperateByEntResVo.setTargetPhone(kwmCooperate.getInviteePhone());
|
|
|
+ } else {
|
|
|
+ findCooperateByEntResVo.setEntId(kwmCooperate.getInviteeEntId());
|
|
|
+ findCooperateByEntResVo.setEntName(inviteeEntName);
|
|
|
+ findCooperateByEntResVo.setContactsId(kwmCooperate.getInviteeContactsId());
|
|
|
+ findCooperateByEntResVo.setContacts(kwmCooperate.getInviteeContacts());
|
|
|
+ findCooperateByEntResVo.setPhone(kwmCooperate.getInviteePhone());
|
|
|
+ findCooperateByEntResVo.setTargetEntId(kwmCooperate.getInviterEntId());
|
|
|
+ findCooperateByEntResVo.setTargetEntName(inviterEntName);
|
|
|
+ findCooperateByEntResVo.setTargetContactsId(kwmCooperate.getInviterContactsId());
|
|
|
+ findCooperateByEntResVo.setTargetContacts(kwmCooperate.getInviterContacts());
|
|
|
+ findCooperateByEntResVo.setTargetPhone(kwmCooperate.getInviterPhone());
|
|
|
+ }
|
|
|
+ list.add(findCooperateByEntResVo);
|
|
|
+ }
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
+ public void restore(String ids, Integer type) {
|
|
|
+ dissolve(ids, type);
|
|
|
+ }
|
|
|
}
|