装修接口
This commit is contained in:
@@ -48,12 +48,19 @@ public class DecorationMeasureDAO {
|
||||
decorationMeasureDO.setCreateTime(new Date());
|
||||
return decorationMeasureMapper.insertSelective(decorationMeasureDO);
|
||||
}
|
||||
public Integer insertSelective(DecorationMeasureDO decorationMeasureDO) {
|
||||
return decorationMeasureMapper.insertSelective(decorationMeasureDO);
|
||||
}
|
||||
|
||||
public Integer updateByPrimaryKeySelective(DecorationMeasureDO decorationMeasureDO, String userId) {
|
||||
decorationMeasureDO.setUpdateUserId(userId);
|
||||
decorationMeasureDO.setUpdateTime(new Date());
|
||||
return decorationMeasureMapper.updateByPrimaryKeySelective(decorationMeasureDO);
|
||||
}
|
||||
public Integer updateByPrimaryKeySelective(DecorationMeasureDO decorationMeasureDO) {
|
||||
decorationMeasureDO.setUpdateTime(new Date());
|
||||
return decorationMeasureMapper.updateByPrimaryKeySelective(decorationMeasureDO);
|
||||
}
|
||||
|
||||
public DecorationMeasureDO getByShopId(Long shopId) {
|
||||
if (shopId == null) {
|
||||
|
||||
@@ -334,4 +334,9 @@ public class ShopInfoDAO {
|
||||
}
|
||||
return shopInfoMapper.updateManagerRegionId(shopList);
|
||||
}
|
||||
public ShopInfoDO getShopInfoByShopCode(String shopCode){
|
||||
Example example = new Example(ShopInfoDO.class);
|
||||
example.createCriteria().andEqualTo("shopCode", shopCode);
|
||||
return shopInfoMapper.selectOneByExample(example);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,6 +26,14 @@
|
||||
<result column="quotation_remark" jdbcType="VARCHAR" property="quotationRemark" />
|
||||
<result column="design_submit_time" jdbcType="TIMESTAMP" property="designSubmitTime" />
|
||||
<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>
|
||||
<update id="updateDesignLeaderIdAndDesignUserIdInteger">
|
||||
update xfsg_decoration_design_info
|
||||
|
||||
@@ -19,6 +19,9 @@
|
||||
<result column="deleted" jdbcType="BIT" property="deleted"/>
|
||||
<result column="create_user_id" jdbcType="VARCHAR" property="createUserId"/>
|
||||
<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>
|
||||
|
||||
<select id="selectByShopId" resultMap="BaseResultMap">
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
<result column="district" jdbcType="VARCHAR" property="district"/>
|
||||
<result column="district_code" jdbcType="INTEGER" property="districtCode"/>
|
||||
<result column="manager_region_id" jdbcType="BIGINT" property="managerRegionId"/>
|
||||
<result column="shop_decoration_attributes" jdbcType="INTEGER" property="shopDecorationAttributes"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="allColumn">
|
||||
@@ -44,7 +45,7 @@
|
||||
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,
|
||||
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>
|
||||
|
||||
<insert id="batchAddShop" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
|
||||
|
||||
@@ -64,6 +64,17 @@ public class BigRegionDO {
|
||||
@Column(name = "store_manage_region_id")
|
||||
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() {
|
||||
return storeManageRegionId;
|
||||
}
|
||||
|
||||
@@ -128,4 +128,21 @@ public class DecorationDesignInfoDO {
|
||||
|
||||
@Column(name = "quotation_submit_time")
|
||||
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;
|
||||
}
|
||||
@@ -90,4 +90,10 @@ public class DecorationMeasureDO {
|
||||
@Column(name = "deleted", nullable = false, columnDefinition = "tinyint default '0'")
|
||||
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;
|
||||
}
|
||||
@@ -152,4 +152,7 @@ public class ShopInfoDO {
|
||||
//所属管理区域
|
||||
@Column(name = "manager_region_id")
|
||||
private Long managerRegionId;
|
||||
|
||||
@Column(name = "shop_decoration_attributes")
|
||||
private Integer shopDecorationAttributes;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -1,9 +1,41 @@
|
||||
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
|
||||
* @Date 2024/6/20 17:22
|
||||
* @Version 1.0
|
||||
*/
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
package com.cool.store.service;
|
||||
|
||||
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.vo.DecorationMeasureVO;
|
||||
|
||||
public interface DecorationMeasureService {
|
||||
@@ -28,4 +30,18 @@ public interface DecorationMeasureService {
|
||||
* @return
|
||||
*/
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
@@ -1,8 +1,26 @@
|
||||
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 org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Date;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
* @Date 2024/6/20 17:22
|
||||
@@ -11,4 +29,82 @@ import org.springframework.stereotype.Service;
|
||||
@Service
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,10 +5,7 @@ import com.cool.store.constants.CommonConstants;
|
||||
import com.cool.store.context.CurrentUserHolder;
|
||||
import com.cool.store.context.LoginUserInfo;
|
||||
import com.cool.store.dao.*;
|
||||
import com.cool.store.entity.DecorationMeasureDO;
|
||||
import com.cool.store.entity.LineInfoDO;
|
||||
import com.cool.store.entity.ShopInfoDO;
|
||||
import com.cool.store.entity.ShopStageInfoDO;
|
||||
import com.cool.store.entity.*;
|
||||
import com.cool.store.enums.ErrorCodeEnum;
|
||||
import com.cool.store.enums.MessageEnum;
|
||||
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.exception.ServiceException;
|
||||
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.service.DecorationMeasureService;
|
||||
import com.cool.store.utils.RedisUtilPool;
|
||||
import com.cool.store.vo.DecorationMeasureVO;
|
||||
@@ -26,11 +25,14 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class DecorationMeasureServiceImpl implements DecorationMeasureService {
|
||||
|
||||
@Resource
|
||||
private DecorationDesignInfoDAO decorationDesignInfoDAO;
|
||||
@Resource
|
||||
private EnterpriseUserRoleDao enterpriseUserRoleDao;
|
||||
private final DecorationMeasureDAO decorationMeasureDAO;
|
||||
@@ -172,4 +174,63 @@ public class DecorationMeasureServiceImpl implements DecorationMeasureService {
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -11,6 +11,7 @@ import com.cool.store.exception.ServiceException;
|
||||
import com.cool.store.mapper.FranchiseFeeMapper;
|
||||
import com.cool.store.mapper.SignFranchiseMapper;
|
||||
import com.cool.store.request.AuditRequest;
|
||||
import com.cool.store.request.HqtBuildRequest;
|
||||
import com.cool.store.request.OrderSysInfoRequest;
|
||||
import com.cool.store.service.*;
|
||||
import com.cool.store.utils.poi.StringUtils;
|
||||
@@ -36,7 +37,12 @@ import static com.cool.store.enums.point.ShopSubStageStatusEnum.*;
|
||||
@Service
|
||||
public class OrderSysInfoServiceImpl implements OrderSysInfoService {
|
||||
|
||||
|
||||
@Resource
|
||||
private HqtAPIService hqtAPIService;
|
||||
@Resource
|
||||
private BigRegionDAO bigRegionDAO;
|
||||
@Resource
|
||||
private EnterpriseUserDAO enterpriseUserDAO;
|
||||
@Resource
|
||||
private SyncMainSysServer syncMainSysServer;
|
||||
@Resource
|
||||
@@ -65,7 +71,6 @@ public class OrderSysInfoServiceImpl implements OrderSysInfoService {
|
||||
private String specialUserId;
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Integer updateByShopId(OrderSysInfoRequest request, LoginUserInfo user) {
|
||||
@@ -108,7 +113,7 @@ public class OrderSysInfoServiceImpl implements OrderSysInfoService {
|
||||
map.put("storeName", shopInfoDO.getShopName());
|
||||
//自有店财务
|
||||
UserRoleEnum finance = UserRoleEnum.FINANCE;
|
||||
if (JoinModeEnum.OWN_STORE.equals(shopInfo.getJoinMode())){
|
||||
if (JoinModeEnum.OWN_STORE.equals(shopInfo.getJoinMode())) {
|
||||
finance = UserRoleEnum.OWN_SHOP_OFFICE;
|
||||
}
|
||||
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,
|
||||
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());
|
||||
if (CollectionUtils.isNotEmpty(headUser)){
|
||||
directorList.addAll(headUser);
|
||||
}
|
||||
if (CollectionUtils.isNotEmpty(headUser)) {
|
||||
directorList.addAll(headUser);
|
||||
}
|
||||
List<EnterpriseUserDO> manager = userAuthMappingService.getAllUserByRoleEnumAndRegionId(UserRoleEnum.REGIONAL_MANAGER, shopInfoDAO.getShopInfo(request.getShopId()).getRegionId());
|
||||
if (CollectionUtils.isNotEmpty(manager)){
|
||||
if (CollectionUtils.isNotEmpty(manager)) {
|
||||
directorList.addAll(manager);
|
||||
}
|
||||
operationLogService.addOperationLog(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_153,
|
||||
curUserId, directorList,
|
||||
OperationTypeEnum.OPERATION_TYPE_1, "建店资料分管总监审批", OperationStatusEnum.NOT_PROCESSED);
|
||||
List<String> userIds = directorList.stream().map(EnterpriseUserDO::getUserId).collect(Collectors.toList());
|
||||
sendSms(request.getShopId(),userIds);
|
||||
List<String> userIds = directorList.stream().map(EnterpriseUserDO::getUserId).collect(Collectors.toList());
|
||||
sendSms(request.getShopId(), userIds);
|
||||
return orderSysInfoDAO.updateByShopId(orderSysInfoDO);
|
||||
} else {
|
||||
orderSysInfoDO.setReceivingUpdateTime(new Date());
|
||||
@@ -194,7 +199,7 @@ public class OrderSysInfoServiceImpl implements OrderSysInfoService {
|
||||
ShopInfoDO shopInfo = shopInfoDAO.getShopInfo(request.getShopId());
|
||||
Boolean flag = Boolean.FALSE;
|
||||
//如果是毛泽军的下级 则需要总裁处理
|
||||
if(shopInfo!=null&&shopInfo.getRegionId()!=null){
|
||||
if (shopInfo != null && shopInfo.getRegionId() != null) {
|
||||
flag = regionIds.contains(String.valueOf(shopInfo.getRegionId()));
|
||||
}
|
||||
|
||||
@@ -204,25 +209,25 @@ public class OrderSysInfoServiceImpl implements OrderSysInfoService {
|
||||
switch (nowStatus) {
|
||||
case SHOP_SUB_STAGE_STATUS_153:
|
||||
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<>();
|
||||
if(CollectionUtils.isNotEmpty(users)){
|
||||
userIds = users.stream().map(EnterpriseUserDO::getUserId).collect(Collectors.toList());
|
||||
if (CollectionUtils.isNotEmpty(users)) {
|
||||
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,
|
||||
curUserId,users,
|
||||
curUserId, users,
|
||||
OperationTypeEnum.OPERATION_TYPE_1, "建店资料分管副总裁审批", OperationStatusEnum.NOT_PROCESSED);
|
||||
break;
|
||||
case SHOP_SUB_STAGE_STATUS_154:
|
||||
nextStatus = ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_155;
|
||||
if (flag){
|
||||
if (flag) {
|
||||
List<EnterpriseUserDO> users1 = userAuthMappingService.getAllUserByRoleEnumAndRegionId(PRESIDENT, shopInfoDAO.getShopInfo(request.getShopId()).getRegionId());
|
||||
List<String> userIds1 = new ArrayList<>();
|
||||
if(CollectionUtils.isNotEmpty(users1)){
|
||||
if (CollectionUtils.isNotEmpty(users1)) {
|
||||
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,
|
||||
curUserId, users1,
|
||||
OperationTypeEnum.OPERATION_TYPE_1, "建店资料总裁审批", OperationStatusEnum.NOT_PROCESSED);
|
||||
@@ -232,13 +237,13 @@ public class OrderSysInfoServiceImpl implements OrderSysInfoService {
|
||||
nextStatus = SHOP_SUB_STAGE_STATUS_156;
|
||||
break;
|
||||
default:
|
||||
nextStatus=null;
|
||||
nextStatus = null;
|
||||
break;
|
||||
}
|
||||
//
|
||||
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())) {
|
||||
//如果不是毛泽军下级大区 直接完成不用总裁审批
|
||||
@@ -246,12 +251,14 @@ public class OrderSysInfoServiceImpl implements OrderSysInfoService {
|
||||
shopStageInfoDAO.updateShopStageInfo(request.getShopId(), SHOP_SUB_STAGE_STATUS_156);
|
||||
stageCompletion(request.getShopId());
|
||||
syncMainSysServer.syncStore(request.getShopId());
|
||||
return CommonConstants.ONE;
|
||||
hqtAPIService.pushHqtBuild(getHqtBuildRequest(request.getShopId()));
|
||||
return CommonConstants.ONE;
|
||||
|
||||
} else {
|
||||
shopStageInfoDAO.updateShopStageInfo(request.getShopId(), nextStatus);
|
||||
if (SHOP_SUB_STAGE_STATUS_156.equals(nextStatus)){
|
||||
if (SHOP_SUB_STAGE_STATUS_156.equals(nextStatus)) {
|
||||
stageCompletion(request.getShopId());
|
||||
hqtAPIService.pushHqtBuild(getHqtBuildRequest(request.getShopId()));
|
||||
syncMainSysServer.syncStore(request.getShopId());
|
||||
}
|
||||
return CommonConstants.ONE;
|
||||
@@ -259,7 +266,30 @@ public class OrderSysInfoServiceImpl implements OrderSysInfoService {
|
||||
}
|
||||
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);
|
||||
LineInfoDO lineInfoDO = lineInfoDAO.getLineInfo(shopInfoDO.getLineId());
|
||||
HashMap<String, String> map = new HashMap<>();
|
||||
@@ -271,7 +301,8 @@ public class OrderSysInfoServiceImpl implements OrderSysInfoService {
|
||||
MessageEnum.MESSAGE_54,
|
||||
map);
|
||||
}
|
||||
void stageCompletion(Long shopId){
|
||||
|
||||
void stageCompletion(Long shopId) {
|
||||
//初始化数据
|
||||
preparationService.licenseCompleted(shopId);
|
||||
preparationService.sysStoreCompleted(shopId);
|
||||
|
||||
@@ -3,15 +3,12 @@ package com.cool.store.controller.webb;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.cool.store.dto.*;
|
||||
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.ReceiptCallBackRequest;
|
||||
import com.cool.store.response.ResponseResult;
|
||||
import com.cool.store.response.bigdata.ApiResponse;
|
||||
import com.cool.store.service.OpenApiService;
|
||||
import com.cool.store.service.PushService;
|
||||
import com.cool.store.service.ShopAccountService;
|
||||
import com.cool.store.service.StoreService;
|
||||
import com.cool.store.service.*;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
@@ -32,6 +29,10 @@ import javax.annotation.Resource;
|
||||
@Slf4j
|
||||
public class OpenApiController {
|
||||
|
||||
@Resource
|
||||
private DecorationDesignInfoService decorationDesignInfoService;
|
||||
@Resource
|
||||
private DecorationMeasureService decorationMeasureService;
|
||||
@Resource
|
||||
OpenApiService openApiService;
|
||||
@Resource
|
||||
@@ -77,5 +78,40 @@ public class OpenApiController {
|
||||
public ApiResponse<PageInfo<StoreUserPositionDTO>> getStoreUser(@RequestBody @Validated OpenApiStoreRequest dto) {
|
||||
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));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user