装修接口

This commit is contained in:
shuo.wang
2025-07-23 17:02:14 +08:00
parent 163f747e77
commit fbae407c00
23 changed files with 560 additions and 35 deletions

View File

@@ -48,12 +48,19 @@ public class DecorationMeasureDAO {
decorationMeasureDO.setCreateTime(new Date()); decorationMeasureDO.setCreateTime(new Date());
return decorationMeasureMapper.insertSelective(decorationMeasureDO); return decorationMeasureMapper.insertSelective(decorationMeasureDO);
} }
public Integer insertSelective(DecorationMeasureDO decorationMeasureDO) {
return decorationMeasureMapper.insertSelective(decorationMeasureDO);
}
public Integer updateByPrimaryKeySelective(DecorationMeasureDO decorationMeasureDO, String userId) { public Integer updateByPrimaryKeySelective(DecorationMeasureDO decorationMeasureDO, String userId) {
decorationMeasureDO.setUpdateUserId(userId); decorationMeasureDO.setUpdateUserId(userId);
decorationMeasureDO.setUpdateTime(new Date()); decorationMeasureDO.setUpdateTime(new Date());
return decorationMeasureMapper.updateByPrimaryKeySelective(decorationMeasureDO); return decorationMeasureMapper.updateByPrimaryKeySelective(decorationMeasureDO);
} }
public Integer updateByPrimaryKeySelective(DecorationMeasureDO decorationMeasureDO) {
decorationMeasureDO.setUpdateTime(new Date());
return decorationMeasureMapper.updateByPrimaryKeySelective(decorationMeasureDO);
}
public DecorationMeasureDO getByShopId(Long shopId) { public DecorationMeasureDO getByShopId(Long shopId) {
if (shopId == null) { if (shopId == null) {

View File

@@ -334,4 +334,9 @@ public class ShopInfoDAO {
} }
return shopInfoMapper.updateManagerRegionId(shopList); return shopInfoMapper.updateManagerRegionId(shopList);
} }
public ShopInfoDO getShopInfoByShopCode(String shopCode){
Example example = new Example(ShopInfoDO.class);
example.createCriteria().andEqualTo("shopCode", shopCode);
return shopInfoMapper.selectOneByExample(example);
}
} }

View File

@@ -26,6 +26,14 @@
<result column="quotation_remark" jdbcType="VARCHAR" property="quotationRemark" /> <result column="quotation_remark" jdbcType="VARCHAR" property="quotationRemark" />
<result column="design_submit_time" jdbcType="TIMESTAMP" property="designSubmitTime" /> <result column="design_submit_time" jdbcType="TIMESTAMP" property="designSubmitTime" />
<result column="quotation_submit_time" jdbcType="TIMESTAMP" property="quotationSubmitTime" /> <result column="quotation_submit_time" jdbcType="TIMESTAMP" property="quotationSubmitTime" />
<result column="design_sheet_id" jdbcType="VARCHAR" property="designSheetId" />
<result column="design_name" jdbcType="VARCHAR" property="designName" />
<result column="design_leader_name" jdbcType="VARCHAR" property="designLeaderName" />
<result column="original_photo_url" jdbcType="VARCHAR" property="originalPhotoUrl" />
<result column="rendering_url" jdbcType="VARCHAR" property="renderingUrl" />
<result column="floor_plan_url" jdbcType="VARCHAR" property="floorPlanUrl" />
<result column="quotation_sheet_id" jdbcType="VARCHAR" property="quotationSheetId" />
<result column="quoter" jdbcType="VARCHAR" property="quoter" />
</resultMap> </resultMap>
<update id="updateDesignLeaderIdAndDesignUserIdInteger"> <update id="updateDesignLeaderIdAndDesignUserIdInteger">
update xfsg_decoration_design_info update xfsg_decoration_design_info

View File

@@ -19,6 +19,9 @@
<result column="deleted" jdbcType="BIT" property="deleted"/> <result column="deleted" jdbcType="BIT" property="deleted"/>
<result column="create_user_id" jdbcType="VARCHAR" property="createUserId"/> <result column="create_user_id" jdbcType="VARCHAR" property="createUserId"/>
<result column="update_user_id" jdbcType="VARCHAR" property="updateUserId"/> <result column="update_user_id" jdbcType="VARCHAR" property="updateUserId"/>
<result column="measurement_sheet_id" jdbcType="VARCHAR" property="measurementSheetId"/>
<result column="measure_user_name" jdbcType="VARCHAR" property="measureUserName"/>
<result column="design_leader_name" jdbcType="VARCHAR" property="designLeaderName"/>
</resultMap> </resultMap>
<select id="selectByShopId" resultMap="BaseResultMap"> <select id="selectByShopId" resultMap="BaseResultMap">

View File

@@ -36,6 +36,7 @@
<result column="district" jdbcType="VARCHAR" property="district"/> <result column="district" jdbcType="VARCHAR" property="district"/>
<result column="district_code" jdbcType="INTEGER" property="districtCode"/> <result column="district_code" jdbcType="INTEGER" property="districtCode"/>
<result column="manager_region_id" jdbcType="BIGINT" property="managerRegionId"/> <result column="manager_region_id" jdbcType="BIGINT" property="managerRegionId"/>
<result column="shop_decoration_attributes" jdbcType="INTEGER" property="shopDecorationAttributes"/>
</resultMap> </resultMap>
<sql id="allColumn"> <sql id="allColumn">
@@ -44,7 +45,7 @@
shop_code, store_num, shop_manager_user_id, supervisor_user_id, shop_code, store_num, shop_manager_user_id, supervisor_user_id,
plan_open_time, cur_progress, shop_type, shop_stage, deleted, create_time, update_time, plan_open_time, cur_progress, shop_type, shop_stage, deleted, create_time, update_time,
join_mode,detail_address,franchise_brand,development_manager,want_shop_area_id,investment_manager,shop_status,create_user_id,update_user_id,store_type join_mode,detail_address,franchise_brand,development_manager,want_shop_area_id,investment_manager,shop_status,create_user_id,update_user_id,store_type
, province,province_code,city,city_code,district,district_code,manager_region_id , province,province_code,city,city_code,district,district_code,manager_region_id,shop_decoration_attributes
</sql> </sql>
<insert id="batchAddShop" useGeneratedKeys="true" keyProperty="id" keyColumn="id"> <insert id="batchAddShop" useGeneratedKeys="true" keyProperty="id" keyColumn="id">

View File

@@ -64,6 +64,17 @@ public class BigRegionDO {
@Column(name = "store_manage_region_id") @Column(name = "store_manage_region_id")
private Long storeManageRegionId; private Long storeManageRegionId;
@Column(name ="hqt_region_code")
private String hqtRegionCode;
public String getHqtRegionCode() {
return hqtRegionCode;
}
public void setHqtRegionCode(String hqtRegionCode) {
this.hqtRegionCode = hqtRegionCode;
}
public Long getStoreManageRegionId() { public Long getStoreManageRegionId() {
return storeManageRegionId; return storeManageRegionId;
} }

View File

@@ -128,4 +128,21 @@ public class DecorationDesignInfoDO {
@Column(name = "quotation_submit_time") @Column(name = "quotation_submit_time")
private Date quotationSubmitTime; private Date quotationSubmitTime;
@Column(name = "design_sheet_id")
private String designSheetId;
@Column(name = "design_name")
private String designName;
@Column(name = "design_leader_name")
private String designLeaderName;
@Column(name = "original_photo_url")
private String originalPhotoUrl;
@Column(name = "rendering_url")
private String renderingUrl;
@Column(name = "floor_plan_url")
private String floorPlanUrl;
@Column(name = "quotation_sheet_id")
private String quotationSheetId;
@Column(name = "quoter")
private String quoter;
} }

View File

@@ -90,4 +90,10 @@ public class DecorationMeasureDO {
@Column(name = "deleted", nullable = false, columnDefinition = "tinyint default '0'") @Column(name = "deleted", nullable = false, columnDefinition = "tinyint default '0'")
private Boolean deleted; private Boolean deleted;
@Column(name = "measurement_sheet_id")
private String measurementSheetId;
@Column(name = "measure_user_name")
private String measureUserName;
@Column(name = "design_leader_name")
private String designLeaderName;
} }

View File

@@ -152,4 +152,7 @@ public class ShopInfoDO {
//所属管理区域 //所属管理区域
@Column(name = "manager_region_id") @Column(name = "manager_region_id")
private Long managerRegionId; private Long managerRegionId;
@Column(name = "shop_decoration_attributes")
private Integer shopDecorationAttributes;
} }

View File

@@ -0,0 +1,22 @@
package com.cool.store.request;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @Author: WangShuo
* @Date: 2025/07/23/15:00
* @Version 1.0
* @注释:
*/
@Data
public class AssignDesignerRequest {
@NotBlank(message = "店铺编号不能为空")
private String shopCode;
@NotBlank(message = "设计派单ID不能为空")
private String designSheetId;
@NotBlank(message = "设计师不能为空")
private String designName;
}

View File

@@ -0,0 +1,22 @@
package com.cool.store.request;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @Author: WangShuo
* @Date: 2025/07/23/15:43
* @Version 1.0
* @注释:
*/
@Data
public class AssignQuotationRequest {
@NotBlank(message = "门店编号不能为空")
private String shopCode;
@NotBlank(message = "报价单编码不能为空")
private String quotationSheetId;
@NotBlank(message = "报价员不能为空")
private String quoter;
}

View File

@@ -0,0 +1,31 @@
package com.cool.store.request;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* @Author: WangShuo
* @Date: 2025/07/23/14:26
* @Version 1.0
* @注释:
*/
@Data
public class AssignSurveyorsRequest {
@NotBlank(message = "门店编码不能为空")
private String shopCode;
@ApiModelProperty("测量单ID")
@NotBlank(message = "测量单ID不能为空")
private String measurementSheetId;
@ApiModelProperty("测量员")
@NotBlank(message = "测量员不能为空")
private String measureUserName;
@ApiModelProperty("设计组")
@NotBlank(message = "设计组不能为空")
private String designLeaderName;
}

View File

@@ -0,0 +1,32 @@
package com.cool.store.request;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
* @Author: WangShuo
* @Date: 2025/07/23/15:31
* @Version 1.0
* @注释:
*/
@Data
public class SubmitDesignDrawingRequest {
@NotBlank(message = "门店编号不能为空")
private String shopCode;
@NotBlank(message = "设计派单ID不能为空")
private String designSheetId;
@NotBlank(message = "设计师不能为空")
private String designName;
@NotEmpty(message = "原始照片不能为空")
private List<String> originalPhotoUrl;
@NotEmpty(message = "效果图不能为空")
private List<String> renderingUrl;
@NotEmpty(message = "平面布置图不能为空")
private List<String> floorPlanUrl;
}

View File

@@ -0,0 +1,28 @@
package com.cool.store.request;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;
/**
* @Author: WangShuo
* @Date: 2025/07/23/14:41
* @Version 1.0
* @注释:
*/
@Data
public class SubmitMeasurementRequest {
@NotBlank(message = "门店编码不能为空")
private String shopCode;
@NotNull(message = "测量日期不能为空")
private Date measureDate;
@NotNull(message = "出图日期不能为空")
private Date diagramDate;
@NotEmpty(message = "测量图附件不能为空")
private List<String> measureUrl;
}

View File

@@ -0,0 +1,22 @@
package com.cool.store.request;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.List;
/**
* @Author: WangShuo
* @Date: 2025/07/23/15:50
* @Version 1.0
* @注释:
*/
@Data
public class SubmitQuotationSheetRequest {
@NotBlank(message = "门店编码不能为空")
private String shopCode;
@NotBlank(message = "报价单ID(报价单编号)不能为空")
private String quotationSheetId;
@NotBlank(message = "报价单附件不能为空")
private List<String> quotationSheetUrl;
}

View File

@@ -1,9 +1,41 @@
package com.cool.store.service; 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;
/** /**
* @Author suzhuhong * @Author suzhuhong
* @Date 2024/6/20 17:22 * @Date 2024/6/20 17:22
* @Version 1.0 * @Version 1.0
*/ */
public interface DecorationDesignInfoService { public interface DecorationDesignInfoService {
/**
* @Auther: wangshuo
* @Date: 2025/7/23
* @description:分配设计师
*/
Boolean assignDesigner(AssignDesignerRequest request);
/**
* @Auther: wangshuo
* @Date: 2025/7/23
* @description:上传设计图
*/
Boolean submitDesignDrawing(SubmitDesignDrawingRequest request);
/**
* @Auther: wangshuo
* @Date: 2025/7/23
* @description:分配报价员
*/
Boolean assignQuotation(AssignQuotationRequest request);
/**
* @Auther: wangshuo
* @Date: 2025/7/23
* @description:上传最终报价单
*/
Boolean submitQuotationSheet(SubmitQuotationSheetRequest request);
} }

View File

@@ -1,7 +1,9 @@
package com.cool.store.service; package com.cool.store.service;
import com.cool.store.context.LoginUserInfo; import com.cool.store.context.LoginUserInfo;
import com.cool.store.request.AssignSurveyorsRequest;
import com.cool.store.request.DecorationMeasureRequest; import com.cool.store.request.DecorationMeasureRequest;
import com.cool.store.request.SubmitMeasurementRequest;
import com.cool.store.vo.DecorationMeasureVO; import com.cool.store.vo.DecorationMeasureVO;
public interface DecorationMeasureService { public interface DecorationMeasureService {
@@ -28,4 +30,18 @@ public interface DecorationMeasureService {
* @return * @return
*/ */
Boolean saveDecorationMeasure(DecorationMeasureRequest request); Boolean saveDecorationMeasure(DecorationMeasureRequest request);
/**
* @Auther: wangshuo
* @Date: 2025/7/23
* @description:分配测量员 设计组
*/
Boolean assignSurveyors(AssignSurveyorsRequest request);
/**
* @Auther: wangshuo
* @Date: 2025/7/23
* @description:门店测量、上传测量图
*/
Boolean submitMeasurementDiagram(SubmitMeasurementRequest request);
} }

View File

@@ -0,0 +1,14 @@
package com.cool.store.service;
import com.cool.store.request.HqtBuildRequest;
/**
* @Author: WangShuo
* @Date: 2025/07/23/14:05
* @Version 1.0
* @注释:
*/
public interface HqtAPIService {
void pushHqtBuild(HqtBuildRequest request);
}

View File

@@ -1,8 +1,26 @@
package com.cool.store.service.impl; 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.enums.ErrorCodeEnum;
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.service.DecorationDesignInfoService; import com.cool.store.service.DecorationDesignInfoService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.stream.Collectors;
/** /**
* @Author suzhuhong * @Author suzhuhong
* @Date 2024/6/20 17:22 * @Date 2024/6/20 17:22
@@ -11,4 +29,82 @@ import org.springframework.stereotype.Service;
@Service @Service
public class DecorationDesignInfoServiceImpl implements DecorationDesignInfoService { public class DecorationDesignInfoServiceImpl implements DecorationDesignInfoService {
@Resource
private DecorationDesignInfoDAO decorationDesignInfoDAO;
@Resource
private ShopInfoDAO shopInfoDAO;
@Resource
private ShopStageInfoDAO shopStageInfoDAO;
@Override
public Boolean assignDesigner(AssignDesignerRequest 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.setDesignName(request.getDesignName());
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())){
shopStageInfoDAO.updateShopStageInfo(shopInfoDO.getId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_901);
}
return true;
}
@Override
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);
}
designInfoDO.setDesignSheetId(request.getDesignSheetId());
designInfoDO.setDesignName(request.getDesignName());
designInfoDO.setOriginalPhotoUrl(String.join(",", request.getOriginalPhotoUrl()));
designInfoDO.setRenderingUrl(String.join(",", request.getRenderingUrl()));
designInfoDO.setFloorPlanUrl(String.join(",", request.getFloorPlanUrl()));
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_901.getShopSubStageStatus())){
shopStageInfoDAO.updateShopStageInfo(shopInfoDO.getId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_902);
}
return true;
}
@Override
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);
}
designInfoDO.setQuotationSheetId(request.getQuotationSheetId());
designInfoDO.setQuoter(request.getQuoter());
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_902.getShopSubStageStatus())){
shopStageInfoDAO.updateShopStageInfo(shopInfoDO.getId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_903);
}
return true;
}
@Override
public Boolean submitQuotationSheet(SubmitQuotationSheetRequest 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.setQuotationSheetId(request.getQuotationSheetId());
designInfoDO.setQuotationUrl(String.join(",", request.getQuotationSheetUrl()));
designInfoDO.setQuotationSubmitTime(new Date());
designInfoDO.setUpdateTime(new Date());
decorationDesignInfoDAO.updateByPrimaryKeySelective(designInfoDO);
return true;
}
} }

View File

@@ -5,10 +5,7 @@ import com.cool.store.constants.CommonConstants;
import com.cool.store.context.CurrentUserHolder; import com.cool.store.context.CurrentUserHolder;
import com.cool.store.context.LoginUserInfo; import com.cool.store.context.LoginUserInfo;
import com.cool.store.dao.*; import com.cool.store.dao.*;
import com.cool.store.entity.DecorationMeasureDO; import com.cool.store.entity.*;
import com.cool.store.entity.LineInfoDO;
import com.cool.store.entity.ShopInfoDO;
import com.cool.store.entity.ShopStageInfoDO;
import com.cool.store.enums.ErrorCodeEnum; import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.enums.MessageEnum; import com.cool.store.enums.MessageEnum;
import com.cool.store.enums.UserRoleEnum; import com.cool.store.enums.UserRoleEnum;
@@ -16,7 +13,9 @@ import com.cool.store.enums.point.ShopSubStageEnum;
import com.cool.store.enums.point.ShopSubStageStatusEnum; import com.cool.store.enums.point.ShopSubStageStatusEnum;
import com.cool.store.exception.ServiceException; import com.cool.store.exception.ServiceException;
import com.cool.store.mapper.LineInfoMapper; import com.cool.store.mapper.LineInfoMapper;
import com.cool.store.request.AssignSurveyorsRequest;
import com.cool.store.request.DecorationMeasureRequest; import com.cool.store.request.DecorationMeasureRequest;
import com.cool.store.request.SubmitMeasurementRequest;
import com.cool.store.service.DecorationMeasureService; import com.cool.store.service.DecorationMeasureService;
import com.cool.store.utils.RedisUtilPool; import com.cool.store.utils.RedisUtilPool;
import com.cool.store.vo.DecorationMeasureVO; import com.cool.store.vo.DecorationMeasureVO;
@@ -26,11 +25,14 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class DecorationMeasureServiceImpl implements DecorationMeasureService { public class DecorationMeasureServiceImpl implements DecorationMeasureService {
@Resource
private DecorationDesignInfoDAO decorationDesignInfoDAO;
@Resource @Resource
private EnterpriseUserRoleDao enterpriseUserRoleDao; private EnterpriseUserRoleDao enterpriseUserRoleDao;
private final DecorationMeasureDAO decorationMeasureDAO; private final DecorationMeasureDAO decorationMeasureDAO;
@@ -172,4 +174,63 @@ public class DecorationMeasureServiceImpl implements DecorationMeasureService {
return Boolean.TRUE; return Boolean.TRUE;
} }
@Override
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())){
throw new ServiceException(ErrorCodeEnum.SHOP_STAGE_NOT_OPERATE);
}
DecorationMeasureDO measureDAOByShopId = decorationMeasureDAO.getByShopId(shopInfoDO.getId());
if (measureDAOByShopId == null) {
measureDAOByShopId = new DecorationMeasureDO();
measureDAOByShopId.setDeleted(false);
measureDAOByShopId.setCreateTime(new Date());
}
measureDAOByShopId.setShopId(shopInfoDO.getId());
measureDAOByShopId.setMeasurementSheetId(request.getMeasurementSheetId());
measureDAOByShopId.setMeasureUserName(request.getMeasureUserName());
measureDAOByShopId.setDesignLeaderName(request.getDesignLeaderName());
measureDAOByShopId.setUpdateTime(new Date());
if (measureDAOByShopId.getId() == null) {
decorationMeasureDAO.insertSelective(measureDAOByShopId);
shopStageInfoDAO.updateShopStageInfo(shopInfoDO.getId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_862);
} else {
decorationMeasureDAO.updateByPrimaryKeySelective(measureDAOByShopId);
}
DecorationDesignInfoDO designInfoDO = decorationDesignInfoDAO.getByShopId(shopInfoDO.getId());
if (designInfoDO == null){
designInfoDO = new DecorationDesignInfoDO();
designInfoDO.setShopId(shopInfoDO.getId());
designInfoDO.setCreateTime(new Date());
}
designInfoDO.setDesignLeaderName(request.getDesignLeaderName());
designInfoDO.setUpdateTime(new Date());
if (designInfoDO.getId() == null) {
decorationDesignInfoDAO.insertSelective(designInfoDO);
shopStageInfoDAO.updateShopStageInfo(shopInfoDO.getId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_90);
} else {
decorationDesignInfoDAO.updateByPrimaryKeySelective(designInfoDO);
}
return true;
}
@Override
public Boolean submitMeasurementDiagram(SubmitMeasurementRequest request) {
ShopInfoDO shopInfoDO = shopInfoDAO.getShopInfoByShopCode(request.getShopCode());
DecorationMeasureDO measureDAOByShopId = decorationMeasureDAO.getByShopId(shopInfoDO.getId());
if (measureDAOByShopId == null) {
throw new ServiceException(ErrorCodeEnum.SHOP_STAGE_NOT_OPERATE);
}
measureDAOByShopId.setMeasureDate(request.getMeasureDate());
measureDAOByShopId.setDiagramDate(request.getDiagramDate());
measureDAOByShopId.setMeasureUrl(String.join(",", request.getMeasureUrl()));
decorationMeasureDAO.updateByPrimaryKeySelective(measureDAOByShopId);
ShopStageInfoDO shopStageInfo = shopStageInfoDAO.getShopSubStageInfo(shopInfoDO.getId(), ShopSubStageEnum.SHOP_STAGE_8_6);
if (shopStageInfo.getShopSubStageStatus().equals(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_862.getShopSubStageStatus())) {
shopStageInfoDAO.updateShopStageInfo(shopInfoDO.getId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_863);
}
return true;
}
} }

View File

@@ -0,0 +1,21 @@
package com.cool.store.service.impl;
import com.cool.store.request.HqtBuildRequest;
import com.cool.store.service.HqtAPIService;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
/**
* @Author: WangShuo
* @Date: 2025/07/23/14:05
* @Version 1.0
* @注释:
*/
@Service
public class HqtAPIServiceImpl implements HqtAPIService {
@Override
//@Async
public void pushHqtBuild(HqtBuildRequest request) {
}
}

View File

@@ -11,6 +11,7 @@ import com.cool.store.exception.ServiceException;
import com.cool.store.mapper.FranchiseFeeMapper; import com.cool.store.mapper.FranchiseFeeMapper;
import com.cool.store.mapper.SignFranchiseMapper; import com.cool.store.mapper.SignFranchiseMapper;
import com.cool.store.request.AuditRequest; import com.cool.store.request.AuditRequest;
import com.cool.store.request.HqtBuildRequest;
import com.cool.store.request.OrderSysInfoRequest; import com.cool.store.request.OrderSysInfoRequest;
import com.cool.store.service.*; import com.cool.store.service.*;
import com.cool.store.utils.poi.StringUtils; import com.cool.store.utils.poi.StringUtils;
@@ -36,7 +37,12 @@ import static com.cool.store.enums.point.ShopSubStageStatusEnum.*;
@Service @Service
public class OrderSysInfoServiceImpl implements OrderSysInfoService { public class OrderSysInfoServiceImpl implements OrderSysInfoService {
@Resource
private HqtAPIService hqtAPIService;
@Resource
private BigRegionDAO bigRegionDAO;
@Resource
private EnterpriseUserDAO enterpriseUserDAO;
@Resource @Resource
private SyncMainSysServer syncMainSysServer; private SyncMainSysServer syncMainSysServer;
@Resource @Resource
@@ -65,7 +71,6 @@ public class OrderSysInfoServiceImpl implements OrderSysInfoService {
private String specialUserId; private String specialUserId;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Integer updateByShopId(OrderSysInfoRequest request, LoginUserInfo user) { public Integer updateByShopId(OrderSysInfoRequest request, LoginUserInfo user) {
@@ -108,7 +113,7 @@ public class OrderSysInfoServiceImpl implements OrderSysInfoService {
map.put("storeName", shopInfoDO.getShopName()); map.put("storeName", shopInfoDO.getShopName());
//自有店财务 //自有店财务
UserRoleEnum finance = UserRoleEnum.FINANCE; UserRoleEnum finance = UserRoleEnum.FINANCE;
if (JoinModeEnum.OWN_STORE.equals(shopInfo.getJoinMode())){ if (JoinModeEnum.OWN_STORE.equals(shopInfo.getJoinMode())) {
finance = UserRoleEnum.OWN_SHOP_OFFICE; finance = UserRoleEnum.OWN_SHOP_OFFICE;
} }
List<EnterpriseUserDO> itList = userAuthMappingService.getAllUserByRoleEnumAndRegionId(finance, shopInfoDO.getRegionId()); List<EnterpriseUserDO> itList = userAuthMappingService.getAllUserByRoleEnumAndRegionId(finance, shopInfoDO.getRegionId());
@@ -144,20 +149,20 @@ public class OrderSysInfoServiceImpl implements OrderSysInfoService {
//审批流 //审批流
operationLogService.addOperationLog(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_152, curUserId, curName, operationLogService.addOperationLog(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_152, curUserId, curName,
OperationTypeEnum.OPERATION_TYPE_0, "建店资料财务提交审批", OperationStatusEnum.PROCESSED); OperationTypeEnum.OPERATION_TYPE_0, "建店资料财务提交审批", OperationStatusEnum.PROCESSED);
List<EnterpriseUserDO>directorList = new ArrayList<>(); List<EnterpriseUserDO> directorList = new ArrayList<>();
List<EnterpriseUserDO> headUser = userAuthMappingService.getAllUserByRoleEnumAndRegionId(UserRoleEnum.HEAD_OF_DIVISION, shopInfoDAO.getShopInfo(request.getShopId()).getRegionId()); List<EnterpriseUserDO> headUser = userAuthMappingService.getAllUserByRoleEnumAndRegionId(UserRoleEnum.HEAD_OF_DIVISION, shopInfoDAO.getShopInfo(request.getShopId()).getRegionId());
if (CollectionUtils.isNotEmpty(headUser)){ if (CollectionUtils.isNotEmpty(headUser)) {
directorList.addAll(headUser); directorList.addAll(headUser);
} }
List<EnterpriseUserDO> manager = userAuthMappingService.getAllUserByRoleEnumAndRegionId(UserRoleEnum.REGIONAL_MANAGER, shopInfoDAO.getShopInfo(request.getShopId()).getRegionId()); List<EnterpriseUserDO> manager = userAuthMappingService.getAllUserByRoleEnumAndRegionId(UserRoleEnum.REGIONAL_MANAGER, shopInfoDAO.getShopInfo(request.getShopId()).getRegionId());
if (CollectionUtils.isNotEmpty(manager)){ if (CollectionUtils.isNotEmpty(manager)) {
directorList.addAll(manager); directorList.addAll(manager);
} }
operationLogService.addOperationLog(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_153, operationLogService.addOperationLog(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_153,
curUserId, directorList, curUserId, directorList,
OperationTypeEnum.OPERATION_TYPE_1, "建店资料分管总监审批", OperationStatusEnum.NOT_PROCESSED); OperationTypeEnum.OPERATION_TYPE_1, "建店资料分管总监审批", OperationStatusEnum.NOT_PROCESSED);
List<String> userIds = directorList.stream().map(EnterpriseUserDO::getUserId).collect(Collectors.toList()); List<String> userIds = directorList.stream().map(EnterpriseUserDO::getUserId).collect(Collectors.toList());
sendSms(request.getShopId(),userIds); sendSms(request.getShopId(), userIds);
return orderSysInfoDAO.updateByShopId(orderSysInfoDO); return orderSysInfoDAO.updateByShopId(orderSysInfoDO);
} else { } else {
orderSysInfoDO.setReceivingUpdateTime(new Date()); orderSysInfoDO.setReceivingUpdateTime(new Date());
@@ -194,7 +199,7 @@ public class OrderSysInfoServiceImpl implements OrderSysInfoService {
ShopInfoDO shopInfo = shopInfoDAO.getShopInfo(request.getShopId()); ShopInfoDO shopInfo = shopInfoDAO.getShopInfo(request.getShopId());
Boolean flag = Boolean.FALSE; Boolean flag = Boolean.FALSE;
//如果是毛泽军的下级 则需要总裁处理 //如果是毛泽军的下级 则需要总裁处理
if(shopInfo!=null&&shopInfo.getRegionId()!=null){ if (shopInfo != null && shopInfo.getRegionId() != null) {
flag = regionIds.contains(String.valueOf(shopInfo.getRegionId())); flag = regionIds.contains(String.valueOf(shopInfo.getRegionId()));
} }
@@ -204,25 +209,25 @@ public class OrderSysInfoServiceImpl implements OrderSysInfoService {
switch (nowStatus) { switch (nowStatus) {
case SHOP_SUB_STAGE_STATUS_153: case SHOP_SUB_STAGE_STATUS_153:
nextStatus = SHOP_SUB_STAGE_STATUS_154; nextStatus = SHOP_SUB_STAGE_STATUS_154;
List<EnterpriseUserDO> users = userAuthMappingService.getUserIdByRoleEnumAndRegionId(Arrays.asList(VICE_PRESIDENT_IN_CHARGE,BRAND_HEAD), shopInfoDAO.getShopInfo(request.getShopId()).getRegionId()); List<EnterpriseUserDO> users = userAuthMappingService.getUserIdByRoleEnumAndRegionId(Arrays.asList(VICE_PRESIDENT_IN_CHARGE, BRAND_HEAD), shopInfoDAO.getShopInfo(request.getShopId()).getRegionId());
List<String> userIds = new ArrayList<>(); List<String> userIds = new ArrayList<>();
if(CollectionUtils.isNotEmpty(users)){ if (CollectionUtils.isNotEmpty(users)) {
userIds = users.stream().map(EnterpriseUserDO::getUserId).collect(Collectors.toList()); userIds = users.stream().map(EnterpriseUserDO::getUserId).collect(Collectors.toList());
} }
sendSms(request.getShopId(),userIds); sendSms(request.getShopId(), userIds);
operationLogService.addOperationLog(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_154, operationLogService.addOperationLog(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_154,
curUserId,users, curUserId, users,
OperationTypeEnum.OPERATION_TYPE_1, "建店资料分管副总裁审批", OperationStatusEnum.NOT_PROCESSED); OperationTypeEnum.OPERATION_TYPE_1, "建店资料分管副总裁审批", OperationStatusEnum.NOT_PROCESSED);
break; break;
case SHOP_SUB_STAGE_STATUS_154: case SHOP_SUB_STAGE_STATUS_154:
nextStatus = ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_155; nextStatus = ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_155;
if (flag){ if (flag) {
List<EnterpriseUserDO> users1 = userAuthMappingService.getAllUserByRoleEnumAndRegionId(PRESIDENT, shopInfoDAO.getShopInfo(request.getShopId()).getRegionId()); List<EnterpriseUserDO> users1 = userAuthMappingService.getAllUserByRoleEnumAndRegionId(PRESIDENT, shopInfoDAO.getShopInfo(request.getShopId()).getRegionId());
List<String> userIds1 = new ArrayList<>(); List<String> userIds1 = new ArrayList<>();
if(CollectionUtils.isNotEmpty(users1)){ if (CollectionUtils.isNotEmpty(users1)) {
userIds1 = users1.stream().map(EnterpriseUserDO::getUserId).collect(Collectors.toList()); userIds1 = users1.stream().map(EnterpriseUserDO::getUserId).collect(Collectors.toList());
} }
sendSms(request.getShopId(),userIds1); sendSms(request.getShopId(), userIds1);
operationLogService.addOperationLog(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_155, operationLogService.addOperationLog(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_155,
curUserId, users1, curUserId, users1,
OperationTypeEnum.OPERATION_TYPE_1, "建店资料总裁审批", OperationStatusEnum.NOT_PROCESSED); OperationTypeEnum.OPERATION_TYPE_1, "建店资料总裁审批", OperationStatusEnum.NOT_PROCESSED);
@@ -232,13 +237,13 @@ public class OrderSysInfoServiceImpl implements OrderSysInfoService {
nextStatus = SHOP_SUB_STAGE_STATUS_156; nextStatus = SHOP_SUB_STAGE_STATUS_156;
break; break;
default: default:
nextStatus=null; nextStatus = null;
break; break;
} }
// //
if (AuditResultTypeEnum.REJECT.getCode().equals(request.getResultType())) { if (AuditResultTypeEnum.REJECT.getCode().equals(request.getResultType())) {
//回退 //回退
return shopStageInfoDAO.updateShopStageInfo(request.getShopId(), SHOP_SUB_STAGE_STATUS_152); return shopStageInfoDAO.updateShopStageInfo(request.getShopId(), SHOP_SUB_STAGE_STATUS_152);
} }
if (AuditResultTypeEnum.PASS.getCode().equals(request.getResultType())) { if (AuditResultTypeEnum.PASS.getCode().equals(request.getResultType())) {
//如果不是毛泽军下级大区 直接完成不用总裁审批 //如果不是毛泽军下级大区 直接完成不用总裁审批
@@ -246,12 +251,14 @@ public class OrderSysInfoServiceImpl implements OrderSysInfoService {
shopStageInfoDAO.updateShopStageInfo(request.getShopId(), SHOP_SUB_STAGE_STATUS_156); shopStageInfoDAO.updateShopStageInfo(request.getShopId(), SHOP_SUB_STAGE_STATUS_156);
stageCompletion(request.getShopId()); stageCompletion(request.getShopId());
syncMainSysServer.syncStore(request.getShopId()); syncMainSysServer.syncStore(request.getShopId());
return CommonConstants.ONE; hqtAPIService.pushHqtBuild(getHqtBuildRequest(request.getShopId()));
return CommonConstants.ONE;
} else { } else {
shopStageInfoDAO.updateShopStageInfo(request.getShopId(), nextStatus); shopStageInfoDAO.updateShopStageInfo(request.getShopId(), nextStatus);
if (SHOP_SUB_STAGE_STATUS_156.equals(nextStatus)){ if (SHOP_SUB_STAGE_STATUS_156.equals(nextStatus)) {
stageCompletion(request.getShopId()); stageCompletion(request.getShopId());
hqtAPIService.pushHqtBuild(getHqtBuildRequest(request.getShopId()));
syncMainSysServer.syncStore(request.getShopId()); syncMainSysServer.syncStore(request.getShopId());
} }
return CommonConstants.ONE; return CommonConstants.ONE;
@@ -259,7 +266,30 @@ public class OrderSysInfoServiceImpl implements OrderSysInfoService {
} }
return 0; return 0;
} }
void sendSms(Long shopId,List<String> userIds){
public HqtBuildRequest getHqtBuildRequest(Long shopId) {
ShopInfoDO shopInfo = shopInfoDAO.getShopInfo(shopId);
LineInfoDO lineInfoDO = lineInfoDAO.getLineInfo(shopInfo.getLineId());
EnterpriseUserDO userInfoById = enterpriseUserDAO.getUserInfoById(shopInfo.getInvestmentManager());
BigRegionDO bigRegionDO = bigRegionDAO.getByRegionId(shopInfo.getRegionId());
HqtBuildRequest request = new HqtBuildRequest();
request.setShopCode(shopInfo.getShopCode());
request.setShopName(shopInfo.getShopName());
request.setShopDecorationAttributes(shopInfo.getShopDecorationAttributes());
request.setHqtRegionCode(bigRegionDO.getHqtRegionCode());
request.setSupervisorName(userInfoById.getName());
request.setSupervisorMobile(userInfoById.getMobile());
request.setPartnershipSignatoryFirst(lineInfoDO.getUsername());
request.setPartnershipSignatoryFirstMobile(lineInfoDO.getMobile());
request.setShopAddress(shopInfo.getDetailAddress());
request.setIsPayDesignFee(CommonConstants.ONE);
if (StringUtils.isNotBlank(shopInfo.getFranchiseBrand())) {
request.setFranchiseBrand(Integer.valueOf(shopInfo.getFranchiseBrand()));
}
return request;
}
void sendSms(Long shopId, List<String> userIds) {
ShopInfoDO shopInfoDO = shopInfoDAO.getShopInfo(shopId); ShopInfoDO shopInfoDO = shopInfoDAO.getShopInfo(shopId);
LineInfoDO lineInfoDO = lineInfoDAO.getLineInfo(shopInfoDO.getLineId()); LineInfoDO lineInfoDO = lineInfoDAO.getLineInfo(shopInfoDO.getLineId());
HashMap<String, String> map = new HashMap<>(); HashMap<String, String> map = new HashMap<>();
@@ -271,7 +301,8 @@ public class OrderSysInfoServiceImpl implements OrderSysInfoService {
MessageEnum.MESSAGE_54, MessageEnum.MESSAGE_54,
map); map);
} }
void stageCompletion(Long shopId){
void stageCompletion(Long shopId) {
//初始化数据 //初始化数据
preparationService.licenseCompleted(shopId); preparationService.licenseCompleted(shopId);
preparationService.sysStoreCompleted(shopId); preparationService.sysStoreCompleted(shopId);

View File

@@ -3,15 +3,12 @@ package com.cool.store.controller.webb;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.cool.store.dto.*; import com.cool.store.dto.*;
import com.cool.store.dto.store.StoreUserPositionDTO; import com.cool.store.dto.store.StoreUserPositionDTO;
import com.cool.store.request.OpenApiStoreRequest; import com.cool.store.request.*;
import com.cool.store.request.xgj.FranchiseFeeCallBackRequest; import com.cool.store.request.xgj.FranchiseFeeCallBackRequest;
import com.cool.store.request.xgj.ReceiptCallBackRequest; import com.cool.store.request.xgj.ReceiptCallBackRequest;
import com.cool.store.response.ResponseResult; import com.cool.store.response.ResponseResult;
import com.cool.store.response.bigdata.ApiResponse; import com.cool.store.response.bigdata.ApiResponse;
import com.cool.store.service.OpenApiService; import com.cool.store.service.*;
import com.cool.store.service.PushService;
import com.cool.store.service.ShopAccountService;
import com.cool.store.service.StoreService;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@@ -32,6 +29,10 @@ import javax.annotation.Resource;
@Slf4j @Slf4j
public class OpenApiController { public class OpenApiController {
@Resource
private DecorationDesignInfoService decorationDesignInfoService;
@Resource
private DecorationMeasureService decorationMeasureService;
@Resource @Resource
OpenApiService openApiService; OpenApiService openApiService;
@Resource @Resource
@@ -77,5 +78,40 @@ public class OpenApiController {
public ApiResponse<PageInfo<StoreUserPositionDTO>> getStoreUser(@RequestBody @Validated OpenApiStoreRequest dto) { public ApiResponse<PageInfo<StoreUserPositionDTO>> getStoreUser(@RequestBody @Validated OpenApiStoreRequest dto) {
return ApiResponse.success(storeService.getStoreUser(dto.getPageSize(),dto.getPageNum())); return ApiResponse.success(storeService.getStoreUser(dto.getPageSize(),dto.getPageNum()));
} }
@ApiOperation("分配测量员,设计组")
@PostMapping("/assignSurveyors")
public ApiResponse<Boolean> assignSurveyors(@RequestBody @Validated AssignSurveyorsRequest request) {
log.info("assignSurveyors request{}", JSONObject.toJSONString(request));
return ApiResponse.success(decorationMeasureService.assignSurveyors(request));
}
@ApiOperation("门店测量、上传测量图")
@PostMapping("/submitMeasurementDiagram")
public ApiResponse<Boolean> submitMeasurementDiagram(@RequestBody @Validated SubmitMeasurementRequest request) {
log.info("submitMeasurementDiagram request{}", JSONObject.toJSONString(request));
return ApiResponse.success(decorationMeasureService.submitMeasurementDiagram(request));
}
@ApiOperation(" 分配设计师")
@PostMapping("/assignDesigner")
public ApiResponse<Boolean> assignDesigner(@RequestBody @Validated AssignDesignerRequest request) {
log.info("assignDesigner request{}", JSONObject.toJSONString(request));
return ApiResponse.success(decorationDesignInfoService.assignDesigner(request));
}
@ApiOperation("上传设计图")
@PostMapping("/submitDesignDrawing")
public ApiResponse<Boolean> submitDesignDrawing(@RequestBody @Validated SubmitDesignDrawingRequest request) {
log.info("submitDesignDrawing request{}", JSONObject.toJSONString(request));
return ApiResponse.success(decorationDesignInfoService.submitDesignDrawing(request));
}
@ApiOperation("分配报价员")
@PostMapping("/assignQuotation")
public ApiResponse<Boolean> assignQuotation(@RequestBody @Validated AssignQuotationRequest request) {
log.info("assignQuotation request{}", JSONObject.toJSONString(request));
return ApiResponse.success(decorationDesignInfoService.assignQuotation(request));
}
} }