|
@@ -0,0 +1,370 @@
|
|
|
|
+package com.caimei365.commodity.service.impl;
|
|
|
|
+
|
|
|
|
+import com.caimei365.commodity.mapper.ProcurementMapper;
|
|
|
|
+import com.caimei365.commodity.model.ResponseJson;
|
|
|
|
+import com.caimei365.commodity.model.dto.ProcurementDto;
|
|
|
|
+import com.caimei365.commodity.model.po.AdditionalPo;
|
|
|
|
+import com.caimei365.commodity.model.po.ProcurePo;
|
|
|
|
+import com.caimei365.commodity.model.vo.PaginationVo;
|
|
|
|
+import com.caimei365.commodity.model.vo.UserVo;
|
|
|
|
+import com.caimei365.commodity.service.ProcurementService;
|
|
|
|
+import com.caimei365.commodity.utils.ImageUtils;
|
|
|
|
+import org.apache.commons.lang.StringUtils;
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
+
|
|
|
|
+import javax.annotation.Resource;
|
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
|
+import java.util.*;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * Description
|
|
|
|
+ *
|
|
|
|
+ * @author : Charles
|
|
|
|
+ * @date : 2023/4/26
|
|
|
|
+ */
|
|
|
|
+@Service
|
|
|
|
+public class ProcurementServiceImpl implements ProcurementService {
|
|
|
|
+ @Value("${caimei.wwwDomain}")
|
|
|
|
+ private String domain;
|
|
|
|
+
|
|
|
|
+ @Autowired ProcurementMapper procurementMapper;
|
|
|
|
+ // 集采 | 接龙参与信息
|
|
|
|
+ @Resource ProcureService procureService;
|
|
|
|
+ // 发起与参与关联
|
|
|
|
+ @Resource AdditionalService additionalService;
|
|
|
|
+
|
|
|
|
+ private static SimpleDateFormat saveFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
|
+ private static SimpleDateFormat returnFormat = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 所有集采
|
|
|
|
+ * @param pageNo
|
|
|
|
+ * @param pageSize
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public ResponseJson<List<ProcurementDto>> findList(int pageNo, int pageSize) {
|
|
|
|
+ List<ProcurementDto> procurementList = new ArrayList<>();
|
|
|
|
+ ProcurementDto procurementDto = new ProcurementDto();
|
|
|
|
+ // 参与者记录
|
|
|
|
+ List<AdditionalPo> additionalPos = additionalService.findList();
|
|
|
|
+ // 所有集采信息
|
|
|
|
+ List<ProcurePo> list = procureService.findList(pageNo, pageSize);
|
|
|
|
+ // 用户信息获取
|
|
|
|
+ List<String> userIds = list.stream().map(ProcurePo::getUserId).collect(Collectors.toList());
|
|
|
|
+ List<UserVo> userInfo = procurementMapper.selUserInfo(userIds);
|
|
|
|
+ if (null != list && list.size() > 0) {
|
|
|
|
+ list.forEach(p -> {
|
|
|
|
+ procurementDto.setId(p.getId());
|
|
|
|
+ procurementDto.setUserId(p.getUserId());
|
|
|
|
+ if (null != userInfo) {
|
|
|
|
+ procurementDto.setUserName(userInfo.get(userInfo.indexOf(p.getUserId())).getUserName());
|
|
|
|
+ }
|
|
|
|
+ String imageURL = ImageUtils.getImageURL("product", p.getProductImage(), 0, domain);
|
|
|
|
+ if (StringUtils.isNotBlank(imageURL)) {
|
|
|
|
+ procurementDto.setProductImage(imageURL);
|
|
|
|
+ }
|
|
|
|
+ procurementDto.setProductName(p.getProductName());
|
|
|
|
+ procurementDto.setPrice(p.getPrice());
|
|
|
|
+ procurementDto.setSaveTime(returnFormat.format(p.getSaveTime()));
|
|
|
|
+ if (StringUtils.isNotBlank(p.getCreateUserId())) {
|
|
|
|
+ procurementDto.setCreateUserId(p.getCreateUserId());
|
|
|
|
+ }
|
|
|
|
+ procurementDto.setNumber(p.getNumber());
|
|
|
|
+ procurementDto.setIsAchieve(p.getIsAchieve());
|
|
|
|
+ procurementDto.setDelFlag(p.getDelFlag());
|
|
|
|
+ Integer count = Collections.frequency(additionalPos, p.getId());
|
|
|
|
+ procurementDto.setPartNumber(count.toString());
|
|
|
|
+ procurementList.add(procurementDto);
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ return ResponseJson.success(procurementList);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 查看详情
|
|
|
|
+ *
|
|
|
|
+ * @param id
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public ResponseJson<Map<String,Object>> detailProcurement(Integer id) {
|
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
|
+
|
|
|
|
+ // 参与者集合
|
|
|
|
+ List<ProcurementDto> procurementList = new ArrayList<>();
|
|
|
|
+ ProcurementDto procurementDto = new ProcurementDto();
|
|
|
|
+ // 参与者
|
|
|
|
+ ProcurementDto procurement = new ProcurementDto();
|
|
|
|
+ // 发起者信息
|
|
|
|
+ ProcurePo procurePo = procureService.findById(id.toString());
|
|
|
|
+ List<String> userProcurIds = new ArrayList<>();
|
|
|
|
+ userProcurIds.add(procurePo.getUserId());
|
|
|
|
+ List<UserVo> userProcurInfo = procurementMapper.selUserInfo(userProcurIds);
|
|
|
|
+ // 发起者信息设置
|
|
|
|
+ procurementDto.setId(procurePo.getId());
|
|
|
|
+ procurementDto.setUserId(procurePo.getUserId());
|
|
|
|
+ if (null != userProcurInfo && userProcurInfo.size() > 0) {
|
|
|
|
+ procurementDto.setUserName(userProcurInfo.get(0).getUserName());
|
|
|
|
+ }
|
|
|
|
+ procurementDto.setProductImage(procurePo.getProductImage());
|
|
|
|
+ procurementDto.setProductName(procurePo.getProductName());
|
|
|
|
+ procurementDto.setPrice(procurePo.getPrice());
|
|
|
|
+ procurementDto.setSaveTime(returnFormat.format(procurePo.getSaveTime()));
|
|
|
|
+ if (StringUtils.isNotBlank(procurePo.getCreateUserId())) {
|
|
|
|
+ procurementDto.setCreateUserId(procurePo.getCreateUserId());
|
|
|
|
+ }
|
|
|
|
+ procurementDto.setNumber(procurePo.getNumber());
|
|
|
|
+ procurementDto.setIsAchieve(procurePo.getIsAchieve());
|
|
|
|
+ procurementDto.setDelFlag(procurePo.getDelFlag());
|
|
|
|
+ map.put("procurement", procurementDto);
|
|
|
|
+ // 设置参与者信息
|
|
|
|
+ List<AdditionalPo> additionalList = additionalService.findProcureById(procurePo.getId());
|
|
|
|
+ for (AdditionalPo add : additionalList) {
|
|
|
|
+ // 参与者信息
|
|
|
|
+ ProcurePo procure = procureService.findById(add.getProcureId());
|
|
|
|
+ procurement.setId(procure.getId());
|
|
|
|
+ procurement.setUserId(procure.getUserId());
|
|
|
|
+ String imageURL = ImageUtils.getImageURL("product", procure.getProductImage(), 0, domain);
|
|
|
|
+ if (StringUtils.isNotBlank(imageURL)) {
|
|
|
|
+ procurement.setProductImage(imageURL);
|
|
|
|
+ }
|
|
|
|
+ procurement.setProductName(procure.getProductName());
|
|
|
|
+ procurement.setPrice(procure.getPrice());
|
|
|
|
+ procurement.setSaveTime(returnFormat.format(procure.getSaveTime()));
|
|
|
|
+ if (StringUtils.isNotBlank(procure.getCreateUserId())) {
|
|
|
|
+ procurement.setCreateUserId(procure.getCreateUserId());
|
|
|
|
+ }
|
|
|
|
+ procurement.setNumber(procure.getNumber());
|
|
|
|
+ procurement.setIsAchieve(procure.getIsAchieve());
|
|
|
|
+ procurement.setDelFlag(procure.getDelFlag());
|
|
|
|
+ procurementList.add(procurement);
|
|
|
|
+ }
|
|
|
|
+ // 用户信息获取
|
|
|
|
+ List<String> userIds = procurementList.stream().map(ProcurementDto::getUserId).collect(Collectors.toList());
|
|
|
|
+ List<UserVo> userInfo = procurementMapper.selUserInfo(userIds);
|
|
|
|
+ // 用户信息赋予
|
|
|
|
+ if (null != userInfo) {
|
|
|
|
+ procurementList.forEach(p -> {
|
|
|
|
+ p.setUserName(userInfo.get(userInfo.indexOf(p.getUserId())).getUserName());
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ map.put("procurementList",procurementList);
|
|
|
|
+ return ResponseJson.success(map);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 我参与的 | 我创建的
|
|
|
|
+ *
|
|
|
|
+ * @param userId
|
|
|
|
+ * @param procurementType 0 我参与的 1 我发起的
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public ResponseJson<List<ProcurementDto>> myProcurement(Integer userId, Integer procurementType) {
|
|
|
|
+ List<ProcurementDto> procurementList = new ArrayList<>();
|
|
|
|
+ ProcurementDto procurementDto = new ProcurementDto();
|
|
|
|
+ // 参与者记录
|
|
|
|
+ List<AdditionalPo> additionalPos = additionalService.findList();
|
|
|
|
+ List<ProcurePo> list = new ArrayList<>();
|
|
|
|
+ if (0 == procurementType) {
|
|
|
|
+ // 我参与的
|
|
|
|
+ list = procureService.findInvolvedList(userId);
|
|
|
|
+ } else {
|
|
|
|
+ // 我发起的
|
|
|
|
+ list = procureService.findUserList(userId);
|
|
|
|
+ }
|
|
|
|
+ // 设置返回信息
|
|
|
|
+ if (null != list && list.size() > 0) {
|
|
|
|
+ list.forEach(p -> {
|
|
|
|
+ procurementDto.setId(p.getId());
|
|
|
|
+ procurementDto.setUserId(p.getUserId());
|
|
|
|
+ String imageURL = ImageUtils.getImageURL("product", p.getProductImage(), 0, domain);
|
|
|
|
+ if (StringUtils.isNotBlank(imageURL)) {
|
|
|
|
+ procurementDto.setProductImage(imageURL);
|
|
|
|
+ }
|
|
|
|
+ procurementDto.setProductName(p.getProductName());
|
|
|
|
+ procurementDto.setPrice(p.getPrice());
|
|
|
|
+ procurementDto.setSaveTime(returnFormat.format(p.getSaveTime()));
|
|
|
|
+ if (StringUtils.isNotBlank(p.getCreateUserId())) {
|
|
|
|
+ procurementDto.setCreateUserId(p.getCreateUserId());
|
|
|
|
+ }
|
|
|
|
+ procurementDto.setNumber(p.getNumber());
|
|
|
|
+ procurementDto.setIsAchieve(p.getIsAchieve());
|
|
|
|
+ procurementDto.setDelFlag(p.getDelFlag());
|
|
|
|
+ Integer count = Collections.frequency(additionalPos, p.getId());
|
|
|
|
+ procurementDto.setPartNumber(count.toString());
|
|
|
|
+ procurementList.add(procurementDto);
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ // 用户信息获取
|
|
|
|
+ List<String> userIds = procurementList.stream().map(ProcurementDto::getUserId).collect(Collectors.toList());
|
|
|
|
+ List<UserVo> userInfo = procurementMapper.selUserInfo(userIds);
|
|
|
|
+ // 用户信息赋予
|
|
|
|
+ if (null != userInfo) {
|
|
|
|
+ procurementList.forEach(p -> {
|
|
|
|
+ p.setUserName(userInfo.get(userInfo.indexOf(p.getUserId())).getUserName());
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ return ResponseJson.success(procurementList);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 修改集采信息回显
|
|
|
|
+ *
|
|
|
|
+ * @param id
|
|
|
|
+ * @param userId
|
|
|
|
+ * @param procurementType 0 我参与的 1 我发起的
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public ResponseJson<ProcurementDto> editData(Integer id, Integer userId,Integer procurementType) {
|
|
|
|
+ ProcurementDto procurementDto = new ProcurementDto();
|
|
|
|
+ List<ProcurePo> involvedList = new ArrayList<>();
|
|
|
|
+ if (0 == procurementType) {
|
|
|
|
+ // 我参与的集采修改回显
|
|
|
|
+ involvedList = procureService.findInvolvedList(userId);
|
|
|
|
+ } else {
|
|
|
|
+ // 我发起的集采修改回显
|
|
|
|
+ involvedList = procureService.findUserList(userId);
|
|
|
|
+ }
|
|
|
|
+ // 检索匹配
|
|
|
|
+ ProcurePo procurePo = involvedList.get(involvedList.indexOf(id));
|
|
|
|
+ List<String> userIds = new ArrayList<>();
|
|
|
|
+ userIds.add(procurePo.getUserId());
|
|
|
|
+ List<UserVo> userInfo = procurementMapper.selUserInfo(userIds);
|
|
|
|
+ // 返回赋值
|
|
|
|
+ procurementDto.setId(procurePo.getId());
|
|
|
|
+ procurementDto.setUserId(procurePo.getUserId());
|
|
|
|
+ if (null != userInfo && userInfo.size() > 0) {
|
|
|
|
+ procurementDto.setUserName(userInfo.get(0).getUserName());
|
|
|
|
+ }
|
|
|
|
+ String imageURL = ImageUtils.getImageURL("product", procurePo.getProductImage(), 0, domain);
|
|
|
|
+ if (StringUtils.isNotBlank(imageURL)) {
|
|
|
|
+ procurementDto.setProductImage(imageURL);
|
|
|
|
+ }
|
|
|
|
+ procurementDto.setProductName(procurePo.getProductName());
|
|
|
|
+ procurementDto.setPrice(procurePo.getPrice());
|
|
|
|
+ procurementDto.setSaveTime(saveFormat.format(new Date()));
|
|
|
|
+ if (StringUtils.isNotBlank(procurePo.getCreateUserId())) {
|
|
|
|
+ procurementDto.setCreateUserId(procurePo.getCreateUserId());
|
|
|
|
+ }
|
|
|
|
+ procurementDto.setNumber(procurePo.getNumber());
|
|
|
|
+ procurementDto.setIsAchieve(procurePo.getIsAchieve());
|
|
|
|
+ procurementDto.setDelFlag(procurePo.getDelFlag());
|
|
|
|
+ return ResponseJson.success(procurementDto);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 发布集采 | 修改集采
|
|
|
|
+ *
|
|
|
|
+ * @param procurementDto
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public ResponseJson saveProcurement(ProcurementDto procurementDto) {
|
|
|
|
+ ProcurePo procurePo = new ProcurePo();
|
|
|
|
+ // 初始化数据
|
|
|
|
+ procurePo.setUserId(procurementDto.getUserId());
|
|
|
|
+ procurePo.setProductImage(procurementDto.getProductImage());
|
|
|
|
+ procurePo.setProductName(procurementDto.getProductName());
|
|
|
|
+ procurePo.setPrice(procurementDto.getPrice());
|
|
|
|
+ procurePo.setSaveTime(saveFormat.format(new Date()));
|
|
|
|
+ procurePo.setNumber(procurementDto.getNumber());
|
|
|
|
+ if (StringUtils.isNotBlank(procurementDto.getId())) {
|
|
|
|
+ // 修改集采信息
|
|
|
|
+ procurePo.setId(procurementDto.getId());
|
|
|
|
+ procurePo.setCreateUserId(procurementDto.getCreateUserId());
|
|
|
|
+ procurePo.setIsAchieve(procurementDto.getIsAchieve());
|
|
|
|
+ procurePo.setDelFlag(procurementDto.getDelFlag());
|
|
|
|
+ procureService.update(procurePo);
|
|
|
|
+ } else {
|
|
|
|
+ // 发布集采需求
|
|
|
|
+ procurePo.setCreateUserId(procurementDto.getUserId());
|
|
|
|
+ procurePo.setIsAchieve("0");
|
|
|
|
+ procurePo.setDelFlag("0");
|
|
|
|
+ procureService.save(procurePo);
|
|
|
|
+ }
|
|
|
|
+ return ResponseJson.success();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 参与集采
|
|
|
|
+ *
|
|
|
|
+ * @param procurementDto
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public ResponseJson participateProcurement(ProcurementDto procurementDto) {
|
|
|
|
+ ProcurePo procurePo = new ProcurePo();
|
|
|
|
+
|
|
|
|
+ // 参与集采需求
|
|
|
|
+ procurePo.setUserId(procurementDto.getUserId());
|
|
|
|
+ procurePo.setProductImage(procurementDto.getProductImage());
|
|
|
|
+ procurePo.setProductName(procurementDto.getProductName());
|
|
|
|
+ procurePo.setPrice(procurementDto.getPrice());
|
|
|
|
+ procurePo.setSaveTime(saveFormat.format(new Date()));
|
|
|
|
+ procurePo.setNumber(procurementDto.getNumber());
|
|
|
|
+ procurePo.setCreateUserId(procurementDto.getUserId());
|
|
|
|
+ procurePo.setIsAchieve("0");
|
|
|
|
+ procurePo.setDelFlag("0");
|
|
|
|
+ procureService.save(procurePo);
|
|
|
|
+ // 设置集采 发布与参与对应关系
|
|
|
|
+ AdditionalPo additionalPo = new AdditionalPo();
|
|
|
|
+ additionalPo.setProcureId(procurementDto.getId());
|
|
|
|
+ additionalPo.setAdditionalId(procurePo.getId());
|
|
|
|
+ additionalPo.setDelFlag("0");
|
|
|
|
+ additionalService.save(additionalPo);
|
|
|
|
+ return ResponseJson.success();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 删除集采 | 退出集采
|
|
|
|
+ *
|
|
|
|
+ * @param id
|
|
|
|
+ * @param userId
|
|
|
|
+ * @param procurementType 0 删除集采 1 退出集采
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public ResponseJson updateProcurement(Integer id, Integer userId, Integer procurementType) {
|
|
|
|
+ // 更新集采信息
|
|
|
|
+ if (1 == procurementType) {
|
|
|
|
+ // 退出集采
|
|
|
|
+ AdditionalPo additionalPo = new AdditionalPo();
|
|
|
|
+ ProcurePo procurePo = new ProcurePo();
|
|
|
|
+ // 主集采下所有参与者 参与id
|
|
|
|
+ List<AdditionalPo> poList = additionalService.findProcureById(id.toString());
|
|
|
|
+ for (AdditionalPo add : poList) {
|
|
|
|
+ ProcurePo byId = procureService.findById(add.getAdditionalId());
|
|
|
|
+ if (byId.getUserId().equals(userId)) {
|
|
|
|
+ // 修改集采参与记录关系
|
|
|
|
+ additionalPo.setAdditionalId(byId.getId());
|
|
|
|
+ additionalPo.setDelFlag("1");
|
|
|
|
+ additionalService.update(additionalPo);
|
|
|
|
+ // 修改集采参与记录
|
|
|
|
+ procurePo.setId(byId.getId());
|
|
|
|
+ procurePo.setDelFlag("1");
|
|
|
|
+ procureService.update(procurePo);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ // 删除集采
|
|
|
|
+ ProcurePo procurePo = new ProcurePo();
|
|
|
|
+ procurePo.setId(id.toString());
|
|
|
|
+ procurePo.setDelFlag("1");
|
|
|
|
+ procureService.update(procurePo);
|
|
|
|
+ // 删除集采关系
|
|
|
|
+ AdditionalPo additionalPo = new AdditionalPo();
|
|
|
|
+ additionalPo.setProcureId(id.toString());
|
|
|
|
+ additionalPo.setDelFlag("1");
|
|
|
|
+ additionalService.update(additionalPo);
|
|
|
|
+ }
|
|
|
|
+ return ResponseJson.success();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+}
|