diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java index 24348b84f..335b0505e 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java @@ -195,12 +195,13 @@ public enum ErrorCodeEnum { USER_NOT_LOGIN(103021,"用户未登录",null), XFSG_SERVICE_ERROR(103099,"鲜丰服务调用失败",null), GET_FIRST_ORDER(103021,"获取鲜丰首批订货金失败",null), - YLF_ERROR(110001, "云立方接口异常!异常信息:{0}", null), //装修 THREE_ACCEPTANCE(121001,"提交三方验收失败",null), CHECK_ITEM(12002,"插入检查项失败",null), FITMENT_FAIL(12003,"装修款阶段未完成",null), + SEE_ACCEPTANCE_ERROR(12004,"获取鲜丰撤场数据失败",null), + SEE_ACCEPTANCE_AUDIT_NULL(12005,"视觉验收结果为空",null), ; diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/MessageEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/MessageEnum.java index e92c046eb..623d47b94 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/MessageEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/MessageEnum.java @@ -44,6 +44,7 @@ public enum MessageEnum { MESSAGE_25("您有一个门店待进行三方验收,请查收","##### 门店名称:${storeName}\n##### 加盟商姓名:${partnerUsername}\n##### 加盟商手机号码:${partnerMobile}\n"), MESSAGE_26("您有一个门店需要上传开业运营方案,请查收","##### 门店名称:${storeName}\n##### 加盟商姓名:${partnerUsername}\n##### 加盟商手机号码:${partnerMobile}\n"), MESSAGE_27("您有一个门店需要上传首批订货清单,请查收","##### 门店名称:${storeName}\n##### 加盟商姓名:${partnerUsername}\n##### 加盟商手机号码:${partnerMobile}\n"), + MESSAGE_28("您有一个门店需要进行视频验收,请查收","##### 门店名称:${storeName}\n##### 加盟商姓名:${partnerUsername}\n##### 加盟商手机号码:${partnerMobile}\n"), ; private String title; @@ -136,6 +137,9 @@ public enum MessageEnum { case MESSAGE_27: return domainUrl + "/dd-noticemsg?appId=" + appId + "&corpId=" + corpId + "&appUrl=" + URLEncoder.encode("pages/common-web-view/index?noticeType=xfsg&routerUrl=notice&target=orderList×tamp=" + System.currentTimeMillis() +"&lineId="+ paramMap.get("lineId"), StandardCharsets.UTF_8.name()); + case MESSAGE_28: + return "dingtalk://dingtalkclient/action/open_micro_app?appId="+appId+"&corpId="+corpId+"&page=" + + URLEncoder.encode("pages/common-web-view/index?noticeType=xfsg&routerUrl=notice&target=eyeAcceptance×tamp="+System.currentTimeMillis()+"&shopId="+ paramMap.get("shopId"), StandardCharsets.UTF_8.name()); default: return ""; diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/ShopAuditInfoDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/ShopAuditInfoDAO.java index 4007dac34..c91f6bb2e 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/ShopAuditInfoDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/ShopAuditInfoDAO.java @@ -56,9 +56,8 @@ public class ShopAuditInfoDAO { return shopAuditInfoMapper.updateByPrimaryKeySelective(shopAuditInfoDO); } - public Long selectIdByShopId(Long shopId) { - return shopAuditInfoMapper.selectAuditIdByShopId(shopId); + public List getAuditList(Long shopId,Integer auditType) { + return shopAuditInfoMapper.getAuditList(shopId,auditType); } - } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/ShopInfoDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/ShopInfoDAO.java index e2e031354..5e2695a56 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/ShopInfoDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/ShopInfoDAO.java @@ -13,6 +13,7 @@ import com.cool.store.request.PreparationRequest; import com.cool.store.vo.shop.StageShopCountVO; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; +import com.google.common.collect.Lists; import com.google.common.collect.Maps; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -156,4 +157,5 @@ public class ShopInfoDAO { } return shopInfoMapper.selectByStoreNum(storeNum); } + } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/ShopAuditInfoMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/ShopAuditInfoMapper.java index 504b20a8f..3391e2f54 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/ShopAuditInfoMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/ShopAuditInfoMapper.java @@ -15,10 +15,5 @@ public interface ShopAuditInfoMapper extends Mapper { List getListByShopIdAndType(@Param("shopId") Long shopId, @Param("type") Integer type); - /** - * @Auther: wangshuo - * @Date: 2024/4/23 - * @description:根据店铺id查询审批结果 - */ - Long selectAuditIdByShopId(@Param("shopId") Long shopId); + List getAuditList(@Param("shopId") Long shopId,@Param("auditType") Integer auditType); } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/ShopInfoMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/ShopInfoMapper.java index 48915e1b7..2456073af 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/ShopInfoMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/ShopInfoMapper.java @@ -86,5 +86,7 @@ public interface ShopInfoMapper extends Mapper { * @Date: 2024/5/3 * @description:根据区域id查询所有处于XXX的店铺 */ - List selectShopListByRegionId(@Param("regionIds") List regionIds,@Param("subStageStatus")List subStageStatus); + List selectShopListByRegionId(@Param("regionIds") List regionIds,@Param("subStageStatus")List subStageStatus,@Param("request")String request); + + } diff --git a/coolstore-partner-dao/src/main/resources/mapper/ShopAuditInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/ShopAuditInfoMapper.xml index 02f8b82ea..4abd5bab3 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/ShopAuditInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/ShopAuditInfoMapper.xml @@ -41,14 +41,7 @@ id,shop_id,audit_type,submitted_user_id,submitted_user_name,result_type,pass_reason,reject_reason, certify_file,create_time,update_time,deleted,data_type - + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/ShopInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/ShopInfoMapper.xml index d37aeba89..ca08c09b5 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/ShopInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/ShopInfoMapper.xml @@ -168,7 +168,11 @@ #{item} + + and xsi.shop_name Like concat("%",#{request},"%") or xsi.shop_num Like concat("%",#{request},"%") + + \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/AcceptanceListRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/AcceptanceListRequest.java index a80668a0b..51e013126 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/AcceptanceListRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/AcceptanceListRequest.java @@ -1,5 +1,7 @@ package com.cool.store.request; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.annotations.ApiOperation; import lombok.Data; import org.springframework.web.bind.annotation.RequestParam; @@ -13,7 +15,9 @@ import java.util.List; */ @Data public class AcceptanceListRequest { - + @ApiModelProperty("门店名称或编码") + private String request; + @ApiModelProperty("阶段状态") private List subStageStatus; private Integer pageNum; private Integer pageSize; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/SeeAcceptanceRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/SeeAcceptanceRequest.java new file mode 100644 index 000000000..046e845c3 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/SeeAcceptanceRequest.java @@ -0,0 +1,22 @@ +package com.cool.store.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Auther: WangShuo + * @Date: 2024/05/17/下午6:15 + * @Version 1.0 + * @注释: + */ +@Data +public class SeeAcceptanceRequest { + private Long shopId; + @ApiModelProperty("'结果类型 0通过,1拒绝',") + @NotNull(message = "审核结果不能为空") + private Integer resultType; + @ApiModelProperty("原因") + private String reason; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/SeeAccetanceListRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/SeeAccetanceListRequest.java new file mode 100644 index 000000000..e2c23bd76 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/SeeAccetanceListRequest.java @@ -0,0 +1,18 @@ +package com.cool.store.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Auther: WangShuo + * @Date: 2024/05/17/下午8:32 + * @Version 1.0 + * @注释: + */ +@Data +public class SeeAccetanceListRequest { + @ApiModelProperty("门店名称或编码") + private String request; + private Integer pageNum; + private Integer pageSize; +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/SeeAcceptanceService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/SeeAcceptanceService.java new file mode 100644 index 000000000..15d664604 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/SeeAcceptanceService.java @@ -0,0 +1,25 @@ +package com.cool.store.service; + +import com.cool.store.context.LoginUserInfo; +import com.cool.store.dto.decoration.ConstructionScheduleDTO; +import com.cool.store.entity.ShopAuditInfoDO; +import com.cool.store.request.AcceptanceListRequest; +import com.cool.store.request.SeeAcceptanceRequest; +import com.cool.store.request.SeeAccetanceListRequest; +import com.cool.store.vo.fitmentCheckVO; +import com.github.pagehelper.PageInfo; + +import java.util.List; + +/** + * @Auther: WangShuo + * @Date: 2024/05/17/下午5:57 + * @Version 1.0 + * @注释: + */ +public interface SeeAcceptanceService { + Boolean auditSeeAcceptance(SeeAcceptanceRequest seeAcceptanceRequest, LoginUserInfo user); + ConstructionScheduleDTO getWithdrawal(Long shopId); + List getAuditInfo(Long shopId); + PageInfo getAcceptanceList(AcceptanceListRequest request, LoginUserInfo user); +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DecorationServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DecorationServiceImpl.java index 049678aef..7a715ca79 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DecorationServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DecorationServiceImpl.java @@ -176,7 +176,7 @@ public class DecorationServiceImpl implements DecorationService { } //预算 BudgetDTO proposedBookBudget = getBudgetDTOS(decoration); - if (proposedBookBudget == null) return null; + if (proposedBookBudget == null) {return null;} BigDecimal vzHj = proposedBookBudget.getVzHj(); //支付二维码url Long regionId = shopInfoDAO.getRegionIdByid(shopId); @@ -286,15 +286,31 @@ public class DecorationServiceImpl implements DecorationService { name.add(CommonConstants.WITHDRAWAL); ConstructionScheduleDTO approach = new ConstructionScheduleDTO(); AcceptanceInfoDO acceptanceInfoDO = acceptanceInfoDAO.selectByShopId(shopId); + ConstructionScheduleDTO constructionSage = new ConstructionScheduleDTO(); + ShopInfoDO shopInfo = shopInfoDAO.getShopInfo(shopId); + LineInfoDO lineInfo = lineInfoMapper.getByLineId(shopInfo.getLineId()); for (ConstructionScheduleDTO constructionScheduleDTO : constructionSchedule) { if (name.contains(constructionScheduleDTO.getName())) { collect.add(constructionScheduleDTO); if (constructionScheduleDTO.getName().equals(CommonConstants.APPROACH)) { approach = constructionScheduleDTO; } - //计划撤场时间 + //计划撤场时间 //如果撤场并且视觉验收状态为-100则更新待验收 if (constructionScheduleDTO.getName().equals(CommonConstants.WITHDRAWAL)) { + ShopStageInfoDO shopSubStageInfo = shopStageInfoDAO.getShopSubStageInfo(shopId, ShopSubStageEnum.SHOP_STAGE_13); + if(shopSubStageInfo.getShopSubStageStatus().equals(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_00.getShopSubStageStatus()) + && constructionScheduleDTO.getState().equals(ConstructionPhaseEnum.construction_FINSH.getCode())){ + shopStageInfoDAO.updateShopStageInfo(shopId, ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_130); + //发送给品牌设计经理 + EnterpriseUserDO enterpriseUser = userAuthMappingService.getUserByRoleEnumAndWantShopAreaId(UserRoleEnum.DESIGN_MANAGER, lineInfo.getWantShopAreaId()); + Map messageMap = new HashMap<>(); + messageMap.put("storeName",shopInfo.getShopName()); + messageMap.put("shopId",String.valueOf(shopId)); + messageMap.put("shopName",shopInfo.getShopName()); + messageMap.put("partnerMobile",lineInfo.getMobile()); + commonService.sendMessage(Arrays.asList(enterpriseUser.getUserId()), MessageEnum.MESSAGE_28, messageMap); + } ConstructionScheduleDTO withdrawal = constructionScheduleDTO; if (Objects.nonNull(acceptanceInfoDO)) { Date date = CoolDateUtils.parseDate(withdrawal.getPlanBeginDate(), CoolDateUtils.DATE_FORMAT_DAY); @@ -306,12 +322,12 @@ public class DecorationServiceImpl implements DecorationService { constructionSage = constructionScheduleDTO; } } + //设置进场时间xfsg_acceptance_info if (Objects.nonNull(acceptanceInfoDO) && StringUtils.isNotEmpty(approach.getActualBeginDate())) { Date date = CoolDateUtils.parseDate(approach.getActualBeginDate(), CoolDateUtils.DATE_FORMAT_DAY); acceptanceInfoDO.setActualEntryTime(date); } - //施工完成时间,计划开始和完成时间 // if (Objects.nonNull(acceptanceInfoDO) && StringUtils.isNotEmpty(constructionSage.getActualEndDate())) { Date date = CoolDateUtils.parseDate(constructionSage.getActualEndDate(), CoolDateUtils.DATE_FORMAT_DAY); @@ -327,6 +343,8 @@ public class DecorationServiceImpl implements DecorationService { } acceptanceInfoDO.setUpdateTime(new Date()); acceptanceInfoDAO.updateAcceptanceInfo(acceptanceInfoDO); + + //如果完成更新施工阶段状态 if (ConstructionPhaseEnum.construction_FINSH.getCode().equals(constructionSage.getState())) { shopStageInfoDAO.updateShopStageInfo(shopId, ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_112); @@ -465,7 +483,7 @@ public class DecorationServiceImpl implements DecorationService { List fitmentCheckVOList = new ArrayList<>(); //shopId,lineid,regionid,shopname,storenum, - List shopInfoDOS = shopInfoMapper.selectShopListByRegionId(regions, request.getSubStageStatus()); + List shopInfoDOS = shopInfoMapper.selectShopListByRegionId(regions, request.getSubStageStatus(),null); PageInfo pageInfo = new PageInfo<>(shopInfoDOS); if (shopInfoDOS.isEmpty()) { log.info("该工程部监理下门店为空"); diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SeeAcceptanceServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SeeAcceptanceServiceImpl.java new file mode 100644 index 000000000..9a5ffaff3 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SeeAcceptanceServiceImpl.java @@ -0,0 +1,255 @@ +package com.cool.store.service.impl; + +import com.cool.store.constants.CommonConstants; +import com.cool.store.context.LoginUserInfo; +import com.cool.store.dao.*; +import com.cool.store.dto.decoration.ConstructionScheduleDTO; +import com.cool.store.dto.decoration.DecorationDTO; +import com.cool.store.dto.decoration.ProjectDTO; +import com.cool.store.entity.*; +import com.cool.store.enums.AuditResultTypeEnum; +import com.cool.store.enums.AuditTypeEnum; +import com.cool.store.enums.ErrorCodeEnum; +import com.cool.store.enums.UserRoleEnum; +import com.cool.store.enums.point.ShopSubStageEnum; +import com.cool.store.enums.point.ShopSubStageStatusEnum; +import com.cool.store.exception.ServiceException; +import com.cool.store.mapper.LineInfoMapper; +import com.cool.store.mapper.ShopInfoMapper; +import com.cool.store.request.AcceptanceListRequest; +import com.cool.store.request.SeeAcceptanceRequest; +import com.cool.store.request.SeeAccetanceListRequest; +import com.cool.store.service.*; +import com.cool.store.utils.poi.StringUtils; +import com.cool.store.vo.fitmentCheckVO; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * @Auther: WangShuo + * @Date: 2024/05/17/下午5:58 + * @Version 1.0 + * @注释: + */ +@Service +public class SeeAcceptanceServiceImpl implements SeeAcceptanceService { + private static final Logger log = LoggerFactory.getLogger(SeeAcceptanceServiceImpl.class); + @Resource + private DecorationService decorationService; + @Resource + private ShopInfoDAO shopInfoDAO; + @Resource + private YlfService ylfService; + @Resource + private ShopAuditInfoDAO shopAuditInfoDAO; + @Resource + private TempUserDetailDAO tempUserDetailDAO; + @Resource + private ShopStageInfoDAO shopStageInfoDAO; + @Resource + private PreparationService preparationService; + @Resource + private UserAuthMappingService userAuthMappingService; + @Resource + private ShopInfoMapper shopInfoMapper; + @Resource + private LineInfoMapper lineInfoMapper; + @Resource + private EnterpriseUserDAO enterpriseUserDAO; + @Resource + private RegionService regionService; + @Resource + private SysRoleService sysRoleService; + @Resource + private AcceptanceInfoDAO acceptanceInfoDAO; + + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean auditSeeAcceptance(SeeAcceptanceRequest request, LoginUserInfo user) { + if (request.getShopId() == null || request.getShopId() == 0) { + throw new ServiceException(ErrorCodeEnum.SHOP_ID_IS_NULL); + } + if (request.getResultType() == null) { + throw new ServiceException(ErrorCodeEnum.SEE_ACCEPTANCE_AUDIT_NULL); + } + if (Objects.isNull(user)) { + throw new ServiceException(ErrorCodeEnum.USER_NOT_LOGIN); + } + + ShopAuditInfoDO shopAuditInfoDO = new ShopAuditInfoDO(); + shopAuditInfoDO.setShopId(request.getShopId()); + shopAuditInfoDO.setAuditType(AuditTypeEnum.VISUAL_ACCEPTANCE.getCode()); + shopAuditInfoDO.setSubmittedUserId(user.getUserId()); + shopAuditInfoDO.setSubmittedUserName(user.getName()); + shopAuditInfoDO.setResultType(request.getResultType()); + if (AuditResultTypeEnum.PASS.getCode().equals(request.getResultType())) { + shopAuditInfoDO.setPassReason(request.getReason()); + } else { + shopAuditInfoDO.setRejectReason(request.getReason()); + } + // TODO xfsg_user_detail_id + shopAuditInfoDO.setCreateTime(new Date()); + shopAuditInfoDO.setDataType(CommonConstants.ONE); + Long id = shopAuditInfoDAO.addAuditInfo(shopAuditInfoDO); + if (AuditResultTypeEnum.PASS.getCode().equals(request.getResultType())) { + shopStageInfoDAO.updateShopStageAndAuditInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_132, id); + preparationService.whetherToOpenForAcceptance(request.getShopId()); + } else { + shopStageInfoDAO.updateShopStageAndAuditInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_131, id); + } + return true; + } + + @Override + public ConstructionScheduleDTO getWithdrawal(Long shopId) { + DecorationDTO decoration = getDecorationDTO(shopId); + if (decoration == null) { + log.error("DecorationModel is null"); + return null; + } + ConstructionScheduleDTO constructionScheduleDTO = new ConstructionScheduleDTO(); + List constructionSchedule = decoration.getConstructionSchedule(); + for (ConstructionScheduleDTO a : constructionSchedule) { + if (CommonConstants.WITHDRAWAL.equals(a.getName())) { + constructionScheduleDTO = a; + } + } + if (Objects.isNull(constructionScheduleDTO)) { + throw new ServiceException(ErrorCodeEnum.SEE_ACCEPTANCE_ERROR); + } + return constructionScheduleDTO; + + } + + @Override + public List getAuditInfo(Long shopId) { + return shopAuditInfoDAO.getAuditList(shopId, AuditTypeEnum.VISUAL_ACCEPTANCE.getCode()); + } + + @Override + public PageInfo getAcceptanceList(AcceptanceListRequest request, LoginUserInfo user) { + List authRegionIds = userAuthMappingService.getAuthRegionIdAndSubRegionIdByUserId(user.getUserId()); + List regions = new ArrayList<>(); + for (String authRegionId : authRegionIds) { + regions.add(Long.parseLong(authRegionId)); + } + PageHelper.startPage(request.getPageNum(), request.getPageSize()); + if (regions.isEmpty()) { + log.info("该用户下权限没有管理区域"); + return new PageInfo<>(); + } + List fitmentCheckVOList = new ArrayList<>(); + //shopId,lineid,regionid,shopname,storenum, + + List shopInfoDOS = shopInfoMapper.selectShopListByRegionId(regions, request.getSubStageStatus(),request.getRequest()); + PageInfo pageInfo = new PageInfo<>(shopInfoDOS); + if (shopInfoDOS.isEmpty()) { + log.info("该工程部监理下门店为空"); + return pageInfo; + } + Map ShopIdmap = shopInfoDOS.stream().collect(Collectors.toMap(ShopInfoDO::getId, dto1 -> dto1)); + //招商经理,选址人员(拓展经理)id + List lineIds = shopInfoDOS.stream().filter(o -> o.getLineId() != null) + .map(ShopInfoDO::getLineId).distinct().collect(Collectors.toList()); + List lineInfos = lineInfoMapper.getByLineIds(lineIds); + Map lineInfoDOMap = lineInfos.stream().collect(Collectors.toMap(LineInfoDO::getId, dto -> dto)); + //招商name + List userIds = new ArrayList<>(); + userIds.addAll(lineInfos.stream().filter(o -> o.getInvestmentManager() != null) + .map(LineInfoDO::getInvestmentManager).distinct().collect(Collectors.toList())); + //选址人员(拓展经理)name + userIds.addAll(lineInfos.stream().filter(o -> o.getDevelopmentManager() != null) + .map(LineInfoDO::getDevelopmentManager).distinct().collect(Collectors.toList())); + Map userNameMap = enterpriseUserDAO.getUserNameMap(userIds); + //所属战区 + List regionIds = shopInfoDOS.stream().filter(o -> o.getRegionId() != null). + map(ShopInfoDO::getRegionId).distinct().collect(Collectors.toList()); + Map regionNameMap = regionService.getBelongWarRegionNameMap(regionIds); + //战区经理name + Map fightManger = new HashMap<>(); + for (Long regionId : regionIds) { + String fightMangerUserId = sysRoleService.getUserIdByRegionIdWithRolePriority(regionId, Arrays.asList(UserRoleEnum.THEATER_MANAGER)); + String userName = enterpriseUserDAO.getUserName(fightMangerUserId); + fightManger.put(regionId, userName); + } + //施工实际完成实际 + List shopIds = new ArrayList<>(ShopIdmap.keySet()); + List acceptanceInfoDOS = acceptanceInfoDAO.selectByShopIds(shopIds); + Map acceptanceInfoDOSMap = acceptanceInfoDOS.stream() + .collect(Collectors.toMap(AcceptanceInfoDO::getShopId, dto1 -> dto1)); + //验收状态 + List subStageList = shopStageInfoDAO.getSubStageList(shopIds, ShopSubStageEnum.SHOP_STAGE_13.getShopSubStage()); + List audits = subStageList.stream().filter(o -> o.getAuditId() != null).map(ShopStageInfoDO::getAuditId).collect(Collectors.toList()); + //验收时间 + List auditInfoList = shopAuditInfoDAO.getAuditInfoList(audits); + Map auditMap = auditInfoList.stream().filter(o -> o.getShopId() != null).collect(Collectors.toMap(ShopAuditInfoDO::getShopId, Function.identity())); + + Map ShopStageInfoDOMap = subStageList.stream() + .collect(Collectors.toMap(ShopStageInfoDO::getShopId, dto1 -> dto1)); + for (ShopInfoDO shopInfoDO : shopInfoDOS) { + Long shopId = shopInfoDO.getId(); + Long lineId = shopInfoDO.getLineId(); + Long regionId = shopInfoDO.getRegionId(); + fitmentCheckVO fitmentCheckVO = new fitmentCheckVO(); + fitmentCheckVO.setShopId(shopId); + fitmentCheckVO.setLineId(lineId); + fitmentCheckVO.setShopName(shopInfoDO.getShopName()); + fitmentCheckVO.setStoreNum(shopInfoDO.getStoreNum()); + fitmentCheckVO.setRegionId(regionId); + fitmentCheckVO.setRegion(regionNameMap.get(regionId)); + fitmentCheckVO.setFightManager(fightManger.get(regionId)); + if (lineId != null) { + fitmentCheckVO.setInvestmentManagerId(lineInfoDOMap.get(lineId) + .getInvestmentManager()); + fitmentCheckVO.setInvestmentManager(userNameMap.get(lineInfoDOMap.get(lineId) + .getInvestmentManager())); + fitmentCheckVO.setSitterId(lineInfoDOMap.get(lineId) + .getDevelopmentManager()); + fitmentCheckVO.setSitterName(userNameMap.get(lineInfoDOMap.get(lineId) + .getDevelopmentManager())); + fitmentCheckVO.setPartnerName(lineInfoDOMap.get(lineId).getUsername()); + } + AcceptanceInfoDO acceptanceInfoDO = acceptanceInfoDOSMap.get(shopId); + if (shopId != null) { + if (Objects.nonNull(acceptanceInfoDO)) { + fitmentCheckVO.setActualEndTime(acceptanceInfoDO.getConstructionCompletionTime()); + } + } + if (Objects.nonNull(auditMap.get(shopId))) { + fitmentCheckVO.setAcceptanceTime(auditMap.get(shopId).getCreateTime()); + } + if (Objects.nonNull(ShopStageInfoDOMap.get(shopId))) { + fitmentCheckVO.setShopSubStageStatus(ShopStageInfoDOMap.get(shopId).getShopSubStageStatus()); + } + fitmentCheckVOList.add(fitmentCheckVO); + } + pageInfo.setList(fitmentCheckVOList); + return pageInfo; + } + + + + private DecorationDTO getDecorationDTO(Long shopId) { + ShopInfoDO shopInfo = shopInfoDAO.getShopInfo(shopId); + if (Objects.isNull(shopInfo)) { + throw new ServiceException(ErrorCodeEnum.SHOP_ID_NOT_EXIST); + } + String storeNum = shopInfo.getStoreNum(); + if (StringUtils.isNotEmpty(storeNum)) { + ProjectDTO projectList = ylfService.getProjectList(storeNum); + Long projectId = projectList.getProjectId(); + DecorationDTO decoration = ylfService.getDecoration(projectId); + return decoration; + } + return null; + } +} diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCDecorationController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCDecorationController.java index 67a2a06e8..1520388cb 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCDecorationController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCDecorationController.java @@ -4,15 +4,14 @@ import com.cool.store.context.CurrentUserHolder; import com.cool.store.context.LoginUserInfo; import com.cool.store.context.PartnerUserHolder; import com.cool.store.dto.decoration.ConstructionScheduleDTO; -import com.cool.store.request.AcceptanceListRequest; -import com.cool.store.request.BookingAcceptanceRequest; -import com.cool.store.request.ThreeAcceptanceCheckRequest; -import com.cool.store.request.ThreeAcceptanceRequest; +import com.cool.store.entity.ShopAuditInfoDO; +import com.cool.store.request.*; import com.cool.store.response.FitmentResponse; import com.cool.store.response.ResponseResult; import com.cool.store.response.ThreeSignResponse; import com.cool.store.service.DecorationService; import com.cool.store.service.PreparationService; +import com.cool.store.service.SeeAcceptanceService; import com.cool.store.vo.Fitment.DecorationModelVO; import com.cool.store.vo.Fitment.DesignInfoVo; import com.cool.store.vo.LinePayVO; @@ -43,6 +42,8 @@ public class PCDecorationController { private DecorationService decorationService; @Resource private PreparationService preparationService; + @Resource + private SeeAcceptanceService seeAcceptanceService; @ApiOperation("获取新店装修flush") @GetMapping("/flush") public ResponseResult getFitmentSub(@RequestParam Long shopId) { @@ -97,4 +98,32 @@ public class PCDecorationController { public ResponseResult getThreeAcceptance(@RequestParam Long shopId){ return ResponseResult.success(decorationService.getThreeAcceptanceSign(shopId)); } + @ApiOperation("获取视觉验收撤场数据") + @GetMapping("/getSeeAcceptanceWithdrawal") + public ResponseResult getSeeAcceptanceWithdrawal(@RequestParam Long shopId){ + return ResponseResult.success(seeAcceptanceService.getWithdrawal(shopId)); + } + @ApiOperation("视觉验收列表") + @PostMapping("/getSeeAcceptanceList") + public ResponseResult< PageInfo> getSeeAcceptanceList(@RequestBody AcceptanceListRequest request){ + LoginUserInfo user = CurrentUserHolder.getUser(); + return ResponseResult.success(seeAcceptanceService.getAcceptanceList(request,user)); + } + @ApiOperation("获取撤场数据") + @GetMapping("/getWithdrawal") + public ResponseResult getWithdrawal(@RequestParam Long shopId){ + return ResponseResult.success(seeAcceptanceService.getWithdrawal(shopId)); + } + @ApiOperation("获取视觉验收审核数据") + @GetMapping("/getSeeAuditInfo") + public ResponseResult< List > getAuditInfo(@RequestParam Long shopId){ + return ResponseResult.success(seeAcceptanceService.getAuditInfo(shopId)); + } + @ApiOperation("验收视觉验收") + @PostMapping("/auditSee") + public ResponseResult auditSee(@RequestBody SeeAcceptanceRequest request){ + LoginUserInfo user = CurrentUserHolder.getUser(); + return ResponseResult.success(seeAcceptanceService.auditSeeAcceptance(request,user)); + } + } diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniDecorationController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniDecorationController.java index e54a4a4c8..d9beb59be 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniDecorationController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniDecorationController.java @@ -4,6 +4,7 @@ import com.cool.store.context.PartnerUserHolder; import com.cool.store.dto.decoration.ConstructionScheduleDTO; import com.cool.store.dto.decoration.DecorationModelDTO; import com.cool.store.dto.decoration.ThreeAcceptanceDTO; +import com.cool.store.entity.ShopAuditInfoDO; import com.cool.store.request.LinePaySubmitRequest; import com.cool.store.request.ThreeAcceptanceCheckRequest; import com.cool.store.request.ThreeAcceptanceRequest; @@ -13,6 +14,7 @@ import com.cool.store.response.ResponseResult; import com.cool.store.response.ThreeSignResponse; import com.cool.store.service.AssessmentTemplateService; import com.cool.store.service.DecorationService; +import com.cool.store.service.SeeAcceptanceService; import com.cool.store.vo.AssessmentTemplateVO; import com.cool.store.vo.Fitment.DecorationStageVO; import com.cool.store.vo.Fitment.DecorationModelVO; @@ -42,6 +44,8 @@ public class MiniDecorationController { private DecorationService decorationService; @Resource private AssessmentTemplateService assessmentTemplateService; + @Resource + private SeeAcceptanceService seeAcceptanceService; @ApiOperation("获取设计阶段子阶段信息") @GetMapping("/designSub") public ResponseResult getDesign(@RequestParam Long shopId){ @@ -99,4 +103,14 @@ public class MiniDecorationController { public ResponseResult getThreeAcceptance(@RequestParam Long shopId){ return ResponseResult.success(decorationService.getThreeAcceptanceSign(shopId)); } + @ApiOperation("获取撤场数据") + @GetMapping("/getWithdrawal") + public ResponseResult getWithdrawal(@RequestParam Long shopId){ + return ResponseResult.success(seeAcceptanceService.getWithdrawal(shopId)); + } + @ApiOperation("获取视觉验收审核数据") + @GetMapping("/getSeeAuditInfo") + public ResponseResult< List > getAuditInfo(@RequestParam Long shopId){ + return ResponseResult.success(seeAcceptanceService.getAuditInfo(shopId)); + } }