装修接口

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

@@ -67,6 +67,7 @@ public enum ShopSubStageStatusEnum {
//施工阶段
SHOP_SUB_STAGE_STATUS_110(ShopSubStageEnum.SHOP_STAGE_11, 1100, "待提交", Boolean.FALSE),
SHOP_SUB_STAGE_STATUS_110_5(ShopSubStageEnum.SHOP_STAGE_11, 1105, "待进场", Boolean.FALSE),
SHOP_SUB_STAGE_STATUS_111(ShopSubStageEnum.SHOP_STAGE_11, 1110, "施工中", Boolean.FALSE),
SHOP_SUB_STAGE_STATUS_112(ShopSubStageEnum.SHOP_STAGE_11, 1120, "已完成", Boolean.TRUE),

View File

@@ -31,6 +31,8 @@
<result column="acceptance_attachment" jdbcType="VARCHAR" property="acceptanceAttachment"/>
<result column="is_network_cable" jdbcType="BIT" property="isNetworkCable"/>
<result column="back_kitchen_photo" jdbcType="VARCHAR" property="backKitchenPhoto"/>
<result column="add_reduce_amount" jdbcType="DECIMAL" property="addReduceAmount"/>
<result column="delivery_order_id" jdbcType="VARCHAR" property="deliveryOrderId"/>
</resultMap>
<sql id="baseColumn">
id

View File

@@ -34,6 +34,8 @@
<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" />
<result column="construction_order_id" jdbcType="VARCHAR" property="constructionOrderId" />
<result column="actual_entry_time" jdbcType="TIMESTAMP" property="actualEntryTime" />
</resultMap>
<update id="updateDesignLeaderIdAndDesignUserIdInteger">
update xfsg_decoration_design_info

View File

@@ -1,5 +1,6 @@
package com.cool.store.entity;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.*;
@@ -127,7 +128,7 @@ public class AcceptanceInfoDO {
@Column(name = "shop_interior_photo")
private String shopInteriorPhoto;
/**满意度0-低1-中2-高', */
/**满意度0-低1-中2-高', 3-差4-一般5-好6-非常好*/
@Column(name = "satisfaction")
private Integer satisfaction;
/**
@@ -144,6 +145,28 @@ public class AcceptanceInfoDO {
@Column(name = "back_kitchen_photo")
private String backKitchenPhoto;
@Column(name = "add_reduce_amount")
private BigDecimal addReduceAmount;
@Column(name = "delivery_order_id")
private String deliveryOrderId;
public String getDeliveryOrderId() {
return deliveryOrderId;
}
public void setDeliveryOrderId(String deliveryOrderId) {
this.deliveryOrderId = deliveryOrderId;
}
public BigDecimal getAddReduceAmount() {
return addReduceAmount;
}
public void setAddReduceAmount(BigDecimal addReduceAmount) {
this.addReduceAmount = addReduceAmount;
}
public Boolean getIsNetworkCable() {
return isNetworkCable;
}

View File

@@ -145,4 +145,8 @@ public class DecorationDesignInfoDO {
private String quotationSheetId;
@Column(name = "quoter")
private String quoter;
@Column(name = "construction_order_id")
private String constructionOrderId;
@Column(name = "actual_entry_time")
private Date actualEntryTime;
}

View File

@@ -89,11 +89,13 @@ public class DecorationMeasureDO {
*/
@Column(name = "deleted", nullable = false, columnDefinition = "tinyint default '0'")
private Boolean deleted;
//测量派单ID
@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

@@ -0,0 +1,18 @@
package com.cool.store.request;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author: WangShuo
* @Date: 2025/07/23/18:40
* @Version 1.0
* @注释:
*/
@Data
public class ConfirmQuotationRequest {
private String shopCode;
private String quotationSheetId;
@ApiModelProperty("0:拒绝1:通过")
private Integer status;
}

View File

@@ -0,0 +1,19 @@
package com.cool.store.request;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @Author: WangShuo
* @Date: 2025/07/24/10:17
* @Version 1.0
* @注释:
*/
@Data
public class ConstructionCompletedRequest {
@NotBlank(message = "门店编号不能为空")
private String shopCode;
@NotBlank(message = "施工派单编号不能为空")
private String constructionOrderId;
}

View File

@@ -0,0 +1,25 @@
package com.cool.store.request;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.Date;
/**
* @Author: WangShuo
* @Date: 2025/07/23/18:50
* @Version 1.0
* @注释:
*/
@Data
public class ConstructionOrderRequest {
@NotBlank(message = "门店编号不能为空")
private String shopCode;
@NotBlank(message = "施工派单ID(施工派单编号)不能为空")
private String constructionOrderId;
@NotBlank(message = "预计开工时间不能为空")
private Date constructionPlanStartTime;
@NotBlank(message = "预计完工时间不能为空")
private Date constructionPlanEndTime;
}

View File

@@ -0,0 +1,25 @@
package com.cool.store.request;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
* @Author: WangShuo
* @Date: 2025/07/24/10:09
* @Version 1.0
* @注释:
*/
@Data
public class EntryConfirmationRequest {
@NotBlank(message = "门店编号不能为空")
private String shopCode;
//施工派单ID(施工派单编号)
@NotBlank(message = "施工派单编号不能为空")
private String constructionOrderId;
//进场时间
@NotNull(message = "进场时间不能为空")
private Date actualEntryTime;
}

View File

@@ -0,0 +1,24 @@
package com.cool.store.request;
import lombok.Data;
/**
* @Author: WangShuo
* @Date: 2025/07/23/18:36
* @Version 1.0
* @注释:
*/
@Data
public class HqtBuildRequest {
private String shopCode;
private String shopName;
private Integer shopDecorationAttributes;
private String hqtRegionCode;
private String supervisorName;
private String partnershipSignatoryFirst;
private String partnershipSignatoryFirstMobile;
private String shopAddress;
private Integer isPayDesignFee;
private Integer franchiseBrand;
private String supervisorMobile;
}

View File

@@ -0,0 +1,36 @@
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.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* @Author: WangShuo
* @Date: 2025/07/24/10:46
* @Version 1.0
* @注释:
*/
@Data
public class HqtDecorationAcceptanceRequest {
@NotBlank(message = "门店编号不能为空")
private String shopCode;
@NotBlank(message = "完工交付单ID (完工编号)不能为空")
private String deliveryOrderId;
@NotEmpty(message = "验收单不能为空")
private List<String> acceptanceAttachmentUrl;
@NotBlank(message = "门店门头照不能为空")
private String shopDoorwayPhotoUrl;
@NotBlank(message = "门店内景照不能为空")
private String shopInteriorPhotoUrl;
@NotBlank(message = "门店后厨照不能为空")
private String backKitchenPhotoUrl;
@NotNull(message = "验收日期不能为空")
private Date actualAcceptanceTime;
@NotNull(message = "增减项金额不能为空")
private BigDecimal addReduceAmount;
}

View File

@@ -0,0 +1,17 @@
package com.cool.store.request;
import lombok.Data;
/**
* @Author: WangShuo
* @Date: 2025/07/24/11:25
* @Version 1.0
* @注释:
*/
@Data
public class HqtPartnerAcceptanceRequest {
private String shopCode;
private Integer satisfaction;
private String comment;
}

View File

@@ -39,7 +39,7 @@ public class ThreeAcceptanceRequest {
@ApiModelProperty("门店内景照片")
private String shopInteriorPhoto;
@ApiModelProperty("满意度0-低1-中2-高',")
@ApiModelProperty("满意度0-低1-中2-高', 3-差4-一般5-好6-非常好")
private Integer satisfaction;
@ApiModelProperty("网线安装 false-否 true-是")

View File

@@ -0,0 +1,45 @@
package com.cool.store.response;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Column;
import java.util.Date;
/**
* @Author: WangShuo
* @Date: 2025/07/24/13:50
* @Version 1.0
* @注释:
*/
@Data
public class DecorationDesignResponse {
@ApiModelProperty(value = "设计派单ID")
private String designSheetId;
@ApiModelProperty(value = "设计组长名称")
private String designLeaderName;
@ApiModelProperty(value = "设计师名称")
private String designName;
@ApiModelProperty("设计图URL")
private String designUrl;
@ApiModelProperty(value = "原始照片")
private String originalPhotoUrl;
@ApiModelProperty(value = "效果图")
private String renderingUrl;
@ApiModelProperty(value = "平面布置图")
private String floorPlanUrl;
@ApiModelProperty(value = "设计最新提交时间")
private Date designSubmitTime;
@ApiModelProperty(value = "报价单ID(报价单编号)")
private String quotationSheetId;
@ApiModelProperty(value = "报价员")
private String quoter;
@ApiModelProperty(value = "报价单")
private String quotationUrl;
@ApiModelProperty(value = "报价提交时间")
private Date quotationSubmitTime;
@ApiModelProperty(value = "加盟商签字")
private String partnerAcceptanceSignatures;
}

View File

@@ -0,0 +1,38 @@
package com.cool.store.response;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Column;
import java.util.Date;
/**
* @Author: WangShuo
* @Date: 2025/07/24/13:20
* @Version 1.0
* @注释:
*/
@Data
public class MeasureResponse {
@ApiModelProperty("测量派单ID")
private String measurementSheetId;
@ApiModelProperty("测量员")
private String measureUserName;
@ApiModelProperty("设计组")
private String designLeaderName;
@ApiModelProperty("测量日期")
private Date measureDate;
@ApiModelProperty("出图日期")
private Date diagramDate;
@ApiModelProperty("测量图附件")
private String measureUrl;
@ApiModelProperty("最新提交时间")
private Date submitTime;
}

View File

@@ -4,6 +4,9 @@ import com.cool.store.dto.decoration.ThreeAcceptanceDTO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* @Auther: WangShuo
* @Date: 2024/05/06/下午5:50
@@ -12,24 +15,27 @@ import lombok.Data;
*/
@Data
public class ThreeSignResponse {
@ApiModelProperty("工程部验收")
private ThreeAcceptanceDTO engineeringAcceptance;
@ApiModelProperty("完工交付单ID ")
private String deliveryOrderId;
// @ApiModelProperty("工程部验收")
// private ThreeAcceptanceDTO engineeringAcceptance;
@ApiModelProperty("营运部验收")
private ThreeAcceptanceDTO operationsAcceptance;
@ApiModelProperty("加盟商验收")
private ThreeAcceptanceDTO partnerAcceptance;
@ApiModelProperty("快手号")
private String ksAccount;
@ApiModelProperty("核销手机号")
private String verificationPhone;
@ApiModelProperty("高德、百度定位截图")
private String shopLocationScreenshots;
// @ApiModelProperty("快手号")
// private String ksAccount;
// @ApiModelProperty("核销手机号")
// private String verificationPhone;
// @ApiModelProperty("高德、百度定位截图")
// private String shopLocationScreenshots;
@ApiModelProperty("门店门头照片")
private String shopDoorwayPhoto;
@ApiModelProperty("门店内景照片")
private String shopInteriorPhoto;
@ApiModelProperty("满意度0-低1-中2-高',")
@ApiModelProperty("满意度0-低1-中2-高', 3-差4-一般5-好6-非常好")
private Integer satisfaction;
@ApiModelProperty("网线安装 false-否 true-是")
@@ -40,4 +46,9 @@ public class ThreeSignResponse {
@ApiModelProperty("后厨照片")
private String backKitchenPhoto;
@ApiModelProperty("验收时间")
private Date actualAcceptanceTime;
@ApiModelProperty("增减项金额")
private BigDecimal addReduceAmount;
}

View File

@@ -3,6 +3,8 @@ package com.cool.store.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @Author suzhuhong
@@ -12,14 +14,17 @@ import lombok.Data;
@Data
public class ConstructionDataVO {
@ApiModelProperty("施工派单id")
private String constructionOrderId;
@ApiModelProperty("预计开工时间")
private Long constructionPlanStartTime;
private Date constructionPlanStartTime;
/**
* 预计完工时间
*/
@ApiModelProperty("预计完工时间")
private Long constructionPlanEndTime;
private Date constructionPlanEndTime;
/**
* 附件
@@ -27,26 +32,7 @@ public class ConstructionDataVO {
@ApiModelProperty("附件")
private String constructionAnnex;
/**
* 备注
*/
@ApiModelProperty("备注")
private String constructionRemark;
/**
* 创建时间
*/
@ApiModelProperty("创建时间")
private Long constructionCreateTime;
/**
* 创建人
*/
@ApiModelProperty("创建人")
private String constructionCreateUser;
@ApiModelProperty("创建人")
private String constructionCreateUserName;
@ApiModelProperty("进场时间")
private Date actualEntryTime;
}

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) {
}
}

View File

@@ -113,5 +113,39 @@ public class OpenApiController {
return ApiResponse.success(decorationDesignInfoService.assignQuotation(request));
}
@ApiOperation("上传报价单")
@PostMapping("/submitQuotationSheet")
public ApiResponse<Boolean> submitQuotationSheet(@RequestBody @Validated SubmitQuotationSheetRequest request) {
log.info("submitQuotationSheet request{}", JSONObject.toJSONString(request));
return ApiResponse.success(decorationDesignInfoService.submitQuotationSheet(request));
}
@ApiOperation("施工派单")
@PostMapping("/submitConstructionOrder")
public ApiResponse<Boolean> submitConstructionOrder(@RequestBody @Validated ConstructionOrderRequest request) {
log.info("submitConstructionOrder request{}", JSONObject.toJSONString(request));
return ApiResponse.success(decorationDesignInfoService.submitConstructionOrder(request));
}
@ApiOperation("实际进场确认")
@PostMapping("/entryConfirmation")
public ApiResponse<Boolean> entryConfirmation(@RequestBody @Validated EntryConfirmationRequest request) {
log.info("entryConfirmation request{}", JSONObject.toJSONString(request));
return ApiResponse.success(decorationDesignInfoService.entryConfirmation(request));
}
@ApiOperation("施工完成")
@PostMapping("/constructionCompleted")
public ApiResponse<Boolean> constructionCompleted(@RequestBody @Validated ConstructionCompletedRequest request) {
log.info("constructionCompleted request{}", JSONObject.toJSONString(request));
return ApiResponse.success(decorationDesignInfoService.constructionCompleted(request));
}
@ApiOperation("装修验收")
@PostMapping("/decorationAcceptance")
public ApiResponse<Boolean> decorationAcceptance(@RequestBody @Validated HqtDecorationAcceptanceRequest request) {
log.info("decorationAcceptance request{}", JSONObject.toJSONString(request));
return ApiResponse.success(decorationDesignInfoService.decorationAcceptance(request));
}
}

View File

@@ -5,6 +5,8 @@ import com.cool.store.context.LoginUserInfo;
import com.cool.store.dto.decoration.ConstructionScheduleDTO;
import com.cool.store.entity.ShopAuditInfoDO;
import com.cool.store.request.*;
import com.cool.store.response.DecorationDesignResponse;
import com.cool.store.response.MeasureResponse;
import com.cool.store.response.ResponseResult;
import com.cool.store.response.ThreeSignResponse;
import com.cool.store.service.DecorationMeasureService;
@@ -27,7 +29,7 @@ import java.util.List;
* @Auther: WangShuo
* @Date: 2024/04/28/下午4:19
* @Version 1.0
* @注释:
* @注释: 废弃
*/
@RestController
@RequestMapping("/pc/decoration")
@@ -147,7 +149,7 @@ public class PCDecorationController {
@ApiOperation("查询设计方案")
@GetMapping("/getDecorationDesign")
public ResponseResult<DecorationDesignVO> getDecorationDesign(@RequestParam Long shopId) {
public ResponseResult<DecorationDesignResponse> getDecorationDesign(@RequestParam Long shopId) {
return ResponseResult.success(decorationService.getDecorationDesign(shopId));
}
@@ -171,8 +173,8 @@ public class PCDecorationController {
@ApiOperation("查询测量方案")
@GetMapping("/getDecorationMeasure/{shopId}")
public ResponseResult<DecorationMeasureVO> getDecorationMeasure(@PathVariable Long shopId) {
return ResponseResult.success(decorationMeasureService.getDecorationMeasureByShopId(shopId));
public ResponseResult<MeasureResponse> getDecorationMeasure(@PathVariable Long shopId) {
return ResponseResult.success(decorationMeasureService.getMeasureData(shopId));
}
@ApiOperation("保存测量方案")

View File

@@ -10,6 +10,8 @@ import com.cool.store.request.DecorationDesignRequest;
import com.cool.store.request.LinePaySubmitRequest;
import com.cool.store.request.ThreeAcceptanceCheckRequest;
import com.cool.store.request.ThreeAcceptanceRequest;
import com.cool.store.response.DecorationDesignResponse;
import com.cool.store.response.MeasureResponse;
import com.cool.store.response.ResponseResult;
import com.cool.store.response.ThreeSignResponse;
@@ -118,7 +120,7 @@ public class MiniDecorationController {
@ApiOperation("查询设计方案")
@GetMapping("/getDecorationDesign")
public ResponseResult<DecorationDesignVO> getDecorationDesign(@RequestParam Long shopId){
public ResponseResult<DecorationDesignResponse> getDecorationDesign(@RequestParam Long shopId){
return ResponseResult.success(decorationService.getDecorationDesign(shopId));
}
@@ -136,7 +138,7 @@ public class MiniDecorationController {
@ApiOperation("查询测量方案")
@GetMapping("/getDecorationMeasure")
public ResponseResult<DecorationMeasureVO> getDecorationMeasure(@RequestParam Long shopId){
return ResponseResult.success(decorationMeasureService.getDecorationMeasureByShopId(shopId));
public ResponseResult<MeasureResponse> getDecorationMeasure(@RequestParam Long shopId) {
return ResponseResult.success(decorationMeasureService.getMeasureData(shopId));
}
}