装修接口

This commit is contained in:
shuo.wang
2025-07-24 15:24:32 +08:00
parent fbae407c00
commit 34f46d97ee
29 changed files with 713 additions and 158 deletions

View File

@@ -1,9 +1,6 @@
package com.cool.store.service;
import com.cool.store.request.AssignDesignerRequest;
import com.cool.store.request.AssignQuotationRequest;
import com.cool.store.request.SubmitDesignDrawingRequest;
import com.cool.store.request.SubmitQuotationSheetRequest;
import com.cool.store.request.*;
/**
* @Author suzhuhong
@@ -38,4 +35,30 @@ public interface DecorationDesignInfoService {
* @description:上传最终报价单
*/
Boolean submitQuotationSheet(SubmitQuotationSheetRequest request);
/**
* @Auther: wangshuo
* @Date: 2025/7/23
* @description:施工派单
*/
Boolean submitConstructionOrder(ConstructionOrderRequest request);
/**
* @Auther: wangshuo
* @Date: 2025/7/24
* @description:实际进场确认
*/
Boolean entryConfirmation (EntryConfirmationRequest request);
/**
* @Auther: wangshuo
* @Date: 2025/7/24
* @description:施工完成
*/
Boolean constructionCompleted (ConstructionCompletedRequest request);
/**
* @Auther: wangshuo
* @Date: 2025/7/24
* @description: 装修验收
*/
Boolean decorationAcceptance(HqtDecorationAcceptanceRequest request);
}

View File

@@ -4,6 +4,7 @@ import com.cool.store.context.LoginUserInfo;
import com.cool.store.request.AssignSurveyorsRequest;
import com.cool.store.request.DecorationMeasureRequest;
import com.cool.store.request.SubmitMeasurementRequest;
import com.cool.store.response.MeasureResponse;
import com.cool.store.vo.DecorationMeasureVO;
public interface DecorationMeasureService {
@@ -44,4 +45,10 @@ public interface DecorationMeasureService {
* @description:门店测量、上传测量图
*/
Boolean submitMeasurementDiagram(SubmitMeasurementRequest request);
/**
* @Auther: wangshuo
* @Date: 2025/7/23
* @description:获取测量阶段数据
*/
MeasureResponse getMeasureData(Long shopId);
}

View File

@@ -7,6 +7,7 @@ import com.cool.store.dto.decoration.ThreeAcceptanceDTO;
import com.cool.store.request.*;
import com.cool.store.response.DecorationDesignResponse;
import com.cool.store.response.ThreeSignResponse;
import com.cool.store.vo.*;
import com.cool.store.vo.Fitment.DecorationStageVO;
@@ -130,7 +131,7 @@ public interface DecorationService {
* @param shopId
* @return
*/
DecorationDesignVO getDecorationDesign(Long shopId);
DecorationDesignResponse getDecorationDesign(Long shopId);
/**

View File

@@ -1,6 +1,9 @@
package com.cool.store.service;
import com.cool.store.request.ConfirmQuotationRequest;
import com.cool.store.request.HqtBuildRequest;
import com.cool.store.request.HqtPartnerAcceptanceRequest;
/**
* @Author: WangShuo
@@ -9,6 +12,23 @@ import com.cool.store.request.HqtBuildRequest;
* @注释:
*/
public interface HqtAPIService {
/**
* @Auther: wangshuo
* @Date: 2025/7/23
* @description:红圈通建店
*/
void pushHqtBuild(HqtBuildRequest request);
/**
* @Auther: wangshuo
* @Date: 2025/7/23
* @description: 加盟商确认报价单
*/
void confirmQuotation(ConfirmQuotationRequest request);
/**
* @Auther: wangshuo
* @Date: 2025/7/24
* @description: 加盟商验收、评价
*/
void hqtPartnerAcceptance(HqtPartnerAcceptanceRequest request);
}

View File

@@ -1,24 +1,21 @@
package com.cool.store.service.impl;
import com.cool.store.dao.DecorationDesignInfoDAO;
import com.cool.store.dao.ShopInfoDAO;
import com.cool.store.dao.ShopStageInfoDAO;
import com.cool.store.entity.DecorationDesignInfoDO;
import com.cool.store.entity.ShopInfoDO;
import com.cool.store.entity.ShopStageInfoDO;
import com.cool.store.dao.*;
import com.cool.store.entity.*;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.enums.SMSMsgEnum;
import com.cool.store.enums.point.ShopSubStageEnum;
import com.cool.store.enums.point.ShopSubStageStatusEnum;
import com.cool.store.exception.ServiceException;
import com.cool.store.request.AssignDesignerRequest;
import com.cool.store.request.AssignQuotationRequest;
import com.cool.store.request.SubmitDesignDrawingRequest;
import com.cool.store.request.SubmitQuotationSheetRequest;
import com.cool.store.request.*;
import com.cool.store.service.DecorationDesignInfoService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;
/**
@@ -29,36 +26,56 @@ import java.util.stream.Collectors;
@Service
public class DecorationDesignInfoServiceImpl implements DecorationDesignInfoService {
@Resource
private AcceptanceInfoDAO acceptanceInfoDAO;
@Resource
private CommonService commonService;
@Resource
private DecorationDesignInfoDAO decorationDesignInfoDAO;
@Resource
private ShopInfoDAO shopInfoDAO;
@Resource
private ShopStageInfoDAO shopStageInfoDAO;
@Resource
private LineInfoDAO lineInfoDAO;
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean assignDesigner(AssignDesignerRequest request) {
ShopInfoDO shopInfoDO = shopInfoDAO.getShopInfoByShopCode(request.getShopCode());
ShopStageInfoDO shopSubStageInfo = shopStageInfoDAO.getShopSubStageInfo(shopInfoDO.getId(), ShopSubStageEnum.SHOP_STAGE_9);
if (shopSubStageInfo.getShopSubStageStatus().equals(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_00.getShopSubStageStatus())){
throw new ServiceException(ErrorCodeEnum.SHOP_STAGE_NOT_OPERATE);
}
DecorationDesignInfoDO designInfoDO = decorationDesignInfoDAO.getByShopId(shopInfoDO.getId());
if (designInfoDO == null){
throw new ServiceException(ErrorCodeEnum.SHOP_STAGE_NOT_OPERATE);
if (designInfoDO == null) {
designInfoDO = new DecorationDesignInfoDO();
designInfoDO.setShopId(shopInfoDO.getId());
designInfoDO.setCreateTime(new Date());
}
designInfoDO.setDesignName(request.getDesignName());
designInfoDO.setDesignSubmitTime(new Date());
designInfoDO.setDesignSheetId(request.getDesignSheetId());
designInfoDO.setUpdateTime(new Date());
decorationDesignInfoDAO.updateByPrimaryKeySelective(designInfoDO);
ShopStageInfoDO shopSubStageInfo = shopStageInfoDAO.getShopSubStageInfo(shopInfoDO.getId(), ShopSubStageEnum.SHOP_STAGE_9);
if (shopSubStageInfo.getShopSubStageStatus().equals(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_90.getShopSubStageStatus())){
if (designInfoDO.getId() == null) {
decorationDesignInfoDAO.insertSelective(designInfoDO);
} else {
decorationDesignInfoDAO.updateByPrimaryKeySelective(designInfoDO);
}
if (shopSubStageInfo.getShopSubStageStatus().equals(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_90.getShopSubStageStatus())) {
shopStageInfoDAO.updateShopStageInfo(shopInfoDO.getId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_901);
}
return true;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean submitDesignDrawing(SubmitDesignDrawingRequest request) {
ShopInfoDO shopInfoDO = shopInfoDAO.getShopInfoByShopCode(request.getShopCode());
DecorationDesignInfoDO designInfoDO = decorationDesignInfoDAO.getByShopId(shopInfoDO.getId());
if (designInfoDO == null){
throw new ServiceException(ErrorCodeEnum.SHOP_STAGE_NOT_OPERATE);
if (designInfoDO == null) {
throw new ServiceException(ErrorCodeEnum.SHOP_STAGE_NOT_OPERATE);
}
designInfoDO.setDesignSheetId(request.getDesignSheetId());
designInfoDO.setDesignName(request.getDesignName());
@@ -66,20 +83,22 @@ public class DecorationDesignInfoServiceImpl implements DecorationDesignInfoServ
designInfoDO.setRenderingUrl(String.join(",", request.getRenderingUrl()));
designInfoDO.setFloorPlanUrl(String.join(",", request.getFloorPlanUrl()));
designInfoDO.setUpdateTime(new Date());
designInfoDO.setDesignSubmitTime(new Date());
decorationDesignInfoDAO.updateByPrimaryKeySelective(designInfoDO);
ShopStageInfoDO shopSubStageInfo = shopStageInfoDAO.getShopSubStageInfo(shopInfoDO.getId(), ShopSubStageEnum.SHOP_STAGE_9);
if (shopSubStageInfo.getShopSubStageStatus().equals(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_901.getShopSubStageStatus())){
if (shopSubStageInfo.getShopSubStageStatus().equals(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_901.getShopSubStageStatus())) {
shopStageInfoDAO.updateShopStageInfo(shopInfoDO.getId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_902);
}
return true;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean assignQuotation(AssignQuotationRequest request) {
ShopInfoDO shopInfoDO = shopInfoDAO.getShopInfoByShopCode(request.getShopCode());
DecorationDesignInfoDO designInfoDO = decorationDesignInfoDAO.getByShopId(shopInfoDO.getId());
if (designInfoDO == null){
throw new ServiceException(ErrorCodeEnum.SHOP_STAGE_NOT_OPERATE);
if (designInfoDO == null) {
throw new ServiceException(ErrorCodeEnum.SHOP_STAGE_NOT_OPERATE);
}
designInfoDO.setQuotationSheetId(request.getQuotationSheetId());
designInfoDO.setQuoter(request.getQuoter());
@@ -87,24 +106,113 @@ public class DecorationDesignInfoServiceImpl implements DecorationDesignInfoServ
designInfoDO.setUpdateTime(new Date());
decorationDesignInfoDAO.updateByPrimaryKeySelective(designInfoDO);
ShopStageInfoDO shopSubStageInfo = shopStageInfoDAO.getShopSubStageInfo(shopInfoDO.getId(), ShopSubStageEnum.SHOP_STAGE_9);
if (shopSubStageInfo.getShopSubStageStatus().equals(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_902.getShopSubStageStatus())){
if (shopSubStageInfo.getShopSubStageStatus().equals(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_902.getShopSubStageStatus())) {
shopStageInfoDAO.updateShopStageInfo(shopInfoDO.getId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_903);
}
return true;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean submitQuotationSheet(SubmitQuotationSheetRequest request) {
ShopInfoDO shopInfoDO = shopInfoDAO.getShopInfoByShopCode(request.getShopCode());
LineInfoDO lineInfoDO = lineInfoDAO.getLineInfo(shopInfoDO.getLineId());
DecorationDesignInfoDO designInfoDO = decorationDesignInfoDAO.getByShopId(shopInfoDO.getId());
if (designInfoDO == null){
throw new ServiceException(ErrorCodeEnum.SHOP_STAGE_NOT_OPERATE);
if (designInfoDO == null) {
throw new ServiceException(ErrorCodeEnum.SHOP_STAGE_NOT_OPERATE);
}
designInfoDO.setQuotationSheetId(request.getQuotationSheetId());
designInfoDO.setQuotationUrl(String.join(",", request.getQuotationSheetUrl()));
designInfoDO.setQuotationSubmitTime(new Date());
designInfoDO.setUpdateTime(new Date());
decorationDesignInfoDAO.updateByPrimaryKeySelective(designInfoDO);
ShopStageInfoDO shopSubStageInfo = shopStageInfoDAO.getShopSubStageInfo(shopInfoDO.getId(), ShopSubStageEnum.SHOP_STAGE_9);
if (shopSubStageInfo.getShopSubStageStatus().equals(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_903.getShopSubStageStatus())) {
shopStageInfoDAO.updateShopStageInfo(shopInfoDO.getId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_905);
Map<String, String> templateParam = new HashMap<>();
templateParam.put("shopName", shopInfoDO.getShopName());
commonService.sendSms(lineInfoDO.getMobile(), SMSMsgEnum.DESIGN_STAGE, templateParam);
}
return true;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean submitConstructionOrder(ConstructionOrderRequest request) {
ShopInfoDO shopInfoDO = shopInfoDAO.getShopInfoByShopCode(request.getShopCode());
DecorationDesignInfoDO designInfoDO = decorationDesignInfoDAO.getByShopId(shopInfoDO.getId());
if (designInfoDO == null) {
throw new ServiceException(ErrorCodeEnum.SHOP_STAGE_NOT_OPERATE);
}
designInfoDO.setConstructionOrderId(request.getConstructionOrderId());
designInfoDO.setConstructionPlanStartTime(request.getConstructionPlanStartTime());
designInfoDO.setConstructionPlanEndTime(request.getConstructionPlanEndTime());
decorationDesignInfoDAO.updateByPrimaryKeySelective(designInfoDO);
ShopStageInfoDO shopSubStageInfo = shopStageInfoDAO.getShopSubStageInfo(shopInfoDO.getId(), ShopSubStageEnum.SHOP_STAGE_11);
if (shopSubStageInfo.getShopSubStageStatus().equals(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_110.getShopSubStageStatus())) {
shopStageInfoDAO.updateShopStageInfo(shopInfoDO.getId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_110_5);
}
return true;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean entryConfirmation(EntryConfirmationRequest request) {
ShopInfoDO shopInfoDO = shopInfoDAO.getShopInfoByShopCode(request.getShopCode());
DecorationDesignInfoDO designInfoDO = decorationDesignInfoDAO.getByShopId(shopInfoDO.getId());
if (designInfoDO == null) {
throw new ServiceException(ErrorCodeEnum.SHOP_STAGE_NOT_OPERATE);
}
designInfoDO.setConstructionOrderId(request.getConstructionOrderId());
designInfoDO.setActualEntryTime(request.getActualEntryTime());
decorationDesignInfoDAO.updateByPrimaryKeySelective(designInfoDO);
ShopStageInfoDO shopSubStageInfo = shopStageInfoDAO.getShopSubStageInfo(shopInfoDO.getId(), ShopSubStageEnum.SHOP_STAGE_11);
if (shopSubStageInfo.getShopSubStageStatus().equals(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_110_5.getShopSubStageStatus())) {
shopStageInfoDAO.updateShopStageInfo(shopInfoDO.getId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_111);
}
return true;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean constructionCompleted(ConstructionCompletedRequest request) {
ShopInfoDO shopInfoDO = shopInfoDAO.getShopInfoByShopCode(request.getShopCode());
DecorationDesignInfoDO designInfoDO = decorationDesignInfoDAO.getByShopId(shopInfoDO.getId());
if (designInfoDO == null) {
throw new ServiceException(ErrorCodeEnum.SHOP_STAGE_NOT_OPERATE);
}
designInfoDO.setConstructionOrderId(request.getConstructionOrderId());
decorationDesignInfoDAO.updateByPrimaryKeySelective(designInfoDO);
ShopStageInfoDO shopSubStageInfo = shopStageInfoDAO.getShopSubStageInfo(shopInfoDO.getId(), ShopSubStageEnum.SHOP_STAGE_11);
if (shopSubStageInfo.getShopSubStageStatus().equals(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_111.getShopSubStageStatus())) {
shopStageInfoDAO.updateShopStageInfo(shopInfoDO.getId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_112);
}
return true;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean decorationAcceptance(HqtDecorationAcceptanceRequest request) {
ShopInfoDO shopInfoDO = shopInfoDAO.getShopInfoByShopCode(request.getShopCode());
ShopStageInfoDO shopSubStageInfo = shopStageInfoDAO.getShopSubStageInfo(shopInfoDO.getId(), ShopSubStageEnum.SHOP_STAGE_12);
if (!shopSubStageInfo.getShopSubStageStatus().equals(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_122.getShopSubStageStatus())
&& !shopSubStageInfo.getShopSubStageStatus().equals(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_123.getShopSubStageStatus())) {
throw new ServiceException(ErrorCodeEnum.SHOP_STAGE_NOT_OPERATE);
}
AcceptanceInfoDO acceptanceInfoDO = acceptanceInfoDAO.selectByShopId(shopInfoDO.getId());
acceptanceInfoDO.setDeliveryOrderId(request.getDeliveryOrderId());
acceptanceInfoDO.setActualAcceptanceTime(request.getActualAcceptanceTime());
acceptanceInfoDO.setAcceptanceAttachment(String.join(",", request.getAcceptanceAttachmentUrl()));
acceptanceInfoDO.setShopDoorwayPhoto(request.getShopDoorwayPhotoUrl());
acceptanceInfoDO.setShopInteriorPhoto(request.getShopInteriorPhotoUrl());
acceptanceInfoDO.setBackKitchenPhoto(request.getBackKitchenPhotoUrl());
acceptanceInfoDO.setAddReduceAmount(request.getAddReduceAmount());
acceptanceInfoDAO.updateAcceptanceInfo(acceptanceInfoDO);
if (shopSubStageInfo.getShopSubStageStatus().equals(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_122.getShopSubStageStatus())) {
shopStageInfoDAO.updateShopStageInfo(shopInfoDO.getId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_123);
}
return true;
}
}

View File

@@ -16,8 +16,10 @@ import com.cool.store.mapper.LineInfoMapper;
import com.cool.store.request.AssignSurveyorsRequest;
import com.cool.store.request.DecorationMeasureRequest;
import com.cool.store.request.SubmitMeasurementRequest;
import com.cool.store.response.MeasureResponse;
import com.cool.store.service.DecorationMeasureService;
import com.cool.store.utils.RedisUtilPool;
import com.cool.store.utils.poi.StringUtils;
import com.cool.store.vo.DecorationMeasureVO;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@@ -179,13 +181,14 @@ public class DecorationMeasureServiceImpl implements DecorationMeasureService {
public Boolean assignSurveyors(AssignSurveyorsRequest request) {
ShopInfoDO shopInfoDO = shopInfoDAO.getShopInfoByShopCode(request.getShopCode());
ShopStageInfoDO shopStageInfo = shopStageInfoDAO.getShopSubStageInfo(shopInfoDO.getId(), ShopSubStageEnum.SHOP_STAGE_8_6);
if (shopStageInfo.getShopSubStageStatus().equals(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_00.getShopSubStageStatus())){
if (shopStageInfo.getShopSubStageStatus().equals(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_00.getShopSubStageStatus())) {
throw new ServiceException(ErrorCodeEnum.SHOP_STAGE_NOT_OPERATE);
}
DecorationMeasureDO measureDAOByShopId = decorationMeasureDAO.getByShopId(shopInfoDO.getId());
if (measureDAOByShopId == null) {
measureDAOByShopId = new DecorationMeasureDO();
measureDAOByShopId.setDeleted(false);
measureDAOByShopId.setShopId(shopInfoDO.getId());
measureDAOByShopId.setCreateTime(new Date());
}
measureDAOByShopId.setShopId(shopInfoDO.getId());
@@ -200,12 +203,13 @@ public class DecorationMeasureServiceImpl implements DecorationMeasureService {
decorationMeasureDAO.updateByPrimaryKeySelective(measureDAOByShopId);
}
DecorationDesignInfoDO designInfoDO = decorationDesignInfoDAO.getByShopId(shopInfoDO.getId());
if (designInfoDO == null){
if (designInfoDO == null) {
designInfoDO = new DecorationDesignInfoDO();
designInfoDO.setShopId(shopInfoDO.getId());
designInfoDO.setCreateTime(new Date());
}
designInfoDO.setDesignLeaderName(request.getDesignLeaderName());
designInfoDO.setDesignSubmitTime(new Date());
designInfoDO.setUpdateTime(new Date());
if (designInfoDO.getId() == null) {
decorationDesignInfoDAO.insertSelective(designInfoDO);
@@ -233,4 +237,31 @@ public class DecorationMeasureServiceImpl implements DecorationMeasureService {
}
return true;
}
@Override
public MeasureResponse getMeasureData(Long shopId) {
MeasureResponse response = new MeasureResponse();
DecorationMeasureDO measureDAOByShopId = decorationMeasureDAO.getByShopId(shopId);
if (measureDAOByShopId == null) {
return response;
}
response.setMeasureUrl(measureDAOByShopId.getMeasureUrl());
if (StringUtils.isBlank(measureDAOByShopId.getMeasureUserName())
&& StringUtils.isNotBlank(measureDAOByShopId.getMeasureUserId())) {
response.setMeasureUserName(enterpriseUserDAO.getUserName(measureDAOByShopId.getMeasureUserId()));
} else {
response.setMeasureUserName(measureDAOByShopId.getMeasureUserName());
}
if (StringUtils.isBlank(measureDAOByShopId.getDesignLeaderName())
&& StringUtils.isNotBlank(measureDAOByShopId.getDesignUserId())) {
response.setDesignLeaderName(enterpriseUserDAO.getUserName(measureDAOByShopId.getDesignUserId()));
} else {
response.setDesignLeaderName(measureDAOByShopId.getDesignLeaderName());
}
response.setMeasureDate(measureDAOByShopId.getMeasureDate());
response.setDiagramDate(measureDAOByShopId.getDiagramDate());
response.setMeasurementSheetId(measureDAOByShopId.getMeasurementSheetId());
response.setSubmitTime(measureDAOByShopId.getUpdateTime());
return response;
}
}

View File

@@ -15,6 +15,7 @@ import com.cool.store.exception.ServiceException;
import com.cool.store.mapper.LineInfoMapper;
import com.cool.store.mapper.ShopInfoMapper;
import com.cool.store.request.*;
import com.cool.store.response.DecorationDesignResponse;
import com.cool.store.response.ThreeSignResponse;
import com.cool.store.service.*;
import com.cool.store.utils.CoolDateUtils;
@@ -93,6 +94,8 @@ public class DecorationServiceImpl implements DecorationService {
@Resource
EnterpriseUserRoleDao enterpriseUserRoleDao;
@Resource
private HqtAPIService hqtAPIService;
@Override
public DesignInfoVo DesignInfo(Long shopId) {
@@ -362,22 +365,27 @@ public class DecorationServiceImpl implements DecorationService {
acceptanceInfoDO.setSatisfaction(request.getSatisfaction());
acceptanceInfoDO.setIsNetworkCable(request.getIsNetworkCable());
acceptanceInfoDAO.updateAcceptanceInfo(acceptanceInfoDO);
//更新阶段状态验收中
ShopInfoDO shopInfoDO = shopInfoDAO.getShopInfo(request.getShopId());
shopStageInfoDAO.updateShopStageInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_122);
HqtPartnerAcceptanceRequest hqtPartnerAcceptanceRequest = new HqtPartnerAcceptanceRequest();
hqtPartnerAcceptanceRequest.setShopCode(shopInfoDO.getShopCode());
hqtPartnerAcceptanceRequest.setSatisfaction(request.getSatisfaction());
hqtPartnerAcceptanceRequest.setComment(request.getPartnerAcceptance().getRemark());
hqtAPIService.hqtPartnerAcceptance(hqtPartnerAcceptanceRequest);
}
//更新阶段状态验收中
shopStageInfoDAO.updateShopStageInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_122);
ShopInfoDO shopInfoDO = shopInfoDAO.getShopInfo(request.getShopId());
LineInfoDO lineInfoDO = lineInfoMapper.getByLineId(shopInfoDO.getLineId());
List<EnterpriseUserDO> sendUsers = userAuthMappingService.getAllUserByRoleEnumAndRegionId(UserRoleEnum.CONSTRUCTION_CUSTOMER, shopInfoDO.getRegionId());
if (CollectionUtils.isNotEmpty(sendUsers)) {
List<String> sendUserIds = sendUsers.stream().map(enterpriseUserDO -> enterpriseUserDO.getUserId()).collect(Collectors.toList());
HashMap<String, String> map = new HashMap<>();
map.put("partnerUsername", lineInfoDO.getUsername());
map.put("partnerMobile", lineInfoDO.getMobile());
map.put("storeName", shopInfoDO.getShopName());
commonService.sendQWMessage(sendUserIds,
MessageEnum.MESSAGE_37,
map);
}
//LineInfoDO lineInfoDO = lineInfoMapper.getByLineId(shopInfoDO.getLineId());
// List<EnterpriseUserDO> sendUsers = userAuthMappingService.getAllUserByRoleEnumAndRegionId(UserRoleEnum.CONSTRUCTION_CUSTOMER, shopInfoDO.getRegionId());
// if (CollectionUtils.isNotEmpty(sendUsers)) {
// List<String> sendUserIds = sendUsers.stream().map(enterpriseUserDO -> enterpriseUserDO.getUserId()).collect(Collectors.toList());
// HashMap<String, String> map = new HashMap<>();
// map.put("partnerUsername", lineInfoDO.getUsername());
// map.put("partnerMobile", lineInfoDO.getMobile());
// map.put("storeName", shopInfoDO.getShopName());
// commonService.sendQWMessage(sendUserIds,
// MessageEnum.MESSAGE_37,
// map);
// }
return Boolean.TRUE;
}
@@ -566,27 +574,27 @@ public class DecorationServiceImpl implements DecorationService {
if (ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_90.getShopSubStageStatus().equals(subStage.getShopSubStageStatus())) {
shopStageInfoDAO.updateShopStageInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_901);
// 给设计师发送企业微信消息
sendMeasureUserMessage(request.getShopId(), decorationDesignInfoDO.getDesignUserId(), MessageEnum.MESSAGE_55);
// sendMeasureUserMessage(request.getShopId(), decorationDesignInfoDO.getDesignUserId(), MessageEnum.MESSAGE_55);
return Boolean.TRUE;
}
if (ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_901.getShopSubStageStatus().equals(subStage.getShopSubStageStatus())) {
shopStageInfoDAO.updateShopStageInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_902);
List<String> quotationOfficeList = enterpriseUserRoleDao.selectUserIdsByRoleIdList(Collections.singletonList(UserRoleEnum.QUOTATION_OFFICE.getCode()));
HashMap<String, String> map = new HashMap<>(4);
map.put("partnerUsername", lineInfo.getUsername());
map.put("partnerMobile", lineInfo.getMobile());
map.put("storeName", shopInfo.getShopName());
commonService.sendQWMessage(
quotationOfficeList,
MessageEnum.MESSAGE_59,
map
);
// List<String> quotationOfficeList = enterpriseUserRoleDao.selectUserIdsByRoleIdList(Collections.singletonList(UserRoleEnum.QUOTATION_OFFICE.getCode()));
// HashMap<String, String> map = new HashMap<>(4);
// map.put("partnerUsername", lineInfo.getUsername());
// map.put("partnerMobile", lineInfo.getMobile());
// map.put("storeName", shopInfo.getShopName());
// commonService.sendQWMessage(
// quotationOfficeList,
// MessageEnum.MESSAGE_59,
// map
// );
return Boolean.TRUE;
}
if (ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_902.getShopSubStageStatus().equals(subStage.getShopSubStageStatus())) {
shopStageInfoDAO.updateShopStageInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_903);
// 给报价员发送企业微信消息
sendMeasureUserMessage(request.getShopId(), request.getQuotationUserId(), MessageEnum.MESSAGE_55);
// sendMeasureUserMessage(request.getShopId(), request.getQuotationUserId(), MessageEnum.MESSAGE_55);
return Boolean.TRUE;
}
//更新设计阶段状态=待确认,装修子流程=待进场
@@ -596,17 +604,17 @@ public class DecorationServiceImpl implements DecorationService {
templateParam.put("shopName", shopInfo.getShopName());
commonService.sendSms(lineInfo.getMobile(), SMSMsgEnum.DESIGN_STAGE, templateParam);
// 发送企业微信消息
List<EnterpriseUserDO> sendUsers = userAuthMappingService.getAllUserByRoleEnumAndRegionId(UserRoleEnum.CONSTRUCTION_CUSTOMER, shopInfo.getRegionId());
if (CollectionUtils.isNotEmpty(sendUsers)) {
List<String> sendUserIds = sendUsers.stream().map(enterpriseUserDO -> enterpriseUserDO.getUserId()).collect(Collectors.toList());
HashMap<String, String> map = new HashMap<>();
map.put("partnerUsername", lineInfo.getUsername());
map.put("partnerMobile", lineInfo.getMobile());
map.put("storeName", shopInfo.getShopName());
commonService.sendQWMessage(sendUserIds,
MessageEnum.MESSAGE_37,
map);
}
// List<EnterpriseUserDO> sendUsers = userAuthMappingService.getAllUserByRoleEnumAndRegionId(UserRoleEnum.CONSTRUCTION_CUSTOMER, shopInfo.getRegionId());
// if (CollectionUtils.isNotEmpty(sendUsers)) {
// List<String> sendUserIds = sendUsers.stream().map(enterpriseUserDO -> enterpriseUserDO.getUserId()).collect(Collectors.toList());
// HashMap<String, String> map = new HashMap<>();
// map.put("partnerUsername", lineInfo.getUsername());
// map.put("partnerMobile", lineInfo.getMobile());
// map.put("storeName", shopInfo.getShopName());
// commonService.sendQWMessage(sendUserIds,
// MessageEnum.MESSAGE_37,
// map);
// }
return Boolean.TRUE;
}
} else {
@@ -616,39 +624,60 @@ public class DecorationServiceImpl implements DecorationService {
//更新装修设计状态
shopStageInfoDAO.updateShopStageInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_901);
// 给设计师发送企业微信消息
sendMeasureUserMessage(request.getShopId(), decorationDesignInfoDO.getDesignUserId(), MessageEnum.MESSAGE_55);
// sendMeasureUserMessage(request.getShopId(), decorationDesignInfoDO.getDesignUserId(), MessageEnum.MESSAGE_55);
}
return Boolean.TRUE;
}
@Override
public DecorationDesignVO getDecorationDesign(Long shopId) {
public DecorationDesignResponse getDecorationDesign(Long shopId) {
if (shopId == null) {
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
}
DecorationDesignInfoDO decoration = decorationDesignInfoDAO.getByShopId(shopId);
DecorationDesignResponse response = new DecorationDesignResponse();
if (decoration == null) {
//查询测量阶段的设计组长
DecorationMeasureDO measureDO = decorationMeasureDAO.getByShopId(shopId);
DecorationDesignVO decorationDesignVO = new DecorationDesignVO();
if (measureDO != null) {
decorationDesignVO.setDesignLeaderId(measureDO.getDesignUserId());
String userName = enterpriseUserDAO.getUserName(measureDO.getDesignUserId());
decorationDesignVO.setDesignLeaderName(userName);
if (StringUtils.isNotBlank(measureDO.getDesignUserId()) && StringUtils.isBlank(measureDO.getDesignLeaderName())) {
String userName = enterpriseUserDAO.getUserName(measureDO.getDesignUserId());
response.setDesignLeaderName(userName);
} else {
response.setDesignLeaderName(measureDO.getDesignLeaderName());
}
}
return decorationDesignVO;
return response;
}
DecorationDesignVO decorationDesignVO = BeanUtil.toBean(decoration, DecorationDesignVO.class);
//查询员工名称
Set<String> userIds = new HashSet<>();
Optional.ofNullable(decorationDesignVO.getDesignLeaderId()).ifPresent(userIds::add);
Optional.ofNullable(decorationDesignVO.getDesignUserId()).ifPresent(userIds::add);
Optional.ofNullable(decorationDesignVO.getQuotationUserId()).ifPresent(userIds::add);
Map<String, String> userNameMap = enterpriseUserDAO.getUserNameMap(new ArrayList<>(userIds));
decorationDesignVO.setDesignLeaderName(userNameMap.get(decorationDesignVO.getDesignLeaderId()));
decorationDesignVO.setQuotationUserName(userNameMap.get(decorationDesignVO.getQuotationUserId()));
decorationDesignVO.setDesignUserName(userNameMap.get(decorationDesignVO.getDesignUserId()));
return decorationDesignVO;
response.setDesignSheetId(decoration.getDesignSheetId());
if (StringUtils.isNotBlank(decoration.getDesignUserId()) && StringUtils.isBlank(decoration.getDesignName())) {
response.setDesignName(enterpriseUserDAO.getUserName(decoration.getDesignUserId()));
} else {
response.setDesignName(decoration.getDesignName());
}
if (StringUtils.isNotBlank(decoration.getDesignLeaderId()) && StringUtils.isBlank(decoration.getDesignLeaderName())) {
String userName = enterpriseUserDAO.getUserName(decoration.getDesignLeaderId());
response.setDesignLeaderName(userName);
} else {
response.setDesignLeaderName(decoration.getDesignLeaderName());
}
response.setOriginalPhotoUrl(decoration.getOriginalPhotoUrl());
response.setDesignUrl(decoration.getDesignUrl());
response.setRenderingUrl(decoration.getRenderingUrl());
response.setFloorPlanUrl(decoration.getFloorPlanUrl());
response.setDesignSubmitTime(decoration.getDesignSubmitTime());
response.setQuotationUrl(decoration.getQuotationUrl());
response.setQuotationSheetId(decoration.getQuotationSheetId());
if (StringUtils.isNotBlank(decoration.getQuotationUserId()) && StringUtils.isBlank(decoration.getQuoter())) {
String userName = enterpriseUserDAO.getUserName(decoration.getQuotationUserId());
response.setQuoter(userName);
} else {
response.setQuoter(decoration.getQuoter());
}
response.setQuotationUrl(decoration.getQuotationUrl());
response.setQuotationSubmitTime(decoration.getQuotationSubmitTime());
response.setPartnerAcceptanceSignatures(decoration.getPartnerAcceptanceSignatures());
return response;
}
@Override
@@ -689,15 +718,10 @@ public class DecorationServiceImpl implements DecorationService {
return constructionDataVO;
}
constructionDataVO.setConstructionAnnex(decoration.getConstructionAnnex());
constructionDataVO.setConstructionRemark(decoration.getConstructionRemark());
constructionDataVO.setConstructionPlanStartTime(decoration.getConstructionPlanStartTime() != null ? decoration.getConstructionPlanStartTime().getTime() : null);
constructionDataVO.setConstructionPlanEndTime(decoration.getConstructionPlanEndTime() != null ? decoration.getConstructionPlanEndTime().getTime() : null);
constructionDataVO.setConstructionCreateTime(decoration.getConstructionCreateTime() != null ? decoration.getConstructionCreateTime().getTime() : null);
constructionDataVO.setConstructionCreateUser(decoration.getConstructionCreateUser());
if (StringUtils.isNotEmpty(decoration.getConstructionCreateUser())) {
EnterpriseUserDO user = enterpriseUserDAO.getUserInfoById(decoration.getConstructionCreateUser());
constructionDataVO.setConstructionCreateUserName(user.getName());
}
constructionDataVO.setConstructionPlanStartTime( decoration.getConstructionPlanStartTime());
constructionDataVO.setConstructionPlanEndTime(decoration.getConstructionPlanEndTime());
constructionDataVO.setConstructionOrderId(decoration.getConstructionOrderId());
constructionDataVO.setActualEntryTime(decoration.getActualEntryTime());
return constructionDataVO;
}
@@ -705,12 +729,12 @@ public class DecorationServiceImpl implements DecorationService {
@Transactional(rollbackFor = Exception.class)
public Boolean confirmDesign(DecorationDesignRequest request, LoginUserInfo user) {
DecorationDesignInfoDO decoration = decorationDesignInfoDAO.getByShopId(request.getShopId());
if (StringUtils.isBlank(decoration.getQuotationUrl())) {
throw new ServiceException(ErrorCodeEnum.QUOTATION_URL_REQUIRED);
}
if (StringUtils.isBlank(decoration.getDesignUrl())) {
throw new ServiceException(ErrorCodeEnum.DESIGN_URL_REQUIRED);
}
// if (StringUtils.isBlank(decoration.getQuotationUrl())) {
// throw new ServiceException(ErrorCodeEnum.QUOTATION_URL_REQUIRED);
// }
// if (StringUtils.isBlank(decoration.getDesignUrl())) {
// throw new ServiceException(ErrorCodeEnum.DESIGN_URL_REQUIRED);
// }
//重复提交校验 3秒内不能重复提交
String lockKey = "confirmDesign:" + request.getShopId();
String lockValue = UUID.randomUUID().toString();
@@ -718,13 +742,22 @@ public class DecorationServiceImpl implements DecorationService {
if (!acquired) {
throw new ServiceException(ErrorCodeEnum.DUPLICATE_SUBMISSION);
}
DecorationDesignInfoDO decorationDesignInfoDO = request.toDecorationDesignInfoDO();
if (Objects.nonNull(decoration)) {
BeanUtil.copyProperties(decorationDesignInfoDO, decoration, "id");
decorationDesignInfoDAO.updateByPrimaryKeySelective(decoration);
}
ThreeAcceptanceDTO threeAcceptanceDTO = request.getPartnerAcceptanceSignatures();
threeAcceptanceDTO.setAcceptanceTime(new Date());
threeAcceptanceDTO.setStatus(CommonConstants.ONE);
threeAcceptanceDTO.setResult(CommonConstants.ONE);
threeAcceptanceDTO.setRemark(threeAcceptanceDTO.getRemark() == null ? "" : threeAcceptanceDTO.getRemark());
decoration.setPartnerAcceptanceSignatures(JSONObject.toJSONString(threeAcceptanceDTO));
decorationDesignInfoDAO.updateByPrimaryKeySelective(decoration);
//更新装修设计状态
shopStageInfoDAO.batchUpdateShopStageStatus(request.getShopId(), Arrays.asList(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_91));
shopStageInfoDAO.batchUpdateShopStageStatus(request.getShopId(), Arrays.asList(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_91, ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_110));
ShopInfoDO shopInfo = shopInfoDAO.getShopInfo(request.getShopId());
//推送给HQT
ConfirmQuotationRequest confirmQuotationRequest = new ConfirmQuotationRequest();
confirmQuotationRequest.setShopCode(shopInfo.getShopCode());
confirmQuotationRequest.setQuotationSheetId(decoration.getQuotationSheetId());
confirmQuotationRequest.setStatus(CommonConstants.ONE);
hqtAPIService.confirmQuotation(confirmQuotationRequest);
return Boolean.TRUE;
}
@@ -799,11 +832,11 @@ public class DecorationServiceImpl implements DecorationService {
if (Objects.isNull(acceptanceInfoDO)) {
return threeSignResponse;
}
//工程部
if (StringUtils.isNotEmpty(acceptanceInfoDO.getEngineeringAcceptanceSignatures())) {
ThreeAcceptanceDTO engineering = JSONObject.parseObject(acceptanceInfoDO.getEngineeringAcceptanceSignatures(), ThreeAcceptanceDTO.class);
threeSignResponse.setEngineeringAcceptance(engineering);
}
// //工程部
// if (StringUtils.isNotEmpty(acceptanceInfoDO.getEngineeringAcceptanceSignatures())) {
// ThreeAcceptanceDTO engineering = JSONObject.parseObject(acceptanceInfoDO.getEngineeringAcceptanceSignatures(), ThreeAcceptanceDTO.class);
// threeSignResponse.setEngineeringAcceptance(engineering);
// }
//营运部
if (StringUtils.isNotEmpty(acceptanceInfoDO.getOperationsAcceptanceSignatures())) {
ThreeAcceptanceDTO operations = JSONObject.parseObject(acceptanceInfoDO.getOperationsAcceptanceSignatures(), ThreeAcceptanceDTO.class);
@@ -814,15 +847,18 @@ public class DecorationServiceImpl implements DecorationService {
ThreeAcceptanceDTO partner = JSONObject.parseObject(acceptanceInfoDO.getPartnerAcceptanceSignatures(), ThreeAcceptanceDTO.class);
threeSignResponse.setPartnerAcceptance(partner);
}
threeSignResponse.setKsAccount(acceptanceInfoDO.getKsAccount());
threeSignResponse.setVerificationPhone(acceptanceInfoDO.getVerificationMobile());
threeSignResponse.setShopLocationScreenshots(acceptanceInfoDO.getShopLocationScreenshots());
// threeSignResponse.setKsAccount(acceptanceInfoDO.getKsAccount());
// threeSignResponse.setVerificationPhone(acceptanceInfoDO.getVerificationMobile());
// threeSignResponse.setShopLocationScreenshots(acceptanceInfoDO.getShopLocationScreenshots());
threeSignResponse.setShopDoorwayPhoto(acceptanceInfoDO.getShopDoorwayPhoto());
threeSignResponse.setShopInteriorPhoto(acceptanceInfoDO.getShopInteriorPhoto());
threeSignResponse.setSatisfaction(acceptanceInfoDO.getSatisfaction());
threeSignResponse.setIsNetworkCable(acceptanceInfoDO.getIsNetworkCable());
threeSignResponse.setAcceptanceAttachment(acceptanceInfoDO.getAcceptanceAttachment());
threeSignResponse.setBackKitchenPhoto(acceptanceInfoDO.getBackKitchenPhoto());
threeSignResponse.setActualAcceptanceTime(acceptanceInfoDO.getActualAcceptanceTime());
threeSignResponse.setAddReduceAmount(acceptanceInfoDO.getAddReduceAmount());
threeSignResponse.setDeliveryOrderId(acceptanceInfoDO.getDeliveryOrderId());
return threeSignResponse;
}

View File

@@ -1,6 +1,8 @@
package com.cool.store.service.impl;
import com.cool.store.request.ConfirmQuotationRequest;
import com.cool.store.request.HqtBuildRequest;
import com.cool.store.request.HqtPartnerAcceptanceRequest;
import com.cool.store.service.HqtAPIService;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
@@ -18,4 +20,15 @@ public class HqtAPIServiceImpl implements HqtAPIService {
public void pushHqtBuild(HqtBuildRequest request) {
}
@Override
// @Async
public void confirmQuotation(ConfirmQuotationRequest request) {
}
//@Async
@Override
public void hqtPartnerAcceptance(HqtPartnerAcceptanceRequest request) {
}
}