Merge branch 'cc_20250701_decoration' into 'master'

Cc 20250701 decoration

See merge request hangzhou/java/custom_zxjp!126
This commit is contained in:
苏竹红
2025-07-07 09:42:48 +00:00
10 changed files with 153 additions and 42 deletions

View File

@@ -71,8 +71,8 @@ public enum ShopSubStageStatusEnum {
SHOP_SUB_STAGE_STATUS_112(ShopSubStageEnum.SHOP_STAGE_11, 1120, "已完成", Boolean.TRUE), SHOP_SUB_STAGE_STATUS_112(ShopSubStageEnum.SHOP_STAGE_11, 1120, "已完成", Boolean.TRUE),
//三方验收 (待预约去掉) //三方验收 (待预约去掉)
SHOP_SUB_STAGE_STATUS_121(ShopSubStageEnum.SHOP_STAGE_12, 1210, "待验收", Boolean.FALSE), SHOP_SUB_STAGE_STATUS_121(ShopSubStageEnum.SHOP_STAGE_12, 1210, "加盟商验收", Boolean.FALSE),
SHOP_SUB_STAGE_STATUS_122(ShopSubStageEnum.SHOP_STAGE_12, 1220, "验收", Boolean.FALSE), SHOP_SUB_STAGE_STATUS_122(ShopSubStageEnum.SHOP_STAGE_12, 1220, "待立规内勤验收", Boolean.FALSE),
SHOP_SUB_STAGE_STATUS_123(ShopSubStageEnum.SHOP_STAGE_12, 1230, "已验收", Boolean.TRUE), SHOP_SUB_STAGE_STATUS_123(ShopSubStageEnum.SHOP_STAGE_12, 1230, "已验收", Boolean.TRUE),
//开业运营方案 //开业运营方案

View File

@@ -27,6 +27,10 @@
<result column="shop_location_screenshots" jdbcType="VARCHAR" property="shopLocationScreenshots"/> <result column="shop_location_screenshots" jdbcType="VARCHAR" property="shopLocationScreenshots"/>
<result column="shop_doorway_photo" jdbcType="VARCHAR" property="shopDoorwayPhoto"/> <result column="shop_doorway_photo" jdbcType="VARCHAR" property="shopDoorwayPhoto"/>
<result column="shop_interior_photo" jdbcType="VARCHAR" property="shopInteriorPhoto"/> <result column="shop_interior_photo" jdbcType="VARCHAR" property="shopInteriorPhoto"/>
<result column="satisfaction" jdbcType="INTEGER" property="satisfaction"/>
<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"/>
</resultMap> </resultMap>
<sql id="baseColumn"> <sql id="baseColumn">
id id
@@ -34,7 +38,8 @@
decoration_planned_start_time,construction_completion_time,engineering_acceptance_signatures, decoration_planned_start_time,construction_completion_time,engineering_acceptance_signatures,
operations_acceptance_signatures,partner_acceptance_signatures, operations_acceptance_signatures,partner_acceptance_signatures,
create_time,update_time,deleted,plan_acceptance_time,actual_acceptance_time,booking_user,plan_exit_time, create_time,update_time,deleted,plan_acceptance_time,actual_acceptance_time,booking_user,plan_exit_time,
ks_account,verification_mobile,shop_location_screenshots,shop_doorway_photo,shop_interior_photo ks_account,verification_mobile,shop_location_screenshots,shop_doorway_photo,shop_interior_photo,
satisfaction,acceptance_attachment,is_network_cable,back_kitchen_photo
</sql> </sql>
<insert id="initAcceptanceInfo"> <insert id="initAcceptanceInfo">
<foreach collection="list" index="index" item="item" separator=";"> <foreach collection="list" index="index" item="item" separator=";">
@@ -103,7 +108,19 @@
shop_doorway_photo =#{shopDoorwayPhoto}, shop_doorway_photo =#{shopDoorwayPhoto},
</if> </if>
<if test="shopInteriorPhoto !=null"> <if test="shopInteriorPhoto !=null">
shop_interior_photo =#{shopInteriorPhoto} shop_interior_photo =#{shopInteriorPhoto},
</if>
<if test="satisfaction !=null">
satisfaction = #{satisfaction},
</if>
<if test="isNetworkCable !=null">
is_network_cable = #{isNetworkCable},
</if>
<if test="acceptanceAttachment!=null and acceptanceAttachment!= ''">
acceptance_attachment = #{acceptanceAttachment},
</if>
<if test="backKitchenPhoto !=null and backKitchenPhoto!=''">
back_kitchen_photo = #{backKitchenPhoto}
</if> </if>
</set> </set>
where shop_id = #{shopId} where shop_id = #{shopId}

View File

@@ -212,6 +212,7 @@
<if test="keyWord != null and keyWord != '' "> <if test="keyWord != null and keyWord != '' ">
and xsi.shop_name Like concat("%",#{keyWord},"%") or xsi.store_num Like concat("%",#{keyWord},"%") and xsi.shop_name Like concat("%",#{keyWord},"%") or xsi.store_num Like concat("%",#{keyWord},"%")
</if> </if>
order by xsi.update_time desc
</select> </select>
<select id="platformBuildList" resultType="com.cool.store.response.PlatformBuildListResponse"> <select id="platformBuildList" resultType="com.cool.store.response.PlatformBuildListResponse">
select select

View File

@@ -25,4 +25,8 @@ public class ThreeAcceptanceDTO {
@ApiModelProperty @ApiModelProperty
private Integer status; private Integer status;
@Override
public String toString() {
return pic + remark + result + acceptanceTime + status;
}
} }

View File

@@ -127,6 +127,54 @@ public class AcceptanceInfoDO {
@Column(name = "shop_interior_photo") @Column(name = "shop_interior_photo")
private String shopInteriorPhoto; private String shopInteriorPhoto;
/**满意度0-低1-中2-高', */
@Column(name = "satisfaction")
private Integer satisfaction;
/**
* 网线安装 0-否 1-是
*/
@Column(name = "is_network_cable")
private Boolean isNetworkCable;
//'验收单附件',
@Column(name = "acceptance_attachment")
private String acceptanceAttachment;
//'后厨照片',
@Column(name = "back_kitchen_photo")
private String backKitchenPhoto;
public Boolean getIsNetworkCable() {
return isNetworkCable;
}
public void setIsNetworkCable(Boolean networkCable) {
isNetworkCable = networkCable;
}
public Integer getSatisfaction() {
return satisfaction;
}
public void setSatisfaction(Integer satisfaction) {
this.satisfaction = satisfaction;
}
public String getAcceptanceAttachment() {
return acceptanceAttachment;
}
public void setAcceptanceAttachment(String acceptanceAttachment) {
this.acceptanceAttachment = acceptanceAttachment;
}
public String getBackKitchenPhoto() {
return backKitchenPhoto;
}
public void setBackKitchenPhoto(String backKitchenPhoto) {
this.backKitchenPhoto = backKitchenPhoto;
}
public String getKsAccount() { public String getKsAccount() {
return ksAccount; return ksAccount;

View File

@@ -5,8 +5,10 @@ import com.cool.store.entity.AssessmentDataDO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import javax.persistence.Column;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.util.List; import java.util.List;
@@ -37,8 +39,20 @@ public class ThreeAcceptanceRequest {
@ApiModelProperty("门店内景照片") @ApiModelProperty("门店内景照片")
private String shopInteriorPhoto; private String shopInteriorPhoto;
@ApiModelProperty("满意度0-低1-中2-高',")
private Integer satisfaction;
@ApiModelProperty("网线安装 false-否 true-是")
private Boolean isNetworkCable;
@ApiModelProperty("验收单附件")
private String acceptanceAttachment;
@ApiModelProperty("后厨照片")
private String backKitchenPhoto;
public Boolean miniCheck(){ public Boolean miniCheck(){
if (StringUtils.isAnyBlank(this.shopLocationScreenshots)){ if (StringUtils.isAnyBlank(this.partnerAcceptance.toString())|| ObjectUtils.anyNull(this.satisfaction,this.isNetworkCable)){
return false; return false;
} }
return true; return true;

View File

@@ -28,4 +28,16 @@ public class ThreeSignResponse {
private String shopDoorwayPhoto; private String shopDoorwayPhoto;
@ApiModelProperty("门店内景照片") @ApiModelProperty("门店内景照片")
private String shopInteriorPhoto; private String shopInteriorPhoto;
@ApiModelProperty("满意度0-低1-中2-高',")
private Integer satisfaction;
@ApiModelProperty("网线安装 false-否 true-是")
private Boolean isNetworkCable;
@ApiModelProperty("验收单附件")
private String acceptanceAttachment;
@ApiModelProperty("后厨照片")
private String backKitchenPhoto;
} }

View File

@@ -359,19 +359,26 @@ public class DecorationServiceImpl implements DecorationService {
acceptanceInfoDO.setKsAccount(request.getKsAccount()); acceptanceInfoDO.setKsAccount(request.getKsAccount());
acceptanceInfoDO.setVerificationMobile(request.getVerificationPhone()); acceptanceInfoDO.setVerificationMobile(request.getVerificationPhone());
acceptanceInfoDO.setShopLocationScreenshots(request.getShopLocationScreenshots()); acceptanceInfoDO.setShopLocationScreenshots(request.getShopLocationScreenshots());
acceptanceInfoDO.setSatisfaction(request.getSatisfaction());
acceptanceInfoDO.setIsNetworkCable(request.getIsNetworkCable());
acceptanceInfoDAO.updateAcceptanceInfo(acceptanceInfoDO); acceptanceInfoDAO.updateAcceptanceInfo(acceptanceInfoDO);
} }
//更新阶段状态验收中 //更新阶段状态验收中
shopStageInfoDAO.updateShopStageInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_122); shopStageInfoDAO.updateShopStageInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_122);
ShopInfoDO shopInfoDO = shopInfoDAO.getShopInfo(request.getShopId()); ShopInfoDO shopInfoDO = shopInfoDAO.getShopInfo(request.getShopId());
LineInfoDO lineInfoDO = lineInfoMapper.getByLineId(shopInfoDO.getLineId()); 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<>(); HashMap<String, String> map = new HashMap<>();
map.put("partnerUsername", lineInfoDO.getUsername()); map.put("partnerUsername", lineInfoDO.getUsername());
map.put("partnerMobile", lineInfoDO.getMobile()); map.put("partnerMobile", lineInfoDO.getMobile());
map.put("storeName", shopInfoDO.getShopName()); map.put("storeName", shopInfoDO.getShopName());
commonService.sendQWMessage(Collections.singletonList(shopInfoDO.getInvestmentManager()), commonService.sendQWMessage(sendUserIds,
MessageEnum.MESSAGE_37, MessageEnum.MESSAGE_37,
map); map);
}
return Boolean.TRUE; return Boolean.TRUE;
} }
@@ -396,7 +403,7 @@ public class DecorationServiceImpl implements DecorationService {
List<ShopInfoDO> shopInfoDOS = shopInfoMapper.selectShopListByRegionId(regions, ShopSubStageEnum.SHOP_STAGE_12.getShopSubStage(), request.getSubStageStatus(), null); List<ShopInfoDO> shopInfoDOS = shopInfoMapper.selectShopListByRegionId(regions, ShopSubStageEnum.SHOP_STAGE_12.getShopSubStage(), request.getSubStageStatus(), null);
PageInfo pageInfo = new PageInfo<>(shopInfoDOS); PageInfo pageInfo = new PageInfo<>(shopInfoDOS);
if (shopInfoDOS.isEmpty()) { if (shopInfoDOS.isEmpty()) {
log.info("工程部监理下门店为空"); log.info("用户下门店为空");
return pageInfo; return pageInfo;
} }
Map<Long, ShopInfoDO> ShopIdmap = shopInfoDOS.stream().collect(Collectors.toMap(ShopInfoDO::getId, dto1 -> dto1)); Map<Long, ShopInfoDO> ShopIdmap = shopInfoDOS.stream().collect(Collectors.toMap(ShopInfoDO::getId, dto1 -> dto1));
@@ -739,13 +746,14 @@ public class DecorationServiceImpl implements DecorationService {
@Override @Override
public Boolean pcSubmitAcceptanceSign(ThreeAcceptanceRequest request) { public Boolean pcSubmitAcceptanceSign(ThreeAcceptanceRequest request) {
log.info("submitAcceptance, request:{} ", JSONObject.toJSONString(request)); log.info("submitAcceptance, request:{} ", JSONObject.toJSONString(request));
if (StringUtils.isAnyBlank(request.getShopDoorwayPhoto(), request.getShopInteriorPhoto())) { if (StringUtils.isAnyBlank(request.getOperationsAcceptance().toString(), request.getShopDoorwayPhoto(), request.getShopInteriorPhoto(), request.getAcceptanceAttachment(), request.getBackKitchenPhoto())) {
throw new ServiceException(ErrorCodeEnum.THE_DATA_IS_NOT_FILLED); throw new ServiceException(ErrorCodeEnum.THE_DATA_IS_NOT_FILLED);
} }
//营运部 验收签名 //营运部 验收签名
AcceptanceInfoDO acceptanceInfoDO1 = acceptanceInfoDAO.selectByShopId(request.getShopId()); AcceptanceInfoDO acceptanceInfoDO1 = acceptanceInfoDAO.selectByShopId(request.getShopId());
if (StringUtils.isNotEmpty(acceptanceInfoDO1.getPartnerAcceptanceSignatures()) if (Objects.isNull(acceptanceInfoDO1)) {
&& Objects.nonNull(request.getOperationsAcceptance())) { throw new ServiceException(ErrorCodeEnum.GET_INFO_ERROR);
}
ThreeAcceptanceDTO partner = JSONObject.parseObject(acceptanceInfoDO1.getPartnerAcceptanceSignatures(), ThreeAcceptanceDTO.class); ThreeAcceptanceDTO partner = JSONObject.parseObject(acceptanceInfoDO1.getPartnerAcceptanceSignatures(), ThreeAcceptanceDTO.class);
request.getOperationsAcceptance().setStatus(CommonConstants.ONE); request.getOperationsAcceptance().setStatus(CommonConstants.ONE);
request.getOperationsAcceptance().setAcceptanceTime(new Date()); request.getOperationsAcceptance().setAcceptanceTime(new Date());
@@ -757,6 +765,8 @@ public class DecorationServiceImpl implements DecorationService {
acceptanceInfoDO.setActualAcceptanceTime(new Date()); acceptanceInfoDO.setActualAcceptanceTime(new Date());
acceptanceInfoDO.setShopDoorwayPhoto(request.getShopDoorwayPhoto()); acceptanceInfoDO.setShopDoorwayPhoto(request.getShopDoorwayPhoto());
acceptanceInfoDO.setShopInteriorPhoto(request.getShopInteriorPhoto()); acceptanceInfoDO.setShopInteriorPhoto(request.getShopInteriorPhoto());
acceptanceInfoDO.setAcceptanceAttachment(request.getAcceptanceAttachment());
acceptanceInfoDO.setBackKitchenPhoto(request.getBackKitchenPhoto());
acceptanceInfoDAO.updateAcceptanceInfo(acceptanceInfoDO); acceptanceInfoDAO.updateAcceptanceInfo(acceptanceInfoDO);
if (CommonConstants.ONE == request.getOperationsAcceptance().getResult() if (CommonConstants.ONE == request.getOperationsAcceptance().getResult()
&& CommonConstants.ONE == partner.getResult()) { && CommonConstants.ONE == partner.getResult()) {
@@ -768,7 +778,7 @@ public class DecorationServiceImpl implements DecorationService {
//未通过至为待验收 //未通过至为待验收
shopStageInfoDAO.updateShopStageAndAuditInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_121, null); shopStageInfoDAO.updateShopStageAndAuditInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_121, null);
} }
}
return Boolean.TRUE; return Boolean.TRUE;
} }
@@ -799,6 +809,10 @@ public class DecorationServiceImpl implements DecorationService {
threeSignResponse.setShopLocationScreenshots(acceptanceInfoDO.getShopLocationScreenshots()); threeSignResponse.setShopLocationScreenshots(acceptanceInfoDO.getShopLocationScreenshots());
threeSignResponse.setShopDoorwayPhoto(acceptanceInfoDO.getShopDoorwayPhoto()); threeSignResponse.setShopDoorwayPhoto(acceptanceInfoDO.getShopDoorwayPhoto());
threeSignResponse.setShopInteriorPhoto(acceptanceInfoDO.getShopInteriorPhoto()); threeSignResponse.setShopInteriorPhoto(acceptanceInfoDO.getShopInteriorPhoto());
threeSignResponse.setSatisfaction(acceptanceInfoDO.getSatisfaction());
threeSignResponse.setIsNetworkCable(acceptanceInfoDO.getIsNetworkCable());
threeSignResponse.setAcceptanceAttachment(acceptanceInfoDO.getAcceptanceAttachment());
threeSignResponse.setBackKitchenPhoto(acceptanceInfoDO.getBackKitchenPhoto());
return threeSignResponse; return threeSignResponse;
} }

View File

@@ -458,7 +458,7 @@ public class DeskServiceImpl implements DeskService {
public PageInfo<PreparationCommonPendingVO> fitmentPendingList(DeskRequest deskRequest, LoginUserInfo user) { public PageInfo<PreparationCommonPendingVO> fitmentPendingList(DeskRequest deskRequest, LoginUserInfo user) {
return commonPendingVOPageInfo(deskRequest, user, ShopSubStageEnum.SHOP_STAGE_12, return commonPendingVOPageInfo(deskRequest, user, ShopSubStageEnum.SHOP_STAGE_12,
Collections.singletonList(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_122.getShopSubStageStatus()), Boolean.FALSE); Collections.singletonList(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_122.getShopSubStageStatus()), Boolean.TRUE);
} }
@Override @Override

View File

@@ -779,11 +779,12 @@ public class ShopServiceImpl implements ShopService {
case SHOP_SUB_STAGE_STATUS_50: case SHOP_SUB_STAGE_STATUS_50:
case SHOP_SUB_STAGE_STATUS_110: case SHOP_SUB_STAGE_STATUS_110:
case SHOP_SUB_STAGE_STATUS_111: case SHOP_SUB_STAGE_STATUS_111:
case SHOP_SUB_STAGE_STATUS_122:
case SHOP_SUB_STAGE_STATUS_140: case SHOP_SUB_STAGE_STATUS_140:
case SHOP_SUB_STAGE_STATUS_141: case SHOP_SUB_STAGE_STATUS_141:
case SHOP_SUB_STAGE_STATUS_142: case SHOP_SUB_STAGE_STATUS_142:
return getUserFromInvestmentManager(shopInfo.getInvestmentManager()); return getUserFromInvestmentManager(shopInfo.getInvestmentManager());
case SHOP_SUB_STAGE_STATUS_122:
return getUsersByRolesAndRegion(Collections.singletonList(CONSTRUCTION_CUSTOMER), shopInfo.getRegionId());
case SHOP_SUB_STAGE_STATUS_70: case SHOP_SUB_STAGE_STATUS_70:
case SHOP_SUB_STAGE_STATUS_80: case SHOP_SUB_STAGE_STATUS_80: