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 88638d354..333ff313e 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 @@ -219,6 +219,8 @@ public enum ErrorCodeEnum { FITMENT_FAIL(12003,"装修款阶段未完成",null), SEE_ACCEPTANCE_ERROR(12004,"获取鲜丰撤场数据失败",null), SEE_ACCEPTANCE_AUDIT_NULL(12005,"视觉验收结果为空",null), + STATUS_NOT_SUPPORT_SUMMIT(121006,"该状态不支持上传",null), + DESIGN_NO_COMPLETE(121007,"请先完成设计阶段!",null), ; diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/point/ShopSubStageEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/point/ShopSubStageEnum.java index b81de7ab4..3a2fec21d 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/point/ShopSubStageEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/point/ShopSubStageEnum.java @@ -20,7 +20,6 @@ public enum ShopSubStageEnum { SHOP_STAGE_7(ShopStageEnum.SHOP_STAGE_2, 70, "缴纳加盟费/保证金", 1), SHOP_STAGE_8(ShopStageEnum.SHOP_STAGE_2, 80, "加盟合同签约", 4), SHOP_STAGE_9(ShopStageEnum.SHOP_STAGE_2, 90, "设计阶段", 21), - SHOP_STAGE_10(ShopStageEnum.SHOP_STAGE_2, 100, "装修款", 24), SHOP_STAGE_11(ShopStageEnum.SHOP_STAGE_2, 110, "施工阶段", 31), SHOP_STAGE_12(ShopStageEnum.SHOP_STAGE_2, 120, "三方验收", 32), SHOP_STAGE_14(ShopStageEnum.SHOP_STAGE_2, 140, "开业运营方案", 23), diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/point/ShopSubStageStatusEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/point/ShopSubStageStatusEnum.java index 14a8ecc1b..3869aefb7 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/point/ShopSubStageStatusEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/point/ShopSubStageStatusEnum.java @@ -51,7 +51,7 @@ public enum ShopSubStageStatusEnum { //设计阶段 SHOP_SUB_STAGE_STATUS_90(ShopSubStageEnum.SHOP_STAGE_9, 900, "待上传", Boolean.FALSE), SHOP_SUB_STAGE_STATUS_92(ShopSubStageEnum.SHOP_STAGE_9, 920, "待确认", Boolean.FALSE), - SHOP_SUB_STAGE_STATUS_91(ShopSubStageEnum.SHOP_STAGE_9, 910, "已完成", Boolean.TRUE), + SHOP_SUB_STAGE_STATUS_93(ShopSubStageEnum.SHOP_STAGE_9, 930, "已完成", Boolean.TRUE), //施工阶段 SHOP_SUB_STAGE_STATUS_111(ShopSubStageEnum.SHOP_STAGE_11, 1110, "施工中", Boolean.FALSE), diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/DecorationDesignInfoDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/DecorationDesignInfoDAO.java index cf9b9b70c..7a33d4e82 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/DecorationDesignInfoDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/DecorationDesignInfoDAO.java @@ -17,13 +17,28 @@ public class DecorationDesignInfoDAO { @Resource DecorationDesignInfoMapper decorationDesignInfoMapper; - private DecorationDesignInfoDO getById(Long id){ + public DecorationDesignInfoDO getById(Long id){ if(id == null){ return null; } return decorationDesignInfoMapper.selectByPrimaryKey(id); } + public Integer insertSelective(DecorationDesignInfoDO decorationDesignInfoDO){ + return decorationDesignInfoMapper.insertSelective(decorationDesignInfoDO); + } + + public Integer updateByPrimaryKey(DecorationDesignInfoDO decorationDesignInfoDO){ + return decorationDesignInfoMapper.updateByPrimaryKey(decorationDesignInfoDO); + } + + public DecorationDesignInfoDO getByShopId(Long shopId){ + if(shopId == null){ + return null; + } + return decorationDesignInfoMapper.selectByShopId(shopId); + } + diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/DecorationDesignInfoMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/DecorationDesignInfoMapper.java index d80cd5400..516fdab4c 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/DecorationDesignInfoMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/DecorationDesignInfoMapper.java @@ -4,4 +4,13 @@ import com.cool.store.entity.DecorationDesignInfoDO; import tk.mybatis.mapper.common.Mapper; public interface DecorationDesignInfoMapper extends Mapper { + + + /** + * 查询店铺的设计数据 + * @param shopId + * @return + */ + DecorationDesignInfoDO selectByShopId(Long shopId); + } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/DecorationDesignInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/DecorationDesignInfoMapper.xml index cf4b1bc40..cc6a7a97a 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/DecorationDesignInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/DecorationDesignInfoMapper.xml @@ -15,4 +15,16 @@ + + + + + + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/QualificationsInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/QualificationsInfoMapper.xml index 2915c664c..ca7507ccf 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/QualificationsInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/QualificationsInfoMapper.xml @@ -72,6 +72,7 @@ business_leader_mobile, financial_manager_name, financial_manager_mobile, + business_license, #{request.auditId}, @@ -103,6 +104,7 @@ #{request.businessLeaderMobile}, #{request.financialManagerName}, #{request.financialManagerMobile}, + #{request.businessLicense}, ON DUPLICATE KEY UPDATE @@ -135,6 +137,7 @@ business_leader_mobile = #{request.businessLeaderMobile}, financial_manager_name = #{request.financialManagerName}, financial_manager_mobile = #{request.financialManagerMobile}, + business_license = #{request.businessLicense}, diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/QualificationsInfoDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/QualificationsInfoDO.java index 1fa122784..ba6394484 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/QualificationsInfoDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/QualificationsInfoDO.java @@ -1,5 +1,6 @@ package com.cool.store.entity; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; @@ -203,5 +204,8 @@ public class QualificationsInfoDO { */ private Boolean deleted; + @Column(name = "business_license") + private String businessLicense; + } \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/DecorationDesignRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/DecorationDesignRequest.java new file mode 100644 index 000000000..9efe25810 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/DecorationDesignRequest.java @@ -0,0 +1,56 @@ +package com.cool.store.request; + +import com.cool.store.entity.DecorationDesignInfoDO; +import lombok.Data; + +import javax.persistence.Column; +import java.util.Date; + +/** + * @Author suzhuhong + * @Date 2024/6/25 11:19 + * @Version 1.0 + */ +@Data +public class DecorationDesignRequest { + + @Column(name = "shop_id") + private Long shopId; + + /** + * 报价单 + */ + @Column(name = "quotation_url") + private String quotationUrl; + + /** + * 设计图 + */ + @Column(name = "design_url") + private String designUrl; + + /** + * 备注 + */ + private String remark; + + /** + * 加密商验收签名 {"pic":"","acceptanceTime":"","result":"","remark":"","status":0} + */ + @Column(name = "partner_acceptance_signatures") + private String partnerAcceptanceSignatures; + + + + public DecorationDesignInfoDO toDecorationDesignInfoDO() { + DecorationDesignInfoDO decorationDesignInfoDO = new DecorationDesignInfoDO(); + decorationDesignInfoDO.setDesignUrl(this.designUrl); + decorationDesignInfoDO.setShopId(this.shopId); + decorationDesignInfoDO.setRemark(this.remark); + decorationDesignInfoDO.setQuotationUrl(this.quotationUrl); + decorationDesignInfoDO.setPartnerAcceptanceSignatures(this.partnerAcceptanceSignatures); + decorationDesignInfoDO.setUpdateTime(new Date()); + return decorationDesignInfoDO; + } + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/JoinIntentionRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/JoinIntentionRequest.java index 18eeb6fce..bf6b54406 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/JoinIntentionRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/JoinIntentionRequest.java @@ -84,6 +84,8 @@ public class JoinIntentionRequest { private String financialManagerName; @ApiModelProperty("业务负责人联系方式") private String financialManagerMobile; + @ApiModelProperty("营业执照") + private String businessLicense; public LineInfoDO toLineInfoDO() { LineInfoDO lineInfoDO = new LineInfoDO(); @@ -131,6 +133,7 @@ public class JoinIntentionRequest { qualificationsInfoDO.setBusinessLeaderMobile(this.businessLeaderMobile); qualificationsInfoDO.setFinancialManagerName(this.financialManagerName); qualificationsInfoDO.setFinancialManagerMobile(this.financialManagerMobile); + qualificationsInfoDO.setBusinessLicense(this.businessLicense); return qualificationsInfoDO; } } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/DecorationDesignVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/DecorationDesignVO.java new file mode 100644 index 000000000..e939bc24a --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/DecorationDesignVO.java @@ -0,0 +1,51 @@ +package com.cool.store.vo; + +import lombok.Data; + +import javax.persistence.Column; +import java.util.Date; + +/** + * @Author suzhuhong + * @Date 2024/6/25 14:03 + * @Version 1.0 + */ +@Data +public class DecorationDesignVO { + + /** + * xfsg_shop_info.id + */ + @Column(name = "shop_id") + private Long shopId; + + /** + * 报价单 + */ + @Column(name = "quotation_url") + private String quotationUrl; + + /** + * 设计图 + */ + @Column(name = "design_url") + private String designUrl; + + /** + * 备注 + */ + private String remark; + + /** + * 加密商验收签名 {"pic":"","acceptanceTime":"","result":"","remark":"","status":0} + */ + @Column(name = "partner_acceptance_signatures") + private String partnerAcceptanceSignatures; + + /** + * 创建时间 + */ + @Column(name = "create_time") + private Date createTime; + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/DecorationService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/DecorationService.java index 8288c8164..600ac5cfa 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/DecorationService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/DecorationService.java @@ -8,6 +8,7 @@ import com.cool.store.request.*; import com.cool.store.response.ThreeSignResponse; +import com.cool.store.vo.DecorationDesignVO; import com.cool.store.vo.Fitment.DecorationStageVO; import com.cool.store.vo.Fitment.DesignInfoVo; import com.cool.store.vo.LinePayVO; @@ -117,4 +118,36 @@ public interface DecorationService { * @description:三方获取验收列表详情 */ fitmentCheckVO getAcceptanceDetail(Long shopId, LoginUserInfo user); + + + /** + * 提交设计数据 + * @param request + * @param user + * @return + */ + Boolean submitDecorationDesign(DecorationDesignRequest request, LoginUserInfo user); + + /** + * 获取设计数据 + * @param shopId + * @return + */ + DecorationDesignVO getDecorationDesign(Long shopId); + + /** + * 确认设计数据方案 + * @param request + * @param user + * @return + */ + Boolean confirmDesign(DecorationDesignRequest request, LoginUserInfo user); + + /** + * 装修阶段确认完成 + * @param shopId + * @param user + * @return + */ + Boolean confirmComplete(Long shopId, 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 4e3d8473e..b842bd0d6 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 @@ -22,14 +22,12 @@ import com.cool.store.request.*; import com.cool.store.response.ThreeSignResponse; import com.cool.store.service.*; import com.cool.store.utils.CoolDateUtils; +import com.cool.store.utils.RedisUtilPool; import com.cool.store.utils.poi.StringUtils; -import com.cool.store.vo.AssessmentTemplateVO; +import com.cool.store.vo.*; import com.cool.store.vo.Fitment.DecorationStageVO; import com.cool.store.vo.Fitment.DesignInfoVo; -import com.cool.store.vo.LinePayVO; -import com.cool.store.vo.PartnerUserInfoVO; -import com.cool.store.vo.fitmentCheckVO; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.apache.commons.collections4.CollectionUtils; @@ -97,53 +95,14 @@ public class DecorationServiceImpl implements DecorationService { private CommonService commonService; @Resource private AssessmentTemplateService assessmentTemplateService; + @Resource + RedisUtilPool redisUtilPool; + @Resource + DecorationDesignInfoDAO decorationDesignInfoDAO; @Override public DesignInfoVo DesignInfo(Long shopId) { - DecorationDTO decoration = getDecorationDTO(shopId); - if (decoration == null) { - log.error("拉取云立方接口获取数据为空"); - return null; - } - Long flag; - DesignInfoVo designInfoVo = new DesignInfoVo(); - //平面图和施工 - List designScheme = decoration.getDesignScheme(); - long count = designScheme.stream().filter(design -> DesignPhaseEnum.DESIGN_PHASE_ACCEPTANCE_PASS.getCode().equals(design.getStatus())).count(); - flag = count; - designInfoVo.setDesignScheme(designScheme); - List constructionSchedule = decoration.getConstructionSchedule(); - if (CollectionUtils.isNotEmpty(constructionSchedule)) { - Map constructionScheduleMap = constructionSchedule.stream().collect(Collectors.toMap(ConstructionScheduleDTO::getName, - Function.identity(), (a, b) -> b)); - if (CollectionUtils.isNotEmpty(constructionSchedule)) { - //量房 - ConstructionScheduleDTO measuringRoom = constructionScheduleMap.get(CommonConstants.MEASURING_THE_ROOM); - if (Objects.nonNull(measuringRoom)) { - designInfoVo.setMeasuringRoom(measuringRoom); - if (ConstructionPhaseEnum.construction_FINSH.getCode().equals(measuringRoom.getState())) { - flag++; - } - } - } - } - //获取最新预算 - BudgetDTO proposedBookBudget = getBudgetDTOS(decoration); - if (Objects.nonNull(proposedBookBudget)) { - designInfoVo.setProposedBookBudget(proposedBookBudget); - flag++; - } - if (flag == CommonConstants.FOUR) { - //如果设计阶段进行中 - ShopStageInfoDO shopSubStageInfo = shopStageInfoDAO.getShopSubStageInfo(shopId, ShopSubStageEnum.SHOP_STAGE_9); - if (ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_90.getShopSubStageStatus().equals(shopSubStageInfo.getShopSubStageStatus())) { - //更新设计阶段状态完成//初始化装修款阶段 - shopStageInfoDAO.batchUpdateShopStageStatus(shopId, Arrays.asList(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_91)); - LineInfoDO lineInfo = lineInfoMapper.getByLineId(shopSubStageInfo.getLineId()); - commonService.sendSms(lineInfo.getMobile(), SMSMsgEnum.DECORATION_MODEL_PAY, null); - } - } - return designInfoVo; + return null; } @Override @@ -318,41 +277,18 @@ public class DecorationServiceImpl implements DecorationService { //如果完成更新施工阶段状态 - if (ConstructionPhaseEnum.construction_FINSH.getCode().equals(constructionSage.getState())) { - shopStageInfoDAO.updateShopStageInfo(shopId, ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_112); - } else { - shopStageInfoDAO.updateShopStageInfo(shopId, ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_111); - } +// if (ConstructionPhaseEnum.construction_FINSH.getCode().equals(constructionSage.getState())) { +// shopStageInfoDAO.updateShopStageInfo(shopId, ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_112); +// } else { +// shopStageInfoDAO.updateShopStageInfo(shopId, ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_111); +// } return collect; } @Transactional(rollbackFor = Exception.class) @Override public ConstructionScheduleDTO getConstructionInfo(Long shopId) { - DecorationDTO decoration = getDecorationDTO(shopId); - if (decoration == null) { - log.error("DecorationModel storeNum is null"); - return null; - } - List constructionSchedule = decoration.getConstructionSchedule(); - Map constructionScheduleMap = constructionSchedule.stream().collect(Collectors.toMap(ConstructionScheduleDTO::getName, - dto -> dto)); - ConstructionScheduleDTO constructionScheduleDTO = constructionScheduleMap.get(CommonConstants.CONSTRUCTION_PHASE); - //如果完成更新阶段状态 - if (ConstructionPhaseEnum.construction_FINSH.getCode().equals(constructionScheduleMap.get(CommonConstants.CONSTRUCTION_PHASE).getState())) { - shopStageInfoDAO.updateShopStageInfo(shopId, ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_112); - ShopStageInfoDO shopSubStageInfo = shopStageInfoDAO.getShopSubStageInfo(shopId, ShopSubStageEnum.SHOP_STAGE_11); - shopSubStageInfo.setPlanCompleteTime(constructionScheduleDTO.getPlanEndDate()); - shopSubStageInfo.setActualCompleteTime(constructionScheduleDTO.getActualEndDate()); - shopStageInfoDAO.updateByShopId(shopSubStageInfo); - } else { - shopStageInfoDAO.updateShopStageInfo(shopId, ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_111); - ShopStageInfoDO shopSubStageInfo = shopStageInfoDAO.getShopSubStageInfo(shopId, ShopSubStageEnum.SHOP_STAGE_11); - shopSubStageInfo.setPlanCompleteTime(constructionScheduleDTO.getPlanEndDate()); - shopSubStageInfo.setActualCompleteTime(constructionScheduleDTO.getActualEndDate()); - shopStageInfoDAO.updateByShopId(shopSubStageInfo); - } - return constructionScheduleDTO; + return null; } @Override @@ -582,6 +518,85 @@ public class DecorationServiceImpl implements DecorationService { return fitmentCheckVO; } + @Override + public Boolean submitDecorationDesign(DecorationDesignRequest request, LoginUserInfo user) { + //重复提交校验 3秒内不能重复提交 + String lockKey = "submitDecorationDesign:" + request.getShopId(); + String lockValue = UUID.randomUUID().toString(); + boolean acquired = redisUtilPool.setNxExpire(lockKey, lockValue, CommonConstants.THREE*CommonConstants.ONE_SECONDS); + if (!acquired){ + throw new ServiceException(ErrorCodeEnum.DUPLICATE_SUBMISSION); + } + //校验参数 + if (Objects.isNull(request)||request.getShopId()==null){ + throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); + } + //必须是待提交状态才能提交 + ShopStageInfoDO shopStageInfo = shopStageInfoDAO.getByShopIdAndSubStage(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_90.getShopSubStageStatus()); + if (Objects.isNull(shopStageInfo)) { + throw new ServiceException(ErrorCodeEnum.STATUS_NOT_SUPPORT_SUMMIT); + } + DecorationDesignInfoDO decorationDesignInfoDO = request.toDecorationDesignInfoDO(); + DecorationDesignInfoDO decoration = decorationDesignInfoDAO.getByShopId(request.getShopId()); + if (Objects.nonNull(decoration)){ + decorationDesignInfoDO.setId(decoration.getId()); + decorationDesignInfoDAO.updateByPrimaryKey(decorationDesignInfoDO); + }else { + decorationDesignInfoDAO.insertSelective(decorationDesignInfoDO); + } + //更新装修设计状态 + shopStageInfoDAO.updateShopStageInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_92); + return Boolean.TRUE; + } + + @Override + public DecorationDesignVO getDecorationDesign(Long shopId) { + if (shopId==null){ + throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); + } + DecorationDesignInfoDO decoration = decorationDesignInfoDAO.getByShopId(shopId); + if (!Objects.isNull(decoration)){ + DecorationDesignVO decorationDesignVO = new DecorationDesignVO(); + decorationDesignVO.setDesignUrl(decoration.getDesignUrl()); + decorationDesignVO.setRemark(decoration.getRemark()); + decorationDesignVO.setQuotationUrl(decoration.getQuotationUrl()); + decorationDesignVO.setShopId(decoration.getShopId()); + decorationDesignVO.setPartnerAcceptanceSignatures(decoration.getPartnerAcceptanceSignatures()); + return decorationDesignVO; + } + return null; + } + + @Override + public Boolean confirmDesign(DecorationDesignRequest request, LoginUserInfo user) { + //重复提交校验 3秒内不能重复提交 + String lockKey = "confirmDesign:" + request.getShopId(); + String lockValue = UUID.randomUUID().toString(); + boolean acquired = redisUtilPool.setNxExpire(lockKey, lockValue, CommonConstants.THREE*CommonConstants.ONE_SECONDS); + if (!acquired){ + throw new ServiceException(ErrorCodeEnum.DUPLICATE_SUBMISSION); + } + DecorationDesignInfoDO decorationDesignInfoDO = request.toDecorationDesignInfoDO(); + DecorationDesignInfoDO decoration = decorationDesignInfoDAO.getByShopId(request.getShopId()); + if (Objects.nonNull(decoration)){ + decorationDesignInfoDO.setId(decoration.getId()); + decorationDesignInfoDAO.updateByPrimaryKey(decorationDesignInfoDO); + } + //更新装修设计状态 + shopStageInfoDAO.batchUpdateShopStageStatus(request.getShopId(), Arrays.asList(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_93, ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_111)); + return Boolean.TRUE; + } + + @Override + public Boolean confirmComplete(Long shopId, LoginUserInfo user) { + ShopStageInfoDO shopStageInfoDO = shopStageInfoDAO.getByShopIdAndSubStage(shopId, ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_93.getShopSubStageStatus()); + if (Objects.isNull(shopStageInfoDO)){ + throw new ServiceException(ErrorCodeEnum.DESIGN_NO_COMPLETE); + } + shopStageInfoDAO.batchUpdateShopStageStatus(shopId, Arrays.asList(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_112, ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_120)); + return Boolean.TRUE; + } + @Transactional(rollbackFor = Exception.class) @Override public Boolean pcSubmitAcceptanceSign(ThreeAcceptanceRequest request) { diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PreparationServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PreparationServiceImpl.java index 4fd670dc3..dda260d50 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PreparationServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PreparationServiceImpl.java @@ -191,26 +191,14 @@ public class PreparationServiceImpl implements PreparationService { List shopStageInfo = shopStageInfoDAO.getShopStageInfo(shopId, null); if (CollectionUtils.isNotEmpty(shopStageInfo)) { Map shopStageInfoDOMap = shopStageInfo.stream().collect(Collectors.toMap(ShopStageInfoDO::getShopSubStage, data -> data)); - Boolean buildStoreCompletionFlag = Boolean.TRUE; Boolean contractCompletionFlag = ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_84.getShopSubStageStatus().equals(shopStageInfoDOMap.get(ShopSubStageEnum.SHOP_STAGE_8.getShopSubStage()).getShopSubStageStatus()); //都完成了 初始化后续流程数据 - if (buildStoreCompletionFlag && contractCompletionFlag) { + if (contractCompletionFlag) { //初始化后续流程数据 设计阶段 装修阶段 开业运营方案 首批订货清单 List list = new ArrayList<>(); ShopStageInfoDO data1 = shopStageInfoDOMap.get(ShopSubStageEnum.SHOP_STAGE_9.getShopSubStage()); data1.setShopSubStageStatus(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_90.getShopSubStageStatus()); list.add(data1); -// ShopStageInfoDO data2 = shopStageInfoDOMap.get(ShopSubStageEnum.SHOP_STAGE_11.getShopSubStage()); -// data2.setShopSubStageStatus(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_110.getShopSubStageStatus()); -// list.add(data2); - //初始化xfsg_acceptance_info表 -// AcceptanceInfoDO acceptanceInfoDO1 = acceptanceInfoDAO.selectByShopId(shopId); -// AcceptanceInfoDO acceptanceInfoDO = new AcceptanceInfoDO(); -// acceptanceInfoDO.setShopId(shopId); -// acceptanceInfoDO.setCreateTime(new Date()); -// if(Objects.isNull(acceptanceInfoDO1)) { -// acceptanceInfoDAO.insertSelectiveAcceptanceInfo(acceptanceInfoDO); -// } ShopStageInfoDO data3 = shopStageInfoDOMap.get(ShopSubStageEnum.SHOP_STAGE_14.getShopSubStage()); data3.setShopSubStageStatus(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_140.getShopSubStageStatus()); list.add(data3); @@ -234,25 +222,7 @@ public class PreparationServiceImpl implements PreparationService { @Override public Boolean decorationFlush(Long shopId) { - List shopStageInfo = shopStageInfoDAO.getShopStageInfo(shopId, ShopStageEnum.SHOP_STAGE_2.getShopStage()); - Map collect = shopStageInfo.stream().collect(Collectors.toMap(ShopStageInfoDO::getShopSubStage, Function.identity())); - //设计 - Boolean flushFlag = Boolean.FALSE; - Integer Status900 = ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_90.getShopSubStageStatus(); - Integer Design = collect.get(ShopSubStageEnum.SHOP_STAGE_9.getShopSubStage()).getShopSubStageStatus(); - if (Status900.equals(Design)) { - decorationService.DesignInfo(shopId); - flushFlag = Boolean.TRUE; - } - //装修款 - Integer Status1000 = 1000; - Integer Status1010 = 1010; - Integer DecorationModel = collect.get(100).getShopSubStageStatus(); - if (Status1000.equals(DecorationModel) || Status1010.equals(DecorationModel)) { - decorationService.getDecorationModel(shopId, null); - flushFlag = Boolean.TRUE; - } - return flushFlag; + return Boolean.TRUE; } 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 92727d3fa..0b45d967d 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 @@ -123,4 +123,16 @@ public class PCDecorationController { return ResponseResult.success(seeAcceptanceService.auditSeeAcceptance(request,user)); } + + @ApiOperation("提交设计方案") + @PostMapping("/submitDecorationDesign") + public ResponseResult submitBookingAcceptance(@RequestBody DecorationDesignRequest request){ + return ResponseResult.success(decorationService.submitDecorationDesign(request,CurrentUserHolder.getUser())); + } + + @ApiOperation("装修阶段完成") + @PostMapping("/confirmComplete") + public ResponseResult confirmComplete(@RequestParam Long shopId){ + return ResponseResult.success(decorationService.confirmComplete(shopId,CurrentUserHolder.getUser())); + } } 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 a115a439f..c098665ca 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 @@ -1,10 +1,12 @@ package com.cool.store.controller.webc; +import com.cool.store.context.CurrentUserHolder; 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.DecorationDesignRequest; import com.cool.store.request.LinePaySubmitRequest; import com.cool.store.request.ThreeAcceptanceCheckRequest; import com.cool.store.request.ThreeAcceptanceRequest; @@ -15,6 +17,7 @@ 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.DecorationDesignVO; import com.cool.store.vo.Fitment.DecorationStageVO; import com.cool.store.vo.Fitment.DesignInfoVo; @@ -112,4 +115,18 @@ public class MiniDecorationController { public ResponseResult< List > getAuditInfo(@RequestParam Long shopId){ return ResponseResult.success(seeAcceptanceService.getAuditInfo(shopId)); } + + @ApiOperation("查询设计方案") + @GetMapping("/getDecorationDesign") + public ResponseResult getDecorationDesign(@RequestParam Long shopId){ + return ResponseResult.success(decorationService.getDecorationDesign(shopId)); + } + + @ApiOperation("加盟商确定设计方案") + @GetMapping("/confirmDesign") + public ResponseResult confirmDesign(@RequestParam DecorationDesignRequest shopId){ + return ResponseResult.success(decorationService.confirmDesign(shopId,CurrentUserHolder.getUser())); + } + + } diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/TestController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/TestController.java index 93c5334b1..6b9dacf93 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/TestController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/TestController.java @@ -187,24 +187,9 @@ public class TestController { xxlJobHandler.updateEntryTime(); return ResponseResult.success(); } - @GetMapping("/fitmentAcceptanceHandler") - public ResponseResult fitmentAcceptanceHandler(){ - xxlJobHandler.fitmentAcceptanceHandler(); - return ResponseResult.success(); - } @GetMapping("/threeAcceptanceBookingMessage") public ResponseResult threeAcceptanceBookingMessage(){ xxlJobHandler.threeAcceptanceBookingMessage(); return ResponseResult.success(); } - @GetMapping("/threeAcceptanceMessage") - public ResponseResult threeAcceptanceMessage(){ - xxlJobHandler.threeAcceptanceMessage(); - return ResponseResult.success(); - } - @GetMapping("/waitThreeAcceptanceMessage") - public ResponseResult waitThreeAcceptanceMessage(){ - xxlJobHandler.waitThreeAcceptanceMessage(); - return ResponseResult.success(); - } } diff --git a/coolstore-partner-web/src/main/java/com/cool/store/job/XxlJobHandler.java b/coolstore-partner-web/src/main/java/com/cool/store/job/XxlJobHandler.java index 35673ad23..1bc522c08 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/job/XxlJobHandler.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/job/XxlJobHandler.java @@ -135,44 +135,6 @@ public class XxlJobHandler { XxlJobHelper.handleSuccess(); } - /** - * @Auther: wangshuo - * @Date: 2024/4/29 - * @description: 每天更新装修阶段进场时间等,至预约状态 - */ - @XxlJob("fitmentAcceptanceHandler") - public void fitmentAcceptanceHandler() { - log.info("----定时任务每天更新至预约状态----"); - boolean hasNext = true; - int pageNum = 1; - int pageSize = 50; - while (hasNext) { - PageHelper.startPage(pageNum, pageSize); - //获取表中的三方验收状态为-100状态和进场时间不为空的 - List acceptanceInfoDOS = acceptanceInfoDAO.selectAcceptanceInfoBySignatures(ShopSubStageEnum.SHOP_STAGE_12.getShopSubStage(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_00.getShopSubStageStatus()); - if (CollectionUtils.isEmpty(acceptanceInfoDOS)) { - log.info("------定时任务结束每天更新至预约状态结束------"); - return; - } - List shopIds = new ArrayList<>(); - for (AcceptanceInfoDO acceptanceInfoDO : acceptanceInfoDOS) { - Long shopId = acceptanceInfoDO.getShopId(); - Date actualEntryTime = acceptanceInfoDO.getActualEntryTime(); - LocalDate plusFDays = DateUtils.getPlusFDays(actualEntryTime, CommonConstants.FOUR); - //小于等于当前时间 - if (plusFDays.isEqual(LocalDate.now()) || plusFDays.isBefore(LocalDate.now())) { - //三方验收待预约 - shopIds.add(shopId); - - } - } - shopStageInfoDAO.batchUpdateShopStageStatus(shopIds, ShopSubStageEnum.SHOP_STAGE_12.getShopSubStage(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_120.getShopSubStageStatus()); - hasNext = acceptanceInfoDOS.size() >= pageSize; - pageNum++; - } - log.info("------定时任务结束调用鲜丰获取进场时间结束------"); - XxlJobHelper.handleSuccess(); - } /** * @Auther: wangshuo @@ -226,172 +188,6 @@ public class XxlJobHandler { } } - /** - * @Auther: wangshuo - * @Date: 2024/5/7 - * @description:三方验收预约短信通知,进场时间+7天的18:00,发送短信到加盟商, - */ - @XxlJob("threeAcceptanceMessage") - public void threeAcceptanceMessage() { - log.info("------定时任务三方验收待验收的短信通知-----"); - boolean hasNext = true; - int pageNum = 1; - int pageSize = 50; - while (hasNext) { - PageHelper.startPage(pageNum, pageSize); - //获取待验收的 - List acceptanceInfoDOS = acceptanceInfoDAO - .selectAcceptanceInfoBySignatures(ShopSubStageEnum.SHOP_STAGE_12.getShopSubStage(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_121.getShopSubStageStatus()); - if (CollectionUtils.isEmpty(acceptanceInfoDOS)) { - log.info("------定时任务结束三方验收待验收的短信通知------"); - return; - } - for (AcceptanceInfoDO acceptanceInfoDO : acceptanceInfoDOS) { - int flag = CommonConstants.ZERO; - while (flag < CommonConstants.TWO) { - try { - Date approach = acceptanceInfoDO.getActualEntryTime(); - if (Objects.nonNull(approach)) { - LocalDate plusFDays = DateUtils.getPlusFDays(approach, CommonConstants.SIX);//7 day - if (plusFDays.equals(LocalDate.now())) { - //三方验收带预约 - ShopInfoDO shopInfo = shopInfoDAO.getShopInfo(acceptanceInfoDO.getShopId()); - //加盟商手机号 - Long lineId = shopInfo.getLineId(); - LineInfoDO lineInfo = lineInfoDAO.getLineInfo(lineId); - if (Objects.isNull(lineInfo) && StringUtils.isNull(lineInfo.getMobile())) { - log.error("定时任务三方验收待验收的短信通知:加盟商手机号为空,shopId:#{}", acceptanceInfoDO.getShopId()); - break; - } - EnterpriseUserDO supervisor = userAuthMappingService - .getUserByRoleEnumAndRegionId(UserRoleEnum.ENGINEER_DEP_SUPERVISOR, shopInfo.getRegionId()); - if (Objects.isNull(supervisor)) { - log.error("该区域没有工程部监理,RegionId:{}", shopInfo.getRegionId()); - break; - } - //获取计划撤场时间 - Date planExitTime = acceptanceInfoDO.getPlanExitTime(); - //获取施工阶段计划完成时间 - Date decorationEndTime = acceptanceInfoDO.getDecorationPlannedCompletionTime(); - //获取计划验收时间 - String planAcceptanceTime = CoolDateUtils.DateFormat(acceptanceInfoDO.getPlanAcceptanceTime(), CoolDateUtils.DATE_FORMAT_SEC); - if (StringUtils.isBlank(planAcceptanceTime)) { - planAcceptanceTime = ""; - } - //区域监理手机号 - Boolean f = Boolean.TRUE; - String mobile = supervisor.getMobile(); - String supervisionName = supervisor.getName(); - - Map messageMap = new HashMap<>(); - if (Objects.nonNull(planExitTime)) { - String date = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, planExitTime); - messageMap.put("demolitionPlanTime", date); - } else { - if (Objects.nonNull(decorationEndTime)) { - String date = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, decorationEndTime); - messageMap.put("demolitionPlanTime", date); - } - } - messageMap.put("palnAcceptanceTime", planAcceptanceTime); - messageMap.put("supervisionName", supervisionName); - messageMap.put("supervisionMobile", mobile); - commonService.sendSms(lineInfo.getMobile(), SMSMsgEnum.THREE_ACCEPTANCE_WAIT, messageMap); - } - } - break; - } catch (Exception e) { - log.error("定时任务三方验收待验收的短信通知失败 shopId:{},e:{}", acceptanceInfoDO.getShopId(), e.getMessage()); - flag++; - } - } - - } - hasNext = acceptanceInfoDOS.size() >= pageSize; - pageNum++; - } - XxlJobHelper.handleSuccess(); - } - - /** - * @Auther: wangshuo - * @Date: 2024/5/7 - * @description:实际进场时间+7天,发送钉钉通知到督导 - */ - @XxlJob("waitThreeAcceptanceMessage") - public void waitThreeAcceptanceMessage() { - log.info("------定时任务三方待验收钉钉通知-----"); - boolean hasNext = true; - int pageNum = 1; - int pageSize = 50; - while (hasNext) { - PageHelper.startPage(pageNum, pageSize); - //获取待验收的 - List acceptanceInfoDOS = acceptanceInfoDAO - .selectAcceptanceInfoBySignatures(ShopSubStageEnum.SHOP_STAGE_12.getShopSubStage(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_121.getShopSubStageStatus()); - if (CollectionUtils.isEmpty(acceptanceInfoDOS)) { - log.info("------定时任务结束三方待验收钉钉通知------"); - return; - } - List shopIds = acceptanceInfoDOS.stream().filter(o -> o.getShopId() != null) - .map(AcceptanceInfoDO::getShopId).collect(Collectors.toList()); - List shopListByIds = shopInfoDAO.getShopListByIds(shopIds); - Map shopIdMap = shopListByIds.stream().filter(o -> o.getId() != null) - .collect(Collectors.toMap(ShopInfoDO::getId, Function.identity())); - for (AcceptanceInfoDO acceptance : acceptanceInfoDOS) { - //进场时间 - Date approach = acceptance.getActualEntryTime(); - Long shopId = acceptance.getShopId(); - if (Objects.nonNull(approach)) { - LocalDate plusFDays = DateUtils.getPlusFDays(approach, CommonConstants.SIX);//7天 - if (plusFDays.equals(LocalDate.now())) { - ShopInfoDO shopInfoDO = shopIdMap.get(shopId); - if (StringUtils.isBlank(shopInfoDO.getSupervisorUserId())) { - log.error("定时任务三方待验收钉钉通知,督导id为空,shopId:{}", shopId); - } - Long lineId = shopInfoDO.getLineId(); - LineInfoDO lineInfo = lineInfoDAO.getLineInfo(lineId); - Map messageMap = new HashMap<>(); - messageMap.put("storeName", shopInfoDO.getShopName()); - messageMap.put("partnerUsername", lineInfo.getUsername()); - messageMap.put("partnerMobile", lineInfo.getMobile()); - commonService.sendMessage(Arrays.asList(shopInfoDO.getSupervisorUserId()), MessageEnum.MESSAGE_25, messageMap); - - } - } - } - hasNext = acceptanceInfoDOS.size() >= pageSize; - pageNum++; - } - XxlJobHelper.handleSuccess(); - } - - @XxlJob("interviewRemind") - public void interviewRemind() { - log.info("------面试提醒------"); - String startTime = LocalDateTime.now().plusHours(1).minusMinutes(CommonConstants.FIVE).format(DateTimeFormatter.ofPattern(CoolDateUtils.DATE_FORMAT_SEC)); - String endTime = LocalDateTime.now().plusHours(1).plusMinutes(CommonConstants.FIVE).format(DateTimeFormatter.ofPattern(CoolDateUtils.DATE_FORMAT_SEC)); - List interviewList = lineInterviewDAO.getInterviewRemindList(startTime, endTime); - if (CollectionUtils.isEmpty(interviewList)) { - log.info("------今日没有待更新数据------"); - return; - } - List lineIds = interviewList.stream().map(LineInterviewDO::getLineId).collect(Collectors.toList()); - Map lineMobileMap = lineInfoDAO.getLineMobileMap(lineIds); - for (LineInterviewDO interview : interviewList) { - Map templateParamMap = new HashMap<>(); - templateParamMap.put("interviewTime", DateUtil.format(interview.getStartTime(), "HH:mm")); - if (InterviewTypeEnum.INTERVIEW.getCode().equals(interview.getInterviewType())) { - commonService.sendSms(lineMobileMap.get(interview.getLineId()), SMSMsgEnum.FIRST_INTERVIEW_REMIND, templateParamMap); - } - if (InterviewTypeEnum.SECOND_INTERVIEW.getCode().equals(interview.getInterviewType())) { - commonService.sendSms(lineMobileMap.get(interview.getLineId()), SMSMsgEnum.SECOND_INTERVIEW_REMIND, templateParamMap); - } - } - XxlJobHelper.handleSuccess(); - } - - /** * 店铺新店开业状态更新 */