Merge remote-tracking branch 'origin/cc_partner_init' into cc_partner_init

This commit is contained in:
bianyadong
2024-05-06 16:00:09 +08:00
22 changed files with 494 additions and 127 deletions

View File

@@ -34,4 +34,13 @@ public enum LicenseTypeEnum {
}
return null;
}
public static LicenseTypeEnum matchName(String name) {
for (LicenseTypeEnum type : LicenseTypeEnum.values()) {
if (type.getMessage().equals(name)) {
return type;
}
}
return null;
}
}

View File

@@ -21,11 +21,11 @@ public class AcceptanceInfoDAO {
@Resource
private AcceptanceInfoMapper acceptanceInfoMapper;
public Long insertAcceptanceInfo(AcceptanceInfoDO acceptanceInfoDO){
public Long insertSelectiveAcceptanceInfo(AcceptanceInfoDO acceptanceInfoDO){
if (Objects.isNull(acceptanceInfoDO)){
return null;
}
acceptanceInfoMapper.insert(acceptanceInfoDO);
acceptanceInfoMapper.insertSelective(acceptanceInfoDO);
return acceptanceInfoDO.getId();
}
public List<AcceptanceInfoDO> selectAcceptanceInfoBySignatures(Integer status){

View File

@@ -0,0 +1,42 @@
package com.cool.store.dto.decoration;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
/**
* @Auther: WangShuo
* @Date: 2024/05/06/下午3:31
* @Version 1.0
* @注释:
*/
@Data
public class AssessmentDataDTO {
@ApiModelProperty("模板id")
private Long templateId;
private Long shopId;
/**
* 店铺是否合格
*/
@ApiModelProperty("店铺是否合格0合格1不合格")
private Boolean qualified;
/**
* 原因
*/
@ApiModelProperty("不合格原因")
private String reason;
/**
* 评语
*/
@ApiModelProperty("评语")
private String comments;
}

View File

@@ -0,0 +1,20 @@
package com.cool.store.dto.decoration;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Auther: WangShuo
* @Date: 2024/05/06/下午3:09
* @Version 1.0
* @注释:
*/
@Data
public class ThreeAcceptanceDTO {
@ApiModelProperty("验收签名 ")
private String AcceptanceSignatures;
@ApiModelProperty("验收评语")
private String Comments;
@ApiModelProperty("0通过1不通过")
private Integer ResultType;
}

View File

@@ -0,0 +1,21 @@
package com.cool.store.request;
import com.cool.store.dto.decoration.AssessmentDataDTO;
import com.cool.store.entity.AssessmentDataDO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @Auther: WangShuo
* @Date: 2024/05/06/下午3:17
* @Version 1.0
* @注释:
*/
@Data
public class ThreeAcceptanceCheckRequest {
private Long shopId;
@ApiModelProperty("检查项")
private List<AssessmentDataDTO> assessmentDataDTOS;
}

View File

@@ -1,5 +1,6 @@
package com.cool.store.request;
import com.cool.store.dto.decoration.ThreeAcceptanceDTO;
import com.cool.store.entity.AssessmentDataDO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -15,24 +16,12 @@ import java.util.List;
@Data
public class ThreeAcceptanceRequest {
private Long shopId;
@ApiModelProperty("工程部验收签名 {pic\":\"\",\"acceptanceTime\":\"\",\"result\":\"\",\"remark\":\"\",\"status\":1}")
private String engineeringAcceptanceSignatures;
@ApiModelProperty("工程部验收评语")
private String engineeringComments;
@ApiModelProperty("0通过1不通过")
private Integer engineeringResultType;
@ApiModelProperty("营运部验收签名 {\"pic\":\"\",\"acceptanceTime\":\"\",\"result\":\"\",\"remark\":\"\",\"status\":1}")
private String operationsAcceptanceSignatures;
@ApiModelProperty("营运部验收评语")
private String operationsComments;
@ApiModelProperty("0通过1不通过")
private Integer operationsResultType;
@ApiModelProperty("加盟商验收签名 {\"pic\":\"\",\"acceptanceTime\":\"\",\"result\":\"\",\"remark\":\"\",\"status\":0}")
private String partnerAcceptanceSignatures;
@ApiModelProperty("加盟商验收评语")
private String partnerComments;
@ApiModelProperty("0通过1不通过")
private Integer partnerResultType;
@ApiModelProperty("工程部验收")
private ThreeAcceptanceDTO engineeringAcceptance;
@ApiModelProperty("营运部验收")
private ThreeAcceptanceDTO operationsAcceptance;
@ApiModelProperty("加盟商验收")
private ThreeAcceptanceDTO partnerAcceptance;
@ApiModelProperty("检查项")
private List<AssessmentDataDO> assessmentDataDOS;
}

View File

@@ -0,0 +1,165 @@
package com.cool.store.response;
import lombok.Data;
@Data
public class GetStoreInfoByCodeResponse {
/**
* 返回结果代码
* 结果代码
*/
private Integer code;
/**
* 返回结果数据
* 结果数据
*/
private InnerData data;
/**
* 提示信息
*/
private String message;
@Data
public static class InnerData {
/**
* 开店状态0=关店1=开店
*/
private String closeTime;
/**
* 加盟商编码
*/
private String franchiseeId;
/**
* 开店状态0=关店1=开店
*/
private Long hdStatus;
/**
* 维度
*/
private String latitude;
/**
* 经度
*/
private String longitude;
/**
* 门店开业时间
*/
private String openDate;
/**
* 开店状态0=关店1=开店
*/
private String openTime;
/**
* 门店地址
*/
private String storeAdd;
/**
* 小区
*/
private String storeArea;
/**
* 门店代码
*/
private String storeCode;
/**
* 大区
*/
private String storeCompany;
/**
* 门店证照信息
*/
private StoreDocument storeDocument;
/**
* 战区
*/
private String storeLarge;
/**
* 门店名称
*/
private String storeName;
/**
* 门店性质
*/
private String storeType;
}
@Data
public static class StoreDocument {
/**
* 营业执照经营场所/住所
*/
private String storeBusinessAdd;
/**
* 营业执照发证日期
*/
private String storeBusinessDate;
/**
* 营业执照图片
*/
private String storeBusinessImg;
/**
* 营业执照名称
*/
private String storeBusinessName;
/**
* 营业执照统一社会信用代码
*/
private String storeBusinessNumber;
/**
* 营业执照类型
*/
private String storeBusinessType;
/**
* 营业执照有效期, 非OCR识别手填。9=长期有效非长期有效则为具体日期2026-06-01
*/
private String storeBusinessValidPeriod;
/**
* 门店代码
*/
private String storeCode;
/**
* 营业执照经营者/法人
*/
private String storeDirector;
/**
* 食品流通经营许可证编号
*/
private String storeFoodLicense;
/**
* 食品流通/经营许可证有效期开始日期
*/
private String storeFoodLicenseBeginDate;
/**
* 食品经营许可证经营场所
*/
private String storeFoodLicenseBusinessAddress;
/**
* 食品经营许可证经营项目
*/
private String storeFoodLicenseBusinessScope;
/**
* 食品流通/经营许可证有效期结束日期
*/
private String storeFoodLicenseEndDate;
/**
* 食品经营许可证照片
*/
private String storeFoodLicenseImg;
/**
* 食品经营许可证法定代表人(负责人)
*/
private String storeFoodLicenseLegalRepresentative;
/**
* 食品经营许可证主体业态
*/
private String storeFoodLicenseMainBusiness;
/**
* 食品经营许可证经营者名称
*/
private String storeFoodLicenseOperatorName;
/**
* 备注
*/
private String storeRemark;
}
}

View File

@@ -1,7 +1,9 @@
package com.cool.store.response;
import cn.hutool.core.date.DateUtil;
import com.cool.store.entity.LicenseTransactDO;
import com.cool.store.entity.ShopAuditInfoDO;
import com.cool.store.enums.LicenseTypeEnum;
import com.cool.store.vo.ShopAuditInfoVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -9,6 +11,7 @@ import lombok.Data;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@Data
@ApiModel("提交证照办理响应体")
@@ -89,8 +92,43 @@ public class SubmitLicenseResponse {
@ApiModelProperty("流程记录")
private List<ShopAuditInfoVO> processRecords;
public static SubmitLicenseResponse from(GetStoreInfoByCodeResponse storeInfoCode){
if (Objects.isNull(storeInfoCode)){
return null;
}
GetStoreInfoByCodeResponse.InnerData data = storeInfoCode.getData();
GetStoreInfoByCodeResponse.StoreDocument storeDocument = data.getStoreDocument();
boolean storeBusinessValidPeriod = storeDocument.getStoreBusinessValidPeriod().equals("9");
SubmitLicenseResponse submitLicenseResponse = new SubmitLicenseResponse();
submitLicenseResponse.setId(null);
submitLicenseResponse.setShopId(null);
submitLicenseResponse.setLicenseType(LicenseTypeEnum.matchName(storeDocument.getStoreBusinessType()).getCode());
submitLicenseResponse.setLicenseLegalPerson(storeDocument.getStoreDirector());
submitLicenseResponse.setIssueTime(DateUtil.parseTime(storeDocument.getStoreBusinessDate()));
submitLicenseResponse.setLicenseAddress(storeDocument.getStoreBusinessAdd());
submitLicenseResponse.setValidity(storeBusinessValidPeriod ? null : DateUtil.parseTime(storeDocument.getStoreBusinessValidPeriod()));
submitLicenseResponse.setOperator(storeDocument.getStoreDirector());
submitLicenseResponse.setFoodLicenseLegalPerson(storeDocument.getStoreFoodLicenseOperatorName());
submitLicenseResponse.setMainBusiness(storeDocument.getStoreFoodLicenseMainBusiness());
submitLicenseResponse.setBusinessProject(storeDocument.getStoreFoodLicenseBusinessScope());
submitLicenseResponse.setRemark(storeDocument.getStoreRemark());
submitLicenseResponse.setRemarkUrl(null);
submitLicenseResponse.setSubmitStatus(null);
submitLicenseResponse.setLicenseUrl(storeDocument.getStoreBusinessImg());
submitLicenseResponse.setLicenseName(storeDocument.getStoreBusinessName());
submitLicenseResponse.setSocialCreditCode(storeDocument.getStoreBusinessNumber());
submitLicenseResponse.setIdCardAndLicense1(null);
submitLicenseResponse.setIdCardAndLicense2(null);
submitLicenseResponse.setFoodLicenseUrl(storeDocument.getStoreFoodLicenseImg());
submitLicenseResponse.setBusinessPremises(storeDocument.getStoreFoodLicenseBusinessAddress());
submitLicenseResponse.setFoodLicenseCode(storeDocument.getStoreFoodLicense());
submitLicenseResponse.setFoodLicenseStartTime(DateUtil.parseTime(storeDocument.getStoreFoodLicenseBeginDate()));
submitLicenseResponse.setFoodLicenseEndTime(DateUtil.parseTime(storeDocument.getStoreFoodLicenseEndDate()));
return submitLicenseResponse;
}
public static SubmitLicenseResponse from(LicenseTransactDO licenseTransactDO) {
if (licenseTransactDO == null) {
if (Objects.isNull(licenseTransactDO)) {
return null;
}
SubmitLicenseResponse submitLicenseResponse = new SubmitLicenseResponse();

View File

@@ -21,7 +21,7 @@ import java.util.List;
public class OpeningOperationPlanVO {
@ApiModelProperty("门店name")
private String name;
private String shopName;
@ApiModelProperty("调研结果")
private String surveyResult;

View File

@@ -151,7 +151,7 @@ public class XfsgTrainingPersonSyncListener implements MessageListener {
}else if(UserRoleEnum.XFSG_SHOPOWNER.getDesc().equals(jobName)){
return UserRoleEnum.XFSG_SHOPOWNER.getCode();
}
return null;
return UserRoleEnum.XFSG_CLERK.getCode();
}
}

View File

@@ -2,6 +2,7 @@ package com.cool.store.service;
import com.cool.store.request.FranchiseAgreementRequest;
import com.cool.store.request.NewStoreRequest;
import com.cool.store.response.GetStoreInfoByCodeResponse;
import com.cool.store.response.ResponseResult;
/**
@@ -33,4 +34,11 @@ public interface CoolStoreStartFlowService {
*/
Boolean getFirstOrder(String shopCode);
/**
* 获取证照信息
* @param storeNum
* @return
*/
GetStoreInfoByCodeResponse getStoreInfoCode(String storeNum);
}

View File

@@ -4,6 +4,7 @@ import com.cool.store.context.LoginUserInfo;
import com.cool.store.dto.decoration.ConstructionScheduleDTO;
import com.cool.store.dto.decoration.DecorationModelDTO;
import com.cool.store.request.LinePaySubmitRequest;
import com.cool.store.request.ThreeAcceptanceCheckRequest;
import com.cool.store.request.ThreeAcceptanceRequest;
import com.cool.store.request.BookingAcceptanceRequest;
import com.cool.store.response.FitmentResponse;
@@ -84,8 +85,9 @@ public interface DecorationService {
/**
* @Auther: wangshuo
* @Date: 2024/4/29
* @description:提交三方验收
* @description:提交三方验收检查项
*/
Boolean submitThreeCheck(ThreeAcceptanceCheckRequest request);
Boolean submitAcceptance(ThreeAcceptanceRequest request,PartnerUserInfoVO minUser, LoginUserInfo pcUser );
/**
* @Auther: wangshuo

View File

@@ -9,6 +9,7 @@ import com.cool.store.dao.ShopStageInfoDAO;
import com.cool.store.entity.EnterpriseUserDO;
import com.cool.store.entity.LicenseTransactDO;
import com.cool.store.entity.ShopAuditInfoDO;
import com.cool.store.entity.ShopInfoDO;
import com.cool.store.enums.AuditTypeEnum;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.enums.point.ShopSubStageStatusEnum;
@@ -16,16 +17,18 @@ import com.cool.store.exception.ServiceException;
import com.cool.store.mapper.ApplyLicenseMapper;
import com.cool.store.mapper.EnterpriseUserMapper;
import com.cool.store.mapper.ShopAuditInfoMapper;
import com.cool.store.mapper.ShopInfoMapper;
import com.cool.store.request.LicenseListRequest;
import com.cool.store.request.SubmitLicenseRequest;
import com.cool.store.response.GetStoreInfoByCodeResponse;
import com.cool.store.response.LicenseListResponse;
import com.cool.store.response.SubmitLicenseResponse;
import com.cool.store.service.ApplyLicenseService;
import com.cool.store.service.CoolStoreStartFlowService;
import com.cool.store.service.RegionService;
import com.cool.store.utils.StringUtil;
import com.cool.store.utils.poi.StringUtils;
import com.cool.store.utils.poi.constant.Constants;
import com.cool.store.vo.OpenAcceptanceInfoListVO;
import com.cool.store.vo.ShopAuditInfoVO;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
@@ -63,21 +66,27 @@ public class ApplyLicenseServiceImpl implements ApplyLicenseService {
@Resource
EnterpriseUserMapper userMapper;
@Resource
CoolStoreStartFlowService coolStoreStartFlowService;
@Resource
ShopInfoMapper shopInfoMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean submitLicense(SubmitLicenseRequest request) {
log.info("submitLicense request{}", JSONObject.toJSONString(request));
if (Objects.isNull(request)){
if (Objects.isNull(request)) {
return false;
}
LicenseTransactDO licenseTransactDO = request.toLicenseTransactDO();
if (request.getId() == null){
if (request.getId() == null) {
applyLicenseMapper.insertSelective(licenseTransactDO);
}else {
} else {
licenseTransactDO.setId(request.getId());
applyLicenseMapper.updateByPrimaryKeySelective(licenseTransactDO);
}
if (request.getSubmitStatus() == Constants.ONE_INTEGER){
if (request.getSubmitStatus() == Constants.ONE_INTEGER) {
ShopAuditInfoDO shopAuditInfoDO = new ShopAuditInfoDO();
shopAuditInfoDO.setShopId(request.getShopId());
shopAuditInfoDO.setAuditType(AuditTypeEnum.LICENSE_APPROVAL.getCode());
@@ -86,7 +95,7 @@ public class ApplyLicenseServiceImpl implements ApplyLicenseService {
shopAuditInfoDO.setSubmittedUserName(user.getName());
shopAuditInfoDO.setDataType(0);
shopAuditInfoMapper.insertSelective(shopAuditInfoDO);
shopStageInfoDAO.updateShopStageAndAuditInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_41,null);
shopStageInfoDAO.updateShopStageAndAuditInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_41, null);
}
return true;
}
@@ -94,33 +103,42 @@ public class ApplyLicenseServiceImpl implements ApplyLicenseService {
@Override
public SubmitLicenseResponse getDefault(Long shopId) {
LicenseTransactDO licenseTransactDO = new LicenseTransactDO();
licenseTransactDO.setShopId(shopId);
LicenseTransactDO result = applyLicenseMapper.selectOne(licenseTransactDO);
if (Objects.isNull(result)){
throw new ServiceException(ErrorCodeEnum.LICENSE_NOT_EXIST);
//1.如果已经提交过证照信息,直接查询后组装数据返回
LicenseTransactDO result = applyLicenseMapper.selectByShopId(shopId);
SubmitLicenseResponse submitLicenseResponse = new SubmitLicenseResponse();
if (Objects.nonNull(result)){
submitLicenseResponse = SubmitLicenseResponse.from(result);
List<ShopAuditInfoVO> listByShopIdAndType = shopAuditInfoMapper.getListByShopIdAndType(shopId, AuditTypeEnum.LICENSE_APPROVAL.getCode());
List<String> userIds = listByShopIdAndType.stream().map(ShopAuditInfoVO::getSubmittedUserId).collect(Collectors.toList());
List<EnterpriseUserDO> userInfoByUserIds = new ArrayList<>();
if (CollectionUtils.isNotEmpty(userIds)) {
userInfoByUserIds = userMapper.getUserInfoByUserIds(userIds);
Map<String, String> userAvatarMap = userInfoByUserIds.stream()
.filter(item -> StringUtil.isNotBlank(item.getUserId()) && StringUtil.isNotBlank(item.getAvatar()))
.collect(Collectors.toMap(k -> k.getUserId(), v -> v.getAvatar()));
listByShopIdAndType.stream().forEach(item -> {
String avatar = userAvatarMap.get(item.getSubmittedUserId());
if (StringUtils.isBlank(avatar)) {
item.setAvatar(Constants.AVATAR_DEFAULT);
} else {
item.setAvatar(avatar);
}
});
}
submitLicenseResponse.setProcessRecords(listByShopIdAndType);
return submitLicenseResponse;
}
SubmitLicenseResponse submitLicenseResponse = SubmitLicenseResponse.from(result);
List<ShopAuditInfoVO> listByShopIdAndType = shopAuditInfoMapper.getListByShopIdAndType(shopId, AuditTypeEnum.LICENSE_APPROVAL.getCode());
List<String> userIds = listByShopIdAndType.stream().map(ShopAuditInfoVO::getSubmittedUserId).collect(Collectors.toList());
List<EnterpriseUserDO> userInfoByUserIds = new ArrayList<>();
if (CollectionUtils.isNotEmpty(userIds)){
userInfoByUserIds = userMapper.getUserInfoByUserIds(userIds);
Map<String, String> userAvatarMap = userInfoByUserIds.stream()
.filter(item -> StringUtil.isNotBlank(item.getUserId()) && StringUtil.isNotBlank(item.getAvatar()))
.collect(Collectors.toMap(k -> k.getUserId(), v -> v.getAvatar()));
listByShopIdAndType.stream().forEach( item -> {
String avatar = userAvatarMap.get(item.getSubmittedUserId());
if (StringUtils.isBlank(avatar)){
item.setAvatar(Constants.AVATAR_DEFAULT);
}else {
item.setAvatar(avatar);
}
});
//2.未查到证照信息,所以查询鲜丰的默认值
ShopInfoDO shopInfoDO = shopInfoMapper.selectByPrimaryKey(shopId);
if (Objects.nonNull(shopInfoDO.getStoreNum())) {
GetStoreInfoByCodeResponse storeInfoCode = coolStoreStartFlowService.getStoreInfoCode(shopInfoDO.getStoreNum());
if (Objects.nonNull(storeInfoCode) && Objects.nonNull(storeInfoCode.getData()) && storeInfoCode.getCode() == 0) {
submitLicenseResponse = SubmitLicenseResponse.from(storeInfoCode);
return submitLicenseResponse;
}
}
submitLicenseResponse.setProcessRecords(listByShopIdAndType);
return submitLicenseResponse;
//3.既没有提交数据,也没有在鲜丰端查到证照信息,则返回空自由填写
return null;
}
@Override
@@ -154,7 +172,7 @@ public class ApplyLicenseServiceImpl implements ApplyLicenseService {
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean licenseExamine(Long shopId, Integer status,String result) {
public Boolean licenseExamine(Long shopId, Integer status, String result) {
ShopAuditInfoDO shopAuditInfoDO = new ShopAuditInfoDO();
shopAuditInfoDO.setShopId(shopId);
ShopSubStageStatusEnum shopSubStageStatusEnum = null;
@@ -166,11 +184,11 @@ public class ApplyLicenseServiceImpl implements ApplyLicenseService {
shopAuditInfoDO.setResultType(status);
LicenseTransactDO licenseTransactDO = new LicenseTransactDO();
licenseTransactDO.setShopId(shopId);
if (status == Constants.ZERO_INTEGER){
if (status == Constants.ZERO_INTEGER) {
shopAuditInfoDO.setPassReason(result);
shopSubStageStatusEnum = ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_43;
licenseTransactDO.setSubmitStatus(3);
}else if (status == Constants.ONE_INTEGER){
} else if (status == Constants.ONE_INTEGER) {
licenseTransactDO.setSubmitStatus(2);
shopAuditInfoDO.setRejectReason(result);
shopSubStageStatusEnum = ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_42;
@@ -179,7 +197,7 @@ public class ApplyLicenseServiceImpl implements ApplyLicenseService {
//插入操作/意见
shopAuditInfoMapper.insertSelective(shopAuditInfoDO);
//更新阶段状态
shopStageInfoDAO.updateShopStageAndAuditInfo(shopId,shopSubStageStatusEnum,null);
shopStageInfoDAO.updateShopStageAndAuditInfo(shopId, shopSubStageStatusEnum, null);
return null;
}
}

View File

@@ -1,5 +1,6 @@
package com.cool.store.service.impl;
import com.cool.store.constants.CommonConstants;
import com.cool.store.dao.AssessmentDataDAO;
import com.cool.store.entity.AssessmentDataDO;
import com.cool.store.service.AssessmentDataService;
@@ -20,11 +21,17 @@ public class AssessmentDataServiceImpl implements AssessmentDataService {
private AssessmentDataDAO assessmentDataDAO;
@Override
public Boolean batchInsert(List<AssessmentDataDO> assessmentDataDOS) {
if (assessmentDataDOS.isEmpty()) {
return Boolean.FALSE;
}
return assessmentDataDAO.batchInsert(assessmentDataDOS);
}
@Override
public Integer batchUpdate(List<AssessmentDataDO> assessmentDataDOS) {
if (assessmentDataDOS.isEmpty()) {
return CommonConstants.ZERO;
}
return assessmentDataDAO.batchUpdate(assessmentDataDOS);
}
}

View File

@@ -9,10 +9,12 @@ import com.cool.store.exception.ServiceException;
import com.cool.store.mq.util.HttpRestTemplateService;
import com.cool.store.request.FranchiseAgreementRequest;
import com.cool.store.request.NewStoreRequest;
import com.cool.store.response.GetStoreInfoByCodeResponse;
import com.cool.store.response.InitiatingResponse;
import com.cool.store.response.ResponseResult;
import com.cool.store.service.CoolStoreStartFlowService;
import com.cool.store.utils.SecureUtil;
import com.cool.store.utils.poi.StringUtils;
import com.cool.store.utils.poi.constant.Constants;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
@@ -102,6 +104,24 @@ public class CoolStoreStartFlowServiceImpl implements CoolStoreStartFlowService
throw new ServiceException(ErrorCodeEnum. GET_FIRST_ORDER);
}
}
@Override
public GetStoreInfoByCodeResponse getStoreInfoCode(String storeNum) {
log.info("getStoreInfoCode storeNum:{}",storeNum);
if (StringUtils.isBlank(storeNum)){
throw new ServiceException(ErrorCodeEnum.STORE_NUM_NOT_FOUND);
}
Map<String, Object> requestMap = new HashMap<>();
fillSignatureInfo(requestMap);
requestMap.put("storeCode",storeNum);
String url = xfsgUrl + Constants.GET_STORE_INFO_BY_CODE + "?timestamp=" + requestMap.get("timestamp") + "&signature=" + requestMap.get("signature");
GetStoreInfoByCodeResponse response = httpRestTemplateService.getForObject(url, GetStoreInfoByCodeResponse.class, requestMap);
return response;
}
private void fillSignatureInfo(Map<String, Object> requestMap) {
long timestamp = System.currentTimeMillis();
String signature = SecureUtil.getSignature(timestamp);

View File

@@ -17,6 +17,7 @@ import com.cool.store.exception.ServiceException;
import com.cool.store.mapper.LineInfoMapper;
import com.cool.store.mapper.ShopInfoMapper;
import com.cool.store.request.LinePaySubmitRequest;
import com.cool.store.request.ThreeAcceptanceCheckRequest;
import com.cool.store.request.ThreeAcceptanceRequest;
import com.cool.store.request.BookingAcceptanceRequest;
import com.cool.store.response.FitmentResponse;
@@ -59,6 +60,8 @@ public class DecorationServiceImpl implements DecorationService {
@Resource
private ShopAuditInfoDAO shopAuditInfoDAO;
@Resource
private SysRoleService sysRoleService;
@Resource
private EnterpriseUserDAO enterpriseUserDAO;
@Resource
private RegionService regionService;
@@ -96,14 +99,17 @@ public class DecorationServiceImpl implements DecorationService {
FitmentResponse fitmentResponse = new FitmentResponse();
List<DecorationStageVO> stageInfoList = new ArrayList<>();
//设计
this.DesignInfo(shopId);
stageInfoList.add(getDecorationStageVOS(shopId, ShopSubStageEnum.SHOP_STAGE_9));
//装修款
this.getDecorationModel(shopId, null);
stageInfoList.add(getDecorationStageVOS(shopId, ShopSubStageEnum.SHOP_STAGE_10));
//施工阶段计划时间
//施工阶段
this.getConstructionInfo(shopId);
stageInfoList.add(getDecorationStageVOS(shopId, ShopSubStageEnum.SHOP_STAGE_11));
//三方验收
//TODO 三方验收
stageInfoList.add(getDecorationStageVOS(shopId, ShopSubStageEnum.SHOP_STAGE_12));
//视觉验收
//TODO 视觉验收
stageInfoList.add(getDecorationStageVOS(shopId, ShopSubStageEnum.SHOP_STAGE_13));
fitmentResponse.setStageInfoList(stageInfoList);
return fitmentResponse;
@@ -116,6 +122,8 @@ public class DecorationServiceImpl implements DecorationService {
decorationStageVO.setShopSubStage(ShopStage.getShopSubStage());
decorationStageVO.setShopSubStageName(shopSubStageEnum.getShopSubStageName());
decorationStageVO.setCreatTime(ShopStage.getCreateTime());
decorationStageVO.setPlanEndTime(ShopStage.getPlanCompleteTime());
decorationStageVO.setActualCompleteTime(ShopStage.getActualCompleteTime());
return decorationStageVO;
}
@@ -399,6 +407,23 @@ public class DecorationServiceImpl implements DecorationService {
return constructionScheduleDTO;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean submitThreeCheck(ThreeAcceptanceCheckRequest request) {
log.info("submitThreeCheck, request:{} ", JSONObject.toJSONString(request));
List<AssessmentDataDO> assessmentDataDOS = new ArrayList<>();
BeanUtil.copyProperties(request.getAssessmentDataDTOS(),assessmentDataDOS);
for(AssessmentDataDO assessmentDataDO : assessmentDataDOS){
assessmentDataDO.setShopId(request.getShopId());
}
Boolean assessment = assessmentDataService.batchInsert(assessmentDataDOS);
if (assessment == Boolean.FALSE) {
log.error("三方验收插入检查项失败");
throw new ServiceException(ErrorCodeEnum.CHECK_ITEM);
}
return assessment;
}
@Override
public PageInfo<fitmentCheckVO> getFitmentAcceptanceList(Integer subStageStatus, LoginUserInfo user, Integer pageNum, Integer pageSize) {
List<String> authRegionIds = userAuthMappingService.getAuthRegionIdAndSubRegionIdByUserId(user.getUserId());
@@ -406,11 +431,19 @@ public class DecorationServiceImpl implements DecorationService {
for (String authRegionId : authRegionIds) {
regions.add(Long.parseLong(authRegionId));
}
if (regions.isEmpty()) {
log.info("该用户下权限没有管理区域");
return null;
}
List<fitmentCheckVO> fitmentCheckVOList = new ArrayList<>();
//shopId,lineid,regionid,shopname,storenum,
PageHelper.startPage(pageNum, pageSize);
List<ShopInfoDO> shopInfoDOS = shopInfoMapper.selectShopListByRegionId(regions, subStageStatus);
PageInfo pageInfo = new PageInfo<>(shopInfoDOS);
if (shopInfoDOS.isEmpty()) {
log.info("该工程部监理下门店为空");
return pageInfo;
}
Map<Long, ShopInfoDO> ShopIdmap = shopInfoDOS.stream().collect(Collectors.toMap(ShopInfoDO::getId, dto1 -> dto1));
//招商经理选址人员拓展经理id
List<Long> lineIds = shopInfoDOS.stream().map(ShopInfoDO::getLineId).collect(Collectors.toList());
@@ -421,7 +454,7 @@ public class DecorationServiceImpl implements DecorationService {
List<UserNameDTO> nameByUserId = enterpriseUserDAO.getNameByUserId(InvestmentManagerIds);
Map<String, UserNameDTO> vonameMap = nameByUserId.stream()
.collect(Collectors.toMap(UserNameDTO::getUserId, vo -> vo));
//选址人员name
//选址人员(拓展经理)name
List<String> setterIds = lineInfos.stream().map(LineInfoDO::getDevelopmentManager).collect(Collectors.toList());
List<UserNameDTO> setterName = enterpriseUserDAO.getNameByUserId(setterIds);
Map<String, UserNameDTO> setterNameMap = setterName.stream()
@@ -429,6 +462,15 @@ public class DecorationServiceImpl implements DecorationService {
//所属战区
List<Long> regionIds = shopInfoDOS.stream().map(ShopInfoDO::getRegionId).collect(Collectors.toList());
Map<Long, String> regionNameMap = regionService.getBelongWarRegionNameMap(regionIds);
//战区经理name
Map<Long, String> fightManger = new HashMap<>();
for (Long regionId : regionIds) {
String fightMangerUserId = sysRoleService.getUserIdByRegionIdWithRolePriority(regionId, Arrays.asList(UserRoleEnum.THEATER_MANAGER));
List<UserNameDTO> fightMangerName = enterpriseUserDAO.getNameByUserId(Arrays.asList(fightMangerUserId));
if (!fightMangerName.isEmpty()) {
fightManger.put(regionId, fightMangerName.get(CommonConstants.ZERO).getName());
}
}
//施工计划完成时间 //施工实际完成实际//验收状态//计划验收时间//验收实际时间
Map<Long, ConstructionScheduleDTO> ConstructionScheduleMap = new HashMap<>();
Map<Long, ShopStageInfoDO> ShopStageInfoDOMap = new HashMap<>();
@@ -438,7 +480,6 @@ public class DecorationServiceImpl implements DecorationService {
ShopStageInfoDO shopSubStageInfo = shopStageInfoDAO.getShopSubStageInfo(shopId, ShopSubStageEnum.SHOP_STAGE_12);
ShopStageInfoDOMap.put(shopId, shopSubStageInfo);
}
//战区经理 TODO
for (ShopInfoDO shopInfoDO : shopInfoDOS) {
fitmentCheckVO fitmentCheckVO = new fitmentCheckVO();
@@ -506,44 +547,25 @@ public class DecorationServiceImpl implements DecorationService {
throw new ServiceException(ErrorCodeEnum.CHECK_ITEM);
}
//工程部验收签名
ShopAuditInfoDO shopAuditInfoDO = new ShopAuditInfoDO();
shopAuditInfoDO.setAuditType(CommonConstants.FIVE);
shopAuditInfoDO.setShopId(request.getShopId());
shopAuditInfoDO.setSubmittedUserId(minUser.getPartnerId());
shopAuditInfoDO.setSubmittedUserName(minUser.getUsername());
if (AuditResultTypeEnum.PASS.getCode().equals(request.getEngineeringResultType())) {
shopAuditInfoDO.setResultType(AuditResultTypeEnum.PASS.getCode());
shopAuditInfoDO.setPassReason(request.getEngineeringComments());
} else {
shopAuditInfoDO.setResultType(AuditResultTypeEnum.REJECT.getCode());
shopAuditInfoDO.setPassReason(request.getEngineeringComments());
}
shopAuditInfoDO.setCreateTime(new Date());
shopAuditInfoDAO.addAuditInfo(shopAuditInfoDO);
JSONObject engineering = new JSONObject();
engineering.put("pic", request.getEngineeringAcceptance().getAcceptanceSignatures());
engineering.put("acceptanceTime", new Date());
engineering.put("result", request.getEngineeringAcceptance().getResultType());
engineering.put("remark", request.getEngineeringAcceptance().getComments());
engineering.put("status", 1);
//加盟商
ShopAuditInfoDO shopAuditInfoDO1 = new ShopAuditInfoDO();
shopAuditInfoDO1.setAuditType(CommonConstants.FIVE);
shopAuditInfoDO1.setShopId(request.getShopId());
shopAuditInfoDO1.setSubmittedUserId(minUser.getPartnerId());
shopAuditInfoDO1.setSubmittedUserName(minUser.getUsername());
if (AuditResultTypeEnum.PASS.getCode().equals(request.getPartnerResultType())) {
shopAuditInfoDO1.setResultType(AuditResultTypeEnum.PASS.getCode());
shopAuditInfoDO1.setPassReason(request.getPartnerComments());
} else {
shopAuditInfoDO1.setResultType(AuditResultTypeEnum.REJECT.getCode());
shopAuditInfoDO1.setPassReason(request.getPartnerComments());
}
shopAuditInfoDO1.setCreateTime(new Date());
shopAuditInfoDAO.addAuditInfo(shopAuditInfoDO1);
JSONObject partner = new JSONObject();
partner.put("pic", request.getPartnerAcceptance().getAcceptanceSignatures());
partner.put("acceptanceTime", new Date());
partner.put("result", request.getPartnerAcceptance().getResultType());
partner.put("remark", request.getPartnerAcceptance().getComments());
partner.put("status", 1);
AcceptanceInfoDO acceptanceInfoDO = new AcceptanceInfoDO();
acceptanceInfoDO.setShopId(request.getShopId());
acceptanceInfoDO.setPartnerAcceptanceSignatures(request.getPartnerAcceptanceSignatures());
acceptanceInfoDO.setEngineeringAcceptanceSignatures(request.getEngineeringAcceptanceSignatures());
acceptanceInfoDO.setPartnerAcceptanceSignatures(partner.toString());
acceptanceInfoDO.setEngineeringAcceptanceSignatures(engineering.toString());
acceptanceInfoDO.setUpdateTime(new Date());
acceptanceInfoDAO.updateAcceptanceInfo(acceptanceInfoDO);
List<AcceptanceInfoDO> assessmentDataDOS = new ArrayList<>();
BeanUtil.copyProperties(request, assessmentDataDOS);
//更新阶段状态验收中
shopStageInfoDAO.updateShopStageInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_122);
return Boolean.TRUE;
@@ -552,41 +574,39 @@ public class DecorationServiceImpl implements DecorationService {
throw new ServiceException(ErrorCodeEnum.THREE_ACCEPTANCE);
}
} else {
//营部验收签名
//营部验收签名
try {
ShopAuditInfoDO shopAuditInfoDO = new ShopAuditInfoDO();
shopAuditInfoDO.setAuditType(CommonConstants.FIVE);
shopAuditInfoDO.setShopId(request.getShopId());
shopAuditInfoDO.setSubmittedUserId(pcUser.getUserId());
shopAuditInfoDO.setSubmittedUserName(pcUser.getName());
if (AuditResultTypeEnum.PASS.getCode().equals(request.getOperationsResultType())) {
shopAuditInfoDO.setResultType(AuditResultTypeEnum.PASS.getCode());
} else {
shopAuditInfoDO.setResultType(AuditResultTypeEnum.REJECT.getCode());
}
shopAuditInfoDO.setPassReason(request.getOperationsComments());
shopAuditInfoDO.setCreateTime(new Date());
shopAuditInfoDAO.addAuditInfo(shopAuditInfoDO);
if (CommonConstants.ZERO==request.getOperationsResultType()) {
//更新阶段状态验收完毕
shopStageInfoDAO.updateShopStageInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_123);
preparationService.whetherToOpenForAcceptance(request.getShopId());
}
else {
shopStageInfoDAO.updateShopStageInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_120);
}
AcceptanceInfoDO acceptanceInfoDO1 = acceptanceInfoDAO.selectByShopId(request.getShopId());
JSONObject engineering = JSONObject.parseObject(acceptanceInfoDO1.getEngineeringAcceptanceSignatures());
JSONObject partner = JSONObject.parseObject(acceptanceInfoDO1.getPartnerAcceptanceSignatures());
JSONObject operations = new JSONObject();
operations.put("pic", request.getOperationsAcceptance().getAcceptanceSignatures());
operations.put("acceptanceTime", new Date());
operations.put("result", request.getOperationsAcceptance().getResultType());
operations.put("remark", request.getOperationsAcceptance().getComments());
operations.put("status", 1);
AcceptanceInfoDO acceptanceInfoDO = new AcceptanceInfoDO();
acceptanceInfoDO.setShopId(request.getShopId());
acceptanceInfoDO.setOperationsAcceptanceSignatures(request.getOperationsAcceptanceSignatures());
acceptanceInfoDO.setOperationsAcceptanceSignatures(operations.toString());
acceptanceInfoDO.setUpdateTime(new Date());
acceptanceInfoDAO.updateAcceptanceInfo(acceptanceInfoDO);
}catch (Exception e) {
if (AuditResultTypeEnum.PASS.getCode() == operations.getInteger("result")
&& AuditResultTypeEnum.PASS.getCode() == partner.getInteger("result")
&& AuditResultTypeEnum.PASS.getCode() == engineering.getInteger("result")) {
//更新阶段状态验收完毕
shopStageInfoDAO.updateShopStageAndAuditInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_123,null);
preparationService.whetherToOpenForAcceptance(request.getShopId());
} else {
//未通过至为带预约
shopStageInfoDAO.updateShopStageAndAuditInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_120, null);
}
} catch (Exception e) {
log.error("PC提交三方验收失败");
throw new ServiceException(ErrorCodeEnum.THREE_ACCEPTANCE);
}
}
return null;
return Boolean.FALSE;
}
@Override

View File

@@ -124,7 +124,7 @@ public class OpeningOperationPlanImpl implements OpeningOperationPlanService {
openingOperationPlanVO.setSubmittedUserName(username.getName());
openingOperationPlanVO.setPreparationUsers(nameByUserId);
ShopInfoDO shopInfo = shopInfoDAO.getShopInfo(shopId);
openingOperationPlanVO.setName(shopInfo.getShopName());
openingOperationPlanVO.setShopName(shopInfo.getShopName());
return openingOperationPlanVO;
}

View File

@@ -191,7 +191,7 @@ public class PreparationServiceImpl implements PreparationService {
AcceptanceInfoDO acceptanceInfoDO = new AcceptanceInfoDO();
acceptanceInfoDO.setShopId(shopId);
acceptanceInfoDO.setCreateTime(new Date());
acceptanceInfoDAO.insertAcceptanceInfo(acceptanceInfoDO);
acceptanceInfoDAO.insertSelectiveAcceptanceInfo(acceptanceInfoDO);
ShopStageInfoDO data3 = shopStageInfoDOMap.get(ShopSubStageEnum.SHOP_STAGE_14.getShopSubStage());
data3.setShopSubStageStatus(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_140.getShopSubStageStatus());
list.add(data3);

View File

@@ -178,6 +178,8 @@ public class Constants
public static final String FRANCHISE_AGREEMENT_PERSON = "/api/coolstore/start-flow/franchise-agreement-person";
public static final String GET_STORE_INFO_BY_CODE = "/api/kdz/get-store-info-by-code";
// 员工详细信息数据接口
public static final String GET_USER_INFO_BY_CODE = "/api/kdz/get-user-info-by-code";
// 加盟商信息数据接口

View File

@@ -6,6 +6,7 @@ import com.cool.store.response.LicenseListResponse;
import com.cool.store.response.ResponseResult;
import com.cool.store.response.SubmitLicenseResponse;
import com.cool.store.service.ApplyLicenseService;
import com.cool.store.service.CoolStoreStartFlowService;
import com.cool.store.vo.OpenAcceptanceInfoListVO;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api;
@@ -51,5 +52,4 @@ public class PCApplyLicenseController {
@RequestParam("result") String result) {
return ResponseResult.success(applyLicenseService.licenseExamine(shopId,status,result));
}
}

View File

@@ -3,6 +3,7 @@ package com.cool.store.controller.webc;
import com.cool.store.request.SubmitLicenseRequest;
import com.cool.store.response.ResponseResult;
import com.cool.store.service.ApplyLicenseService;
import com.cool.store.service.CoolStoreStartFlowService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
@@ -38,7 +39,7 @@ public class ApplyLicenseController {
/**
*
* @param id
* @param
* @param status 0通过 1不通过
* @return
*/
@@ -49,5 +50,4 @@ public class ApplyLicenseController {
@RequestParam("result") String result) {
return ResponseResult.success(applyLicenseService.licenseExamine(shopId,status,result));
}
}

View File

@@ -4,6 +4,7 @@ import com.cool.store.context.PartnerUserHolder;
import com.cool.store.dto.decoration.ConstructionScheduleDTO;
import com.cool.store.dto.decoration.DecorationModelDTO;
import com.cool.store.request.LinePaySubmitRequest;
import com.cool.store.request.ThreeAcceptanceCheckRequest;
import com.cool.store.request.ThreeAcceptanceRequest;
import com.cool.store.response.FitmentResponse;
import com.cool.store.response.ResponseResult;
@@ -80,6 +81,11 @@ public class MiniDecorationController {
public ResponseResult<List<AssessmentTemplateVO>> getChecks(@RequestParam Integer type){
return ResponseResult.success(assessmentTemplateService.listByType(type));
}
@ApiOperation("提交三方验收检查项")
@PostMapping("/submitThreeChecks")
public ResponseResult<Boolean> submitThreeChecks(@RequestBody ThreeAcceptanceCheckRequest request){
return ResponseResult.success(decorationService.submitThreeCheck(request));
}
@ApiOperation("提交三方验收")
@PostMapping("/submitThreeAcceptance")
public ResponseResult<Boolean> submitThreeAcceptance(@RequestBody ThreeAcceptanceRequest request){