Merge #30 into master from cc_20260106_process_change
fix:加盟合同签约及建店资料修改
* cc_20260106_process_change: (6 commits squashed)
- fix:加盟合同签约新增财务审批
- fix:建店资料阶段逻辑修改
- fix:加盟合同签约待办,财务查看待财务审批的待办
- feat:城市规划
- feat:行政区划接口;
fix:城市规划修改
- fix:加盟合同签约审批日志逻辑修改
Signed-off-by: 王非凡 <accounts_67eba0c5fee9c49c80c8e2b4@mail.teambition.com>
Reviewed-by: 正新 <accounts_6964c7bcd2a2c377c5bbd01b@mail.teambition.com>
Merged-by: 正新 <accounts_6964c7bcd2a2c377c5bbd01b@mail.teambition.com>
CR-link: https://codeup.aliyun.com/692ea314dec569489f6f167c/hangzhou/java/custom_zxjp/change/30
This commit is contained in:
@@ -331,4 +331,9 @@ public class RedisConstant {
|
||||
* 每刻退款用户信息
|
||||
*/
|
||||
public static final String MK_USER_MAPPING = "zxjp_mk_user_mapping";
|
||||
|
||||
/**
|
||||
* 建店资料总部订货收款账户信息
|
||||
*/
|
||||
public static final String BUILD_RECEIVE_BANK_INFO = "zxjp_build_receive_bank_info";
|
||||
}
|
||||
|
||||
@@ -369,6 +369,7 @@ public enum ErrorCodeEnum {
|
||||
TP_PENALTY_APPLY_INEFFECTIVE(1810010, "该处罚单未生效无法完成缴费", null),
|
||||
TP_PENALTY_APPLY_NO_NEED_PAY(1810011, "该处罚单无需缴费", null),
|
||||
|
||||
CITY_PLANNING_EXISTS(1820001, "同年份同季度同省市已存在规划,不能重复添加", null),
|
||||
;
|
||||
|
||||
|
||||
|
||||
@@ -50,6 +50,7 @@ public enum ShopSubStageStatusEnum {
|
||||
//加盟合同签约
|
||||
SHOP_SUB_STAGE_STATUS_80(ShopSubStageEnum.SHOP_STAGE_8, 800, "待加盟内勤/大区内勤提交", Boolean.FALSE),
|
||||
SHOP_SUB_STAGE_STATUS_83(ShopSubStageEnum.SHOP_STAGE_8, 830, "待分部内勤审核", Boolean.FALSE),
|
||||
SHOP_SUB_STAGE_STATUS_83_5(ShopSubStageEnum.SHOP_STAGE_8, 835, "待财务审核", Boolean.FALSE),
|
||||
SHOP_SUB_STAGE_STATUS_84(ShopSubStageEnum.SHOP_STAGE_8, 840, "已签约", Boolean.TRUE),
|
||||
SHOP_SUB_STAGE_STATUS_85(ShopSubStageEnum.SHOP_STAGE_8, 850, "审核失败", Boolean.FALSE),
|
||||
|
||||
@@ -88,11 +89,15 @@ public enum ShopSubStageStatusEnum {
|
||||
|
||||
//平台资料提交
|
||||
SHOP_SUB_STAGE_STATUS_150(ShopSubStageEnum.SHOP_STAGE_15, 1500, "待加盟商提交", Boolean.FALSE),
|
||||
// 2025-12-26 加盟开店管理流程调整,新增“待运营顾问审核”,删除1520、1530、1540、1550阶段,
|
||||
SHOP_SUB_STAGE_STATUS_150_5(ShopSubStageEnum.SHOP_STAGE_15, 1505, "待运营顾问审核", Boolean.FALSE),
|
||||
SHOP_SUB_STAGE_STATUS_151(ShopSubStageEnum.SHOP_STAGE_15, 1510, "待圆规物流填写", Boolean.FALSE),
|
||||
// ----- 以下子阶段删除 -----
|
||||
SHOP_SUB_STAGE_STATUS_152(ShopSubStageEnum.SHOP_STAGE_15, 1520, "待财务填写",Boolean.FALSE),
|
||||
SHOP_SUB_STAGE_STATUS_153(ShopSubStageEnum.SHOP_STAGE_15, 1530, "待分部总监审批",Boolean.FALSE),
|
||||
SHOP_SUB_STAGE_STATUS_154(ShopSubStageEnum.SHOP_STAGE_15, 1540, "待分管副总裁审批",Boolean.FALSE),
|
||||
SHOP_SUB_STAGE_STATUS_155(ShopSubStageEnum.SHOP_STAGE_15, 1550, "待总裁审批",Boolean.FALSE),
|
||||
// ----- 以上 -----
|
||||
SHOP_SUB_STAGE_STATUS_156(ShopSubStageEnum.SHOP_STAGE_15, 1560, "已完成", Boolean.TRUE),
|
||||
|
||||
//POS
|
||||
|
||||
@@ -349,8 +349,9 @@ public class ShopStageInfoDAO {
|
||||
public List<ShopStageInfoDO> getSpecialShopStageInfo(List<Long> shopIds, Integer shopSubStage,
|
||||
List<Integer> shopSubStageStatusList,
|
||||
String investmentUserId,
|
||||
List<String> authRegionIds,Boolean ownShopFlag, DeskRequest deskRequest) {
|
||||
return shopStageInfoMapper.getSpecialShopStageInfo(shopIds, shopSubStage, shopSubStageStatusList, investmentUserId, authRegionIds,ownShopFlag, deskRequest);
|
||||
List<String> authRegionIds,Boolean ownShopFlag, DeskRequest deskRequest,
|
||||
String operationsConsultantUserId) {
|
||||
return shopStageInfoMapper.getSpecialShopStageInfo(shopIds, shopSubStage, shopSubStageStatusList, investmentUserId, authRegionIds,ownShopFlag, deskRequest, operationsConsultantUserId);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -47,4 +47,8 @@ public class SignFranchiseDAO {
|
||||
}
|
||||
signFranchiseMapper.updateAuditByShopId(auditId,shopId,dto);
|
||||
}
|
||||
|
||||
public void updateAuditByShopId(Long auditId, Long shopId){
|
||||
signFranchiseMapper.updateAuditByShopId(auditId, shopId, null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import com.cool.store.mapper.StoreMapper;
|
||||
import com.cool.store.response.MiniShopsResponse;
|
||||
import com.google.common.collect.Lists;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.collections4.MapUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.springframework.stereotype.Repository;
|
||||
@@ -18,6 +19,7 @@ import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Repository
|
||||
public class StoreDao {
|
||||
@@ -181,4 +183,32 @@ public class StoreDao {
|
||||
public List<StoreDO> getNoOrderStore(LocalDate latestDate, List<String> businessTypes, Boolean inBusinessType) {
|
||||
return storeMapper.getNoOrderStore(latestDate, businessTypes, inBusinessType);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据行政区划查询门店数量统计
|
||||
* @param cityNames 市名称列表
|
||||
* @return <年, <季度, <省, <市, 门店数量>>>>
|
||||
*/
|
||||
public Map<Integer, Map<Integer, Map<String, Map<String, Integer>>>> storeNumStatisticsByAd(List<Integer> years, List<String> cityNames) {
|
||||
if (CollectionUtils.isEmpty(cityNames)) {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
List<Map<String, Object>> maps = storeMapper.storeNumStatisticsByAd(years, cityNames);
|
||||
return maps.stream()
|
||||
.collect(Collectors.groupingBy(
|
||||
v -> MapUtils.getInteger(v, "year"),
|
||||
Collectors.groupingBy(
|
||||
v -> MapUtils.getInteger(v, "quarter"),
|
||||
Collectors.groupingBy(
|
||||
v -> MapUtils.getString(v, "province"),
|
||||
Collectors.toMap(
|
||||
v -> MapUtils.getString(v, "city"),
|
||||
v -> MapUtils.getInteger(v, "store_num", 0),
|
||||
(o, n) -> o)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
package com.cool.store.dao.ad;
|
||||
|
||||
import cn.hutool.core.collection.CollStreamUtil;
|
||||
import com.cool.store.entity.ad.AdDistrictDO;
|
||||
import com.cool.store.mapper.ad.AdDistrictMapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.stereotype.Repository;
|
||||
import tk.mybatis.mapper.entity.Example;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 行政区划DAO
|
||||
* </p>
|
||||
*
|
||||
* @author wangff
|
||||
* @since 2026/1/8
|
||||
*/
|
||||
@Repository
|
||||
@RequiredArgsConstructor
|
||||
public class AdDistrictDAO {
|
||||
private final AdDistrictMapper adDistrictMapper;
|
||||
|
||||
/**
|
||||
* 根据区划编码查询名称
|
||||
*/
|
||||
public Map<String, String> getNameByCodes(List<String> codes) {
|
||||
if (CollectionUtils.isEmpty(codes)) {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
Example example = new Example(AdDistrictDO.class);
|
||||
example.createCriteria().andIn("code", codes);
|
||||
List<AdDistrictDO> list = adDistrictMapper.selectByExample(example);
|
||||
return CollStreamUtil.toMap(list, AdDistrictDO::getCode, AdDistrictDO::getName);
|
||||
}
|
||||
|
||||
/**
|
||||
* 列表查询
|
||||
* @param pid 父级id
|
||||
* @return 行政区划列表
|
||||
*/
|
||||
public List<AdDistrictDO> getList(Long pid) {
|
||||
return adDistrictMapper.select(AdDistrictDO.builder().pid(pid).build());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,106 @@
|
||||
package com.cool.store.dao.plan;
|
||||
|
||||
import com.cool.store.entity.plan.CityPlanningDO;
|
||||
import com.cool.store.mapper.plan.CityPlanningMapper;
|
||||
import com.cool.store.request.plan.CityPlanningQueryRequest;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Repository;
|
||||
import tk.mybatis.mapper.entity.Example;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 城市规划DAO
|
||||
*/
|
||||
@Repository
|
||||
@RequiredArgsConstructor
|
||||
public class CityPlanningDAO {
|
||||
private final CityPlanningMapper cityPlanningMapper;
|
||||
|
||||
/**
|
||||
* 新增
|
||||
*/
|
||||
public boolean insertSelective(CityPlanningDO cityPlanningDO) {
|
||||
return cityPlanningMapper.insertSelective(cityPlanningDO) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*/
|
||||
public boolean updateSelective(CityPlanningDO cityPlanningDO) {
|
||||
return cityPlanningMapper.updateByPrimaryKeySelective(cityPlanningDO) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据id查询
|
||||
*/
|
||||
public CityPlanningDO getById(Long id) {
|
||||
return cityPlanningMapper.selectByPrimaryKey(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*/
|
||||
public boolean deleteByIds(List<Long> ids) {
|
||||
if (CollectionUtils.isEmpty(ids)) {
|
||||
return false;
|
||||
}
|
||||
Example example = new Example(CityPlanningDO.class);
|
||||
example.createCriteria().andIn("id", ids);
|
||||
return cityPlanningMapper.deleteByExample(example) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查同年份同季度同省市是否存在规划
|
||||
* @param year 年份
|
||||
* @param quarter 季度
|
||||
* @param provinceCode 省区划代码
|
||||
* @param cityCode 市区划代码
|
||||
* @param excludeId 排除的id(用于编辑时排除自身)
|
||||
* @return 是否存在
|
||||
*/
|
||||
public boolean existsByYearAndQuarterAndRegion(Integer year, Integer quarter,
|
||||
String provinceCode, String cityCode, Long excludeId) {
|
||||
Example example = new Example(CityPlanningDO.class);
|
||||
Example.Criteria criteria = example.createCriteria();
|
||||
criteria.andEqualTo("year", year)
|
||||
.andEqualTo("quarter", quarter)
|
||||
.andEqualTo("provinceCode", provinceCode)
|
||||
.andEqualTo("cityCode", cityCode);
|
||||
if (Objects.nonNull(excludeId)) {
|
||||
criteria.andNotEqualTo("id", excludeId);
|
||||
}
|
||||
return cityPlanningMapper.selectCountByExample(example) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
*/
|
||||
public List<CityPlanningDO> queryByCondition(CityPlanningQueryRequest request) {
|
||||
Example example = new Example(CityPlanningDO.class);
|
||||
Example.Criteria criteria = example.createCriteria();
|
||||
|
||||
if (StringUtils.isNotBlank(request.getPlanNo())) {
|
||||
criteria.andLike("planNo", "%" + request.getPlanNo() + "%");
|
||||
}
|
||||
if (Objects.nonNull(request.getYear())) {
|
||||
criteria.andEqualTo("year", request.getYear());
|
||||
}
|
||||
if (Objects.nonNull(request.getQuarter())) {
|
||||
criteria.andEqualTo("quarter", request.getQuarter());
|
||||
}
|
||||
if (StringUtils.isNotBlank(request.getProvinceCode())) {
|
||||
criteria.andEqualTo("provinceCode", request.getProvinceCode());
|
||||
}
|
||||
if (StringUtils.isNotBlank(request.getCityCode())) {
|
||||
criteria.andEqualTo("cityCode", request.getCityCode());
|
||||
}
|
||||
|
||||
example.setOrderByClause("create_time DESC");
|
||||
return cityPlanningMapper.selectByExample(example);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -150,7 +150,8 @@ public interface ShopStageInfoMapper extends Mapper<ShopStageInfoDO> {
|
||||
@Param("investmentUserId") String investmentUserId,
|
||||
@Param("authRegionIds") List<String> authRegionIds,
|
||||
@Param("ownShopFlag") Boolean ownShopFlag,
|
||||
@Param("request") DeskRequest deskRequest);
|
||||
@Param("request") DeskRequest deskRequest,
|
||||
@Param("operationsConsultantUserId") String operationsConsultantUserId);
|
||||
List<ShopStageInfoDO> getSubStageList(@Param("shopIds") List<Long> shopIds,@Param("shopSubStage") Integer shopSubStage);
|
||||
List<ShopStageInfoDO> getSubStages(@Param("shopIds") List<Long> shopIds,@Param("shopSubStage") Integer shopSubStage);
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@ import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Mapper
|
||||
public interface StoreMapper {
|
||||
@@ -110,4 +111,24 @@ public interface StoreMapper {
|
||||
* @return 门店列表
|
||||
*/
|
||||
List<StoreDO> getNoOrderStore(@Param("latestDate") LocalDate latestDate, @Param("businessTypes") List<String> businessTypes, @Param("inBusinessType") Boolean inBusinessType);
|
||||
|
||||
/**
|
||||
* 根据市统计门店数量
|
||||
* @param cityNames 市列表
|
||||
*/
|
||||
List<Map<String, Object>> storeNumStatisticsByAd(@Param("years") List<Integer> years,
|
||||
@Param("cityNames") List<String> cityNames);
|
||||
|
||||
/**
|
||||
* 根据省市统计开店数量
|
||||
* @param province 省
|
||||
* @param city 市
|
||||
* @param openStartTime 开店开始时间
|
||||
* @param openEndTime 开店结束时间
|
||||
* @return 数量
|
||||
*/
|
||||
Integer totalStoreNumByAd(@Param("province") String province,
|
||||
@Param("city") String city,
|
||||
@Param("openStartTime") LocalDate openStartTime,
|
||||
@Param("openEndTime") LocalDate openEndTime);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.cool.store.mapper.ad;
|
||||
|
||||
import com.cool.store.entity.ad.AdDistrictDO;
|
||||
import tk.mybatis.mapper.common.Mapper;
|
||||
|
||||
public interface AdDistrictMapper extends Mapper<AdDistrictDO> {
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.cool.store.mapper.plan;
|
||||
|
||||
import com.cool.store.entity.plan.CityPlanningDO;
|
||||
import tk.mybatis.mapper.common.Mapper;
|
||||
|
||||
public interface CityPlanningMapper extends Mapper<CityPlanningDO> {
|
||||
}
|
||||
@@ -389,6 +389,9 @@
|
||||
#{joinMode}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="operationsConsultantUserId != null and operationsConsultantUserId != ''">
|
||||
AND si.operations_consultant = #{operationsConsultantUserId}
|
||||
</if>
|
||||
order by a.update_time desc
|
||||
</where>
|
||||
|
||||
|
||||
@@ -328,4 +328,31 @@
|
||||
</otherwise>
|
||||
</choose>
|
||||
</select>
|
||||
|
||||
<select id="storeNumStatisticsByAd" resultType="java.util.Map">
|
||||
SELECT YEAR(open_date) year, province, city, COUNT(1) store_num, QUARTER(open_date) quarter
|
||||
FROM store_${enterpriseId}
|
||||
WHERE is_delete = 'effective'
|
||||
AND city IN
|
||||
<foreach item="item" collection="cityNames" separator="," open="(" close=")">
|
||||
#{item}
|
||||
</foreach>
|
||||
AND YEAR(open_date) IN
|
||||
<foreach item="item" collection="years" separator="," open="(" close=")">
|
||||
#{item}
|
||||
</foreach>
|
||||
GROUP BY YEAR(open_date), QUARTER(open_date), province, city
|
||||
</select>
|
||||
|
||||
<select id="totalStoreNumByAd" resultType="java.lang.Integer">
|
||||
SELECT COUNT(1)
|
||||
FROM store_${enterpriseId}
|
||||
WHERE is_delete = 'effective' AND province = #{province} AND city = #{city}
|
||||
<if test="openStartTime != null">
|
||||
AND open_time >= #{openStartTime}
|
||||
</if>
|
||||
<if test="openEndTime != null">
|
||||
AND open_time <= #{openEndTime}
|
||||
</if>
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.cool.store.mapper.ad.AdDistrictMapper">
|
||||
<resultMap id="BaseResultMap" type="com.cool.store.entity.ad.AdDistrictDO">
|
||||
<!--
|
||||
WARNING - @mbg.generated
|
||||
-->
|
||||
<id column="id" jdbcType="BIGINT" property="id" />
|
||||
<result column="pid" jdbcType="BIGINT" property="pid" />
|
||||
<result column="level" jdbcType="BIT" property="level" />
|
||||
<result column="code" jdbcType="VARCHAR" property="code" />
|
||||
<result column="name" jdbcType="VARCHAR" property="name" />
|
||||
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
|
||||
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
|
||||
</resultMap>
|
||||
</mapper>
|
||||
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.cool.store.mapper.plan.CityPlanningMapper">
|
||||
<resultMap id="BaseResultMap" type="com.cool.store.entity.plan.CityPlanningDO">
|
||||
<!--
|
||||
WARNING - @mbg.generated
|
||||
-->
|
||||
<id column="id" jdbcType="BIGINT" property="id" />
|
||||
<result column="plan_no" jdbcType="VARCHAR" property="planNo" />
|
||||
<result column="year" jdbcType="INTEGER" property="year" />
|
||||
<result column="quarter" jdbcType="INTEGER" property="quarter" />
|
||||
<result column="province_code" jdbcType="VARCHAR" property="provinceCode" />
|
||||
<result column="city_code" jdbcType="VARCHAR" property="cityCode" />
|
||||
<result column="target" jdbcType="INTEGER" property="target" />
|
||||
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
|
||||
<result column="create_user_id" jdbcType="VARCHAR" property="createUserId" />
|
||||
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
|
||||
</resultMap>
|
||||
</mapper>
|
||||
@@ -0,0 +1,55 @@
|
||||
package com.cool.store.entity.ad;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.Date;
|
||||
import javax.persistence.*;
|
||||
|
||||
@Data
|
||||
@Table(name = "ad_district_${enterpriseId}")
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class AdDistrictDO {
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 父级id
|
||||
*/
|
||||
private Long pid;
|
||||
|
||||
/**
|
||||
* 级别
|
||||
*/
|
||||
private Boolean level;
|
||||
|
||||
/**
|
||||
* 区划代码
|
||||
*/
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@Column(name = "create_time")
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@Column(name = "update_time")
|
||||
private Date updateTime;
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
package com.cool.store.entity.plan;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
import javax.persistence.*;
|
||||
|
||||
/**
|
||||
* 城市规划
|
||||
*/
|
||||
@Data
|
||||
@Table(name = "zxjp_city_planning")
|
||||
public class CityPlanningDO {
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 规划编码
|
||||
*/
|
||||
@Column(name = "plan_no")
|
||||
private String planNo;
|
||||
|
||||
/**
|
||||
* 规划年份
|
||||
*/
|
||||
private Integer year;
|
||||
|
||||
/**
|
||||
* 季度
|
||||
*/
|
||||
private Integer quarter;
|
||||
|
||||
/**
|
||||
* 省区划代码
|
||||
*/
|
||||
@Column(name = "province_code")
|
||||
private String provinceCode;
|
||||
|
||||
/**
|
||||
* 市区划代码
|
||||
*/
|
||||
@Column(name = "city_code")
|
||||
private String cityCode;
|
||||
|
||||
/**
|
||||
* 季度目标
|
||||
*/
|
||||
private Integer target;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@Column(name = "create_time")
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 创建人id
|
||||
*/
|
||||
@Column(name = "create_user_id")
|
||||
private String createUserId;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@Column(name = "update_time")
|
||||
private Date updateTime;
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.cool.store.request.plan;
|
||||
|
||||
import com.cool.store.common.PageBasicInfo;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 城市规划查询请求
|
||||
*/
|
||||
@Data
|
||||
public class CityPlanningQueryRequest extends PageBasicInfo {
|
||||
|
||||
@ApiModelProperty("规划id")
|
||||
private String planNo;
|
||||
|
||||
@ApiModelProperty("规划年份")
|
||||
private Integer year;
|
||||
|
||||
@ApiModelProperty("规划季度")
|
||||
private Integer quarter;
|
||||
|
||||
@ApiModelProperty("省区划代码")
|
||||
private String provinceCode;
|
||||
|
||||
@ApiModelProperty("市区划代码")
|
||||
private String cityCode;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
package com.cool.store.request.plan;
|
||||
|
||||
import com.cool.store.common.InsertGroup;
|
||||
import com.cool.store.common.UpdateGroup;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* 城市规划编辑请求
|
||||
*/
|
||||
@Data
|
||||
public class CityPlanningUpdateRequest {
|
||||
@ApiModelProperty(value = "规划id")
|
||||
@NotNull(message = "规划id不能为空", groups = {UpdateGroup.class})
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty(value = "省区划代码")
|
||||
@NotBlank(message = "省区划代码不能为空", groups = {InsertGroup.class, UpdateGroup.class})
|
||||
private String provinceCode;
|
||||
|
||||
@ApiModelProperty(value = "市区划代码")
|
||||
@NotBlank(message = "市区划代码不能为空", groups = {InsertGroup.class, UpdateGroup.class})
|
||||
private String cityCode;
|
||||
|
||||
@ApiModelProperty(value = "年份")
|
||||
@NotNull(message = "年份不能为空", groups = {InsertGroup.class, UpdateGroup.class})
|
||||
private Integer year;
|
||||
|
||||
@ApiModelProperty(value = "季度")
|
||||
@NotNull(message = "季度不能为空", groups = {InsertGroup.class, UpdateGroup.class})
|
||||
private Integer quarter;
|
||||
|
||||
@ApiModelProperty(value = "季度目标")
|
||||
@NotNull(message = "季度目标不能为空", groups = {InsertGroup.class, UpdateGroup.class})
|
||||
private Integer target;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.cool.store.vo.ad;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 行政区划VO
|
||||
* </p>
|
||||
*
|
||||
* @author wangff
|
||||
* @since 2025/10/14
|
||||
*/
|
||||
@Data
|
||||
public class AdDistrictVO {
|
||||
@ApiModelProperty("id")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("行政区划编码")
|
||||
private String code;
|
||||
|
||||
@ApiModelProperty("名称")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty("父级id")
|
||||
private Long pid;
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.cool.store.vo.plan;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 规划进度统计VO
|
||||
* </p>
|
||||
*
|
||||
* @author wangff
|
||||
* @since 2026/1/8
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class CityPlanningStatisticsVO {
|
||||
@ApiModelProperty("总计季度目标")
|
||||
private Integer target;
|
||||
|
||||
@ApiModelProperty("总计已完成数量")
|
||||
private Integer completeNum;
|
||||
|
||||
@ApiModelProperty("总计完成率")
|
||||
private BigDecimal completeRate;
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
package com.cool.store.vo.plan;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 城市规划VO
|
||||
* </p>
|
||||
*
|
||||
* @author wangff
|
||||
* @since 2026/1/8
|
||||
*/
|
||||
@Data
|
||||
public class CityPlanningVO {
|
||||
@ApiModelProperty("id")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("规划编码")
|
||||
private String planNo;
|
||||
|
||||
@ApiModelProperty("规划年份")
|
||||
private Integer year;
|
||||
|
||||
@ApiModelProperty("季度")
|
||||
private Integer quarter;
|
||||
|
||||
@ApiModelProperty("省区划代码")
|
||||
private String provinceCode;
|
||||
|
||||
@ApiModelProperty("省")
|
||||
private String province;
|
||||
|
||||
@ApiModelProperty("市区划代码")
|
||||
private String cityCode;
|
||||
|
||||
@ApiModelProperty("市")
|
||||
private String city;
|
||||
|
||||
@ApiModelProperty("季度目标")
|
||||
private Integer target;
|
||||
|
||||
@ApiModelProperty("已完成数量")
|
||||
private Integer completeNum;
|
||||
|
||||
@ApiModelProperty("完成率")
|
||||
private BigDecimal completeRate;
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
package com.cool.store.service;
|
||||
|
||||
|
||||
import com.cool.store.context.LoginUserInfo;
|
||||
import com.cool.store.request.AuditApproveRequest;
|
||||
import com.cool.store.request.BuildInformationRequest;
|
||||
import com.cool.store.request.BuildSettlerRequest;
|
||||
import com.cool.store.response.BuildInformationResponse;
|
||||
@@ -14,10 +16,16 @@ public interface BuildInformationService {
|
||||
|
||||
BuildInformationResponse getBuildInformation(Long shopId);
|
||||
|
||||
Integer submitOrUpdate(BuildInformationRequest request);
|
||||
Integer submitOrUpdate(BuildInformationRequest request, String userId, String userName);
|
||||
|
||||
Integer getJoinType(Long lineId);
|
||||
|
||||
Boolean updateBuildSettler(BuildSettlerRequest request,String userId);
|
||||
|
||||
/**
|
||||
* 运营顾问审批
|
||||
* @param request 审批Request
|
||||
* @param user 用户
|
||||
*/
|
||||
Boolean operationsConsultantAudit(AuditApproveRequest request, LoginUserInfo user);
|
||||
}
|
||||
|
||||
@@ -16,6 +16,8 @@ public interface OperationLogService {
|
||||
|
||||
Long addOperationLog(Long shopId, ShopSubStageStatusEnum shopSubStageStatusEnum,String userId, List<EnterpriseUserDO> operationUserList, OperationTypeEnum operationTypeEnum, String remark,OperationStatusEnum operationStatusEnum);
|
||||
|
||||
Long addOperationLog(Long shopId, ShopSubStageStatusEnum shopSubStageStatusEnum,String userId, List<EnterpriseUserDO> operationUserList, OperationTypeEnum operationTypeEnum, String remark,OperationStatusEnum operationStatusEnum, int serial);
|
||||
|
||||
List<AuditInfoResponse> getAuditInfo(Long shopId,List<Integer> shopSubStageList);
|
||||
|
||||
Boolean batchUpdateProcessed( List<OperationLogDO> operationLogs,Long audit , String userId, String reason);
|
||||
|
||||
@@ -32,6 +32,8 @@ public interface SignFranchiseService {
|
||||
*/
|
||||
Boolean auditApprove(AuditApproveRequest request, LoginUserInfo user);
|
||||
|
||||
Boolean financeAuditApprove(AuditApproveRequest request, LoginUserInfo user);
|
||||
|
||||
/**
|
||||
* 加盟合同退回后重新缴费
|
||||
* @param shopId
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.cool.store.service.ad;
|
||||
|
||||
|
||||
import com.cool.store.vo.ad.AdDistrictVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 行政区划 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author wangff
|
||||
* @since 2025/10/14
|
||||
*/
|
||||
public interface AdDistrictService {
|
||||
|
||||
/**
|
||||
* 行政区划列表
|
||||
* @param pid 父级id,默认1
|
||||
* @return 行政区划VO列表
|
||||
*/
|
||||
List<AdDistrictVO> cityList(Long pid);
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package com.cool.store.service.ad.impl;
|
||||
|
||||
import com.cool.store.dao.ad.AdDistrictDAO;
|
||||
import com.cool.store.entity.ad.AdDistrictDO;
|
||||
import com.cool.store.service.ad.AdDistrictService;
|
||||
import com.cool.store.utils.BeanUtil;
|
||||
import com.cool.store.vo.ad.AdDistrictVO;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 行政区划 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author wangff
|
||||
* @since 2025/10/14
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class AdDistrictServiceImpl implements AdDistrictService {
|
||||
private final AdDistrictDAO adDistrictDAO;
|
||||
|
||||
@Override
|
||||
public List<AdDistrictVO> cityList(Long pid) {
|
||||
if (Objects.isNull(pid)) {
|
||||
pid = 1L;
|
||||
}
|
||||
List<AdDistrictDO> list = adDistrictDAO.getList(pid);
|
||||
return BeanUtil.toList(list, AdDistrictVO.class);
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,11 @@
|
||||
package com.cool.store.service.impl;
|
||||
|
||||
|
||||
import cn.hutool.core.collection.CollStreamUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.cool.store.constants.CommonConstants;
|
||||
import com.cool.store.constants.RedisConstant;
|
||||
import com.cool.store.context.LoginUserInfo;
|
||||
import com.cool.store.dao.*;
|
||||
import com.cool.store.entity.*;
|
||||
import com.cool.store.enums.*;
|
||||
@@ -10,17 +13,15 @@ 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.WarehouseInfoMapper;
|
||||
import com.cool.store.request.AuditApproveRequest;
|
||||
import com.cool.store.request.BuildInformationRequest;
|
||||
import com.cool.store.request.BuildSettlerRequest;
|
||||
import com.cool.store.response.BuildInformationResponse;
|
||||
import com.cool.store.service.BuildInformationService;
|
||||
import com.cool.store.mapper.BuildInformationMapper;
|
||||
import com.cool.store.service.EnumInfoService;
|
||||
import com.cool.store.service.PreparationService;
|
||||
import com.cool.store.service.UserAuthMappingService;
|
||||
import com.cool.store.service.*;
|
||||
import com.cool.store.utils.RedisConstantUtil;
|
||||
import com.cool.store.utils.RedisUtilPool;
|
||||
import com.cool.store.utils.poi.StringUtils;
|
||||
import com.cool.store.utils.poi.constant.Constants;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -31,7 +32,9 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import javax.annotation.Resource;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static com.cool.store.enums.point.ShopSubStageStatusEnum.*;
|
||||
import static com.cool.store.enums.point.ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_150_5;
|
||||
|
||||
/**
|
||||
* @author EDY
|
||||
@@ -75,11 +78,19 @@ public class BuildInformationServiceImpl implements BuildInformationService {
|
||||
private BigRegionDAO bigRegionDAO;
|
||||
@Resource
|
||||
private AcceptanceInfoDAO acceptanceInfoDAO;
|
||||
@Resource
|
||||
private OperationLogService operationLogService;
|
||||
@Resource
|
||||
private EnterpriseUserDAO enterpriseUserDAO;
|
||||
@Resource
|
||||
private ShopAuditInfoDAO shopAuditInfoDAO;
|
||||
@Resource
|
||||
private OperationLogDAO operationLogDAO;
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Integer submitOrUpdate(BuildInformationRequest request) {
|
||||
public Integer submitOrUpdate(BuildInformationRequest request, String userId, String userName) {
|
||||
log.info("提交/修改建店资料开始,shopId:{}", JSONObject.toJSONString(request));
|
||||
String lockKey = redisConstantUtil.submitBuildKey(request.getShopId());
|
||||
String lockValue = UUID.randomUUID().toString();
|
||||
@@ -123,21 +134,18 @@ public class BuildInformationServiceImpl implements BuildInformationService {
|
||||
buildInformationDO.setSettlerIdCardFront(qualificationsInfoDO.getFrontOfIdCard());
|
||||
buildInformationDO.setSettlerIdCardReverse(qualificationsInfoDO.getBackOfIdCard());
|
||||
}
|
||||
// 存在运营顾问审批不通过重新编辑的情况,所以这里判断一下是否存在未处理的审批记录,不存在则添加审批记录
|
||||
insertOperations(shopInfoDO, userId, userName);
|
||||
if (Objects.isNull(informationDO)) {
|
||||
buildInformationDO.setCreateTime(new Date());
|
||||
buildInformationDO.setUpdateTime(new Date());
|
||||
shopStageInfoDAO.updateShopStageInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_151);
|
||||
shopStageInfoDAO.updateShopStageInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_150_5);
|
||||
HashMap<String, String> map = new HashMap<>();
|
||||
map.put("partnerUsername", lineInfoDO.getUsername());
|
||||
map.put("partnerMobile", lineInfoDO.getMobile());
|
||||
map.put("storeName", shopInfoDO.getShopName());
|
||||
List<EnterpriseUserDO> logisticsList = userAuthMappingService.getAllUserByRoleEnumAndRegionId(UserRoleEnum.LOGISTICS, shopInfoDO.getRegionId());
|
||||
List<String> logistics = new ArrayList<>();
|
||||
if (Objects.nonNull(logisticsList)) {
|
||||
logistics.addAll(logisticsList.stream().map(EnterpriseUserDO::getUserId).collect(Collectors.toList()));
|
||||
}
|
||||
commonService.sendQWMessage(logistics,
|
||||
MessageEnum.MESSAGE_52,
|
||||
commonService.sendQWMessage(Collections.singletonList(shopInfoDO.getOperationsConsultant()),
|
||||
MessageEnum.MESSAGE_54,
|
||||
map);
|
||||
return buildInformationDAO.insertSelective(buildInformationDO);
|
||||
} else {
|
||||
@@ -158,6 +166,19 @@ public class BuildInformationServiceImpl implements BuildInformationService {
|
||||
}
|
||||
}
|
||||
platformBuildDAO.batchUpdate(platformBuildDOS);
|
||||
// 运营顾问审批驳回后,走的编辑逻辑,因此判断是否为加盟商驳回后第一次编辑,推进阶段到运营顾问审批
|
||||
ShopStageInfoDO currentStage = shopStageInfoDAO.getByShopIdAndSubStage(shopInfoDO.getId(), ShopSubStageEnum.SHOP_STAGE_15.getShopSubStage());
|
||||
if (SHOP_SUB_STAGE_STATUS_150.getShopSubStageStatus().equals(currentStage.getShopSubStageStatus())) {
|
||||
shopStageInfoDAO.updateShopStageInfo(request.getShopId(), SHOP_SUB_STAGE_STATUS_150_5);
|
||||
shopStageInfoDAO.updateShopStageInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_150_5);
|
||||
HashMap<String, String> map = new HashMap<>();
|
||||
map.put("partnerUsername", lineInfoDO.getUsername());
|
||||
map.put("partnerMobile", lineInfoDO.getMobile());
|
||||
map.put("storeName", shopInfoDO.getShopName());
|
||||
commonService.sendQWMessage(Collections.singletonList(shopInfoDO.getOperationsConsultant()),
|
||||
MessageEnum.MESSAGE_54,
|
||||
map);
|
||||
}
|
||||
return buildInformationDAO.updateByShopIdSelective(buildInformationDO);
|
||||
}
|
||||
}else{
|
||||
@@ -173,6 +194,19 @@ public class BuildInformationServiceImpl implements BuildInformationService {
|
||||
}
|
||||
}
|
||||
|
||||
private void insertOperations(ShopInfoDO shopInfoDO, String userId, String userName) {
|
||||
List<OperationLogDO> operationLogs = operationLogDAO.getBySubStageStatusEnumAndsStatus(shopInfoDO.getId(), SHOP_SUB_STAGE_STATUS_150_5, OperationTypeEnum.OPERATION_TYPE_1.getCode());
|
||||
if (CollectionUtils.isEmpty(operationLogs)) {
|
||||
EnterpriseUserDO operationsConsultant = enterpriseUserDAO.getUserInfoById(shopInfoDO.getOperationsConsultant());
|
||||
// 审批记录
|
||||
operationLogService.addOperationLog(shopInfoDO.getId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_150, userId, userName,
|
||||
OperationTypeEnum.OPERATION_TYPE_0, "建店资料提交审批", OperationStatusEnum.PROCESSED);
|
||||
operationLogService.addOperationLog(shopInfoDO.getId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_150_5,
|
||||
shopInfoDO.getOperationsConsultant(), Collections.singletonList(operationsConsultant),
|
||||
OperationTypeEnum.OPERATION_TYPE_1, "建店资料运营顾问审核", OperationStatusEnum.NOT_PROCESSED);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public BuildInformationResponse getBuildInformation(Long shopId) {
|
||||
BuildInformationResponse response = new BuildInformationResponse();
|
||||
@@ -221,6 +255,16 @@ public class BuildInformationServiceImpl implements BuildInformationService {
|
||||
}
|
||||
response.setDeclareGoodsType(orderSysInfoDO.getDeclareGoodsType());
|
||||
}
|
||||
if (StringUtils.isBlank(response.getReceivingFirmName())) {
|
||||
String bankInfoStr = redisUtilPool.getString(RedisConstant.BUILD_RECEIVE_BANK_INFO);
|
||||
if (StringUtils.isNotBlank(bankInfoStr)) {
|
||||
JSONObject bankInfo = JSONObject.parseObject(bankInfoStr);
|
||||
response.setReceivingFirmName(bankInfo.getString("receivingFirmName"));
|
||||
response.setReceivingMsBankAccount(bankInfo.getString("receivingMsBankAccount"));
|
||||
response.setReceivingMsBankBranch(bankInfo.getString("receivingMsBankBranch"));
|
||||
response.setBankUnionPayAccount(bankInfo.getString("bankUnionPayAccount"));
|
||||
}
|
||||
}
|
||||
if (StringUtils.isBlank(response.getXgjVicePresident())) {
|
||||
List<EnterpriseUserDO> userList = userAuthMappingService.getAllUserByRoleEnumAndRegionId(UserRoleEnum.VICE_PRESIDENT_IN_CHARGE, shopInfo.getRegionId());
|
||||
if (CollectionUtils.isNotEmpty(userList)) {
|
||||
@@ -370,6 +414,50 @@ public class BuildInformationServiceImpl implements BuildInformationService {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public Boolean operationsConsultantAudit(AuditApproveRequest request, LoginUserInfo user) {
|
||||
ShopInfoDO shopInfo = shopInfoDAO.getShopInfo(request.getShopId());
|
||||
if (shopInfo.getShopDecorationAttributes() == null){
|
||||
throw new ServiceException(ErrorCodeEnum.SHOP_DECORATION_ATTRIBUTES_IS_NULL);
|
||||
}
|
||||
ShopStageInfoDO shopSubStageInfo = shopStageInfoDAO.getShopSubStageInfo(request.getShopId(), ShopSubStageEnum.SHOP_STAGE_15);
|
||||
if (!shopSubStageInfo.getShopSubStageStatus().equals(SHOP_SUB_STAGE_STATUS_150_5.getShopSubStageStatus())) {
|
||||
throw new ServiceException(ErrorCodeEnum.WORK_FLOW_STAGE_PASS_ERROR);
|
||||
}
|
||||
if (Constants.ZERO_INTEGER.equals(request.getAuditResult())) {
|
||||
shopStageInfoDAO.updateShopStageInfo(request.getShopId(), SHOP_SUB_STAGE_STATUS_150);
|
||||
} else {
|
||||
shopStageInfoDAO.updateShopStageInfo(request.getShopId(), SHOP_SUB_STAGE_STATUS_151);
|
||||
ShopInfoDO shopInfoDO = shopInfoDAO.getShopInfo(request.getShopId());
|
||||
LineInfoDO lineInfoDO = lineInfoDAO.getLineInfo(shopInfoDO.getLineId());
|
||||
HashMap<String, String> map = new HashMap<>();
|
||||
map.put("partnerUsername", lineInfoDO.getUsername());
|
||||
map.put("partnerMobile", lineInfoDO.getMobile());
|
||||
map.put("storeName", shopInfoDO.getShopName());
|
||||
List<EnterpriseUserDO> logisticsList = userAuthMappingService.getAllUserByRoleEnumAndRegionId(UserRoleEnum.LOGISTICS, shopInfoDO.getRegionId());
|
||||
List<String> logistics = CollStreamUtil.toList(logisticsList, EnterpriseUserDO::getUserId);
|
||||
commonService.sendQWMessage(logistics, MessageEnum.MESSAGE_52, map);
|
||||
}
|
||||
|
||||
ShopAuditInfoDO shopAuditInfoDO = new ShopAuditInfoDO();
|
||||
shopAuditInfoDO.setShopId(request.getShopId());
|
||||
shopAuditInfoDO.setAuditType(AuditTypeEnum.BUILDINFORMATION.getCode());
|
||||
shopAuditInfoDO.setSubmittedUserId(user.getUserId());
|
||||
shopAuditInfoDO.setSubmittedUserName(user.getName());
|
||||
shopAuditInfoDO.setResultType(request.getAuditResult() ^ 1);
|
||||
if (AuditResultTypeEnum.PASS.getCode().equals(shopAuditInfoDO.getResultType())) {
|
||||
shopAuditInfoDO.setPassReason(request.getCause());
|
||||
} else {
|
||||
shopAuditInfoDO.setRejectReason(request.getCause());
|
||||
}
|
||||
Long auditId = shopAuditInfoDAO.addAuditInfo(shopAuditInfoDO);
|
||||
//更新操作记录
|
||||
List<OperationLogDO> operationLogs = operationLogDAO.getBySubStageStatusEnumAndsStatus(request.getShopId(), SHOP_SUB_STAGE_STATUS_150_5, OperationTypeEnum.OPERATION_TYPE_1.getCode());
|
||||
operationLogService.batchUpdateProcessed(operationLogs, auditId, user.getUserId(), request.getCause());
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -309,6 +309,9 @@ public class DeskServiceImpl implements DeskService {
|
||||
if (userRoleIds.contains(UserRoleEnum.BRANCH_OFFICE.getCode()) || userRoleIds.contains(UserRoleEnum.REGION_OFFICE.getCode()) || isAdmin) {
|
||||
subStageStatusList.add(SHOP_SUB_STAGE_STATUS_83.getShopSubStageStatus());
|
||||
}
|
||||
if (userRoleIds.contains(UserRoleEnum.FINANCE.getCode())) {
|
||||
subStageStatusList.add(SHOP_SUB_STAGE_STATUS_83_5.getShopSubStageStatus());
|
||||
}
|
||||
PageInfo<PreparationCommonPendingVO> pageInfo = commonPendingVOPageInfo(deskRequest, user, ShopSubStageEnum.SHOP_STAGE_8,
|
||||
subStageStatusList, Boolean.TRUE);
|
||||
return pageInfo;
|
||||
@@ -515,8 +518,8 @@ public class DeskServiceImpl implements DeskService {
|
||||
public PageInfo<PreparationCommonPendingVO> buildInformationPendingList(DeskRequest deskRequest, LoginUserInfo user) {
|
||||
List<Long> userRoleIds = enterpriseUserRoleMapper.getUserRoleIds(user.getUserId());
|
||||
if (userRoleIds.contains(UserRoleEnum.SUPERVISION.getCode())) {
|
||||
return commonPendingVOPageInfo(deskRequest, user, ShopSubStageEnum.SHOP_STAGE_15,
|
||||
Collections.singletonList(SHOP_SUB_STAGE_STATUS_150.getShopSubStageStatus()), Boolean.FALSE);
|
||||
return commonPendingVOPageInfoByOperationsConsultant(deskRequest, user.getUserId(), ShopSubStageEnum.SHOP_STAGE_15,
|
||||
Arrays.asList(SHOP_SUB_STAGE_STATUS_150.getShopSubStageStatus(), SHOP_SUB_STAGE_STATUS_150_5.getShopSubStageStatus()), Boolean.FALSE);
|
||||
}
|
||||
//如果不是财务角色或者即是财务又是自有店财务 则不需要标识
|
||||
Boolean ownShopFlag = null;
|
||||
@@ -551,7 +554,7 @@ public class DeskServiceImpl implements DeskService {
|
||||
subStageStatusList.add(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_154.getShopSubStageStatus());
|
||||
subStageStatusList.add(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_155.getShopSubStageStatus());
|
||||
}
|
||||
return commonPendingVOPage(deskRequest, isAdmin ? null : user, ShopSubStageEnum.SHOP_STAGE_15, subStageStatusList, isAdmin ? Boolean.FALSE : Boolean.TRUE, ownShopFlag);
|
||||
return commonPendingVOPage(deskRequest, isAdmin ? null : user, ShopSubStageEnum.SHOP_STAGE_15, subStageStatusList, isAdmin ? Boolean.FALSE : Boolean.TRUE, ownShopFlag, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -815,7 +818,11 @@ public class DeskServiceImpl implements DeskService {
|
||||
* @return
|
||||
*/
|
||||
private PageInfo<PreparationCommonPendingVO> commonPendingVOPageInfo(DeskRequest deskRequest, LoginUserInfo user, ShopSubStageEnum shopSubStageEnum, List<Integer> subStageStatusList, Boolean filterFlag) {
|
||||
return this.commonPendingVOPage(deskRequest, user, shopSubStageEnum, subStageStatusList, filterFlag, null);
|
||||
return this.commonPendingVOPage(deskRequest, user, shopSubStageEnum, subStageStatusList, filterFlag, null, null);
|
||||
}
|
||||
|
||||
private PageInfo<PreparationCommonPendingVO> commonPendingVOPageInfoByOperationsConsultant(DeskRequest deskRequest, String operationsConsultantUserId, ShopSubStageEnum shopSubStageEnum, List<Integer> subStageStatusList, Boolean filterFlag) {
|
||||
return this.commonPendingVOPage(deskRequest, null, shopSubStageEnum, subStageStatusList, filterFlag, null, operationsConsultantUserId);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -826,7 +833,8 @@ public class DeskServiceImpl implements DeskService {
|
||||
* @param subStageStatusList
|
||||
* @return
|
||||
*/
|
||||
private PageInfo<PreparationCommonPendingVO> commonPendingVOPage(DeskRequest deskRequest, LoginUserInfo user, ShopSubStageEnum shopSubStageEnum, List<Integer> subStageStatusList, Boolean filterFlag, Boolean ownShopFlag) {
|
||||
private PageInfo<PreparationCommonPendingVO> commonPendingVOPage(DeskRequest deskRequest, LoginUserInfo user, ShopSubStageEnum shopSubStageEnum, List<Integer> subStageStatusList, Boolean filterFlag, Boolean ownShopFlag,
|
||||
String operationsConsultantUserId) {
|
||||
//user.getJobNumber()
|
||||
List<String> authRegionIds = new ArrayList<>();
|
||||
if (filterFlag) {
|
||||
@@ -836,7 +844,7 @@ public class DeskServiceImpl implements DeskService {
|
||||
}
|
||||
PageHelper.startPage(deskRequest.getPageNum(), deskRequest.getPageSize());
|
||||
List<ShopStageInfoDO> specialShopStageInfo = shopStageInfoDAO.getSpecialShopStageInfo(null, shopSubStageEnum.getShopSubStage(),
|
||||
subStageStatusList, user == null ? null : user.getUserId(), authRegionIds, ownShopFlag, deskRequest);
|
||||
subStageStatusList, user == null ? null : user.getUserId(), authRegionIds, ownShopFlag, deskRequest, operationsConsultantUserId);
|
||||
PageInfo result = new PageInfo<>(specialShopStageInfo);
|
||||
List<Long> shopIds = specialShopStageInfo.stream().map(ShopStageInfoDO::getShopId).collect(Collectors.toList());
|
||||
List<Long> lineIds = specialShopStageInfo.stream().map(ShopStageInfoDO::getLineId).collect(Collectors.toList());
|
||||
|
||||
@@ -59,10 +59,16 @@ public class OperationLogServiceImpl implements OperationLogService {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Long addOperationLog(Long shopId, ShopSubStageStatusEnum shopSubStageStatusEnum, String userId, List<EnterpriseUserDO> operationUserList, OperationTypeEnum operationTypeEnum, String remark, OperationStatusEnum operationStatusEnum) {
|
||||
return addOperationLog(shopId, shopSubStageStatusEnum, userId, operationUserList, operationTypeEnum, remark, operationStatusEnum, 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Long addOperationLog(Long shopId, ShopSubStageStatusEnum shopSubStageStatusEnum, String userId, List<EnterpriseUserDO> operationUserList, OperationTypeEnum operationTypeEnum, String remark, OperationStatusEnum operationStatusEnum, int serial) {
|
||||
List<OperationLogDO> operationLogDOList = new ArrayList<>();
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTime(new Date());
|
||||
calendar.add(Calendar.SECOND, 1);
|
||||
calendar.add(Calendar.SECOND, serial);
|
||||
Date date = calendar.getTime();
|
||||
if(CollectionUtils.isEmpty(operationUserList)){
|
||||
operationUserList = new ArrayList<>();
|
||||
|
||||
@@ -107,26 +107,9 @@ public class OrderSysInfoServiceImpl implements OrderSysInfoService {
|
||||
if (shopSubStageInfo.getShopSubStageStatus().equals(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_151.getShopSubStageStatus())) {
|
||||
orderSysInfoDO.setOrderCreateTime(new Date());
|
||||
orderSysInfoDO.setOrderCreateUser(curUserId);
|
||||
shopStageInfoDAO.updateShopStageInfo(request.getShopId(), SHOP_SUB_STAGE_STATUS_152);
|
||||
ShopInfoDO shopInfoDO = shopInfoDAO.getShopInfo(request.getShopId());
|
||||
LineInfoDO lineInfoDO = lineInfoDAO.getLineInfo(shopInfoDO.getLineId());
|
||||
HashMap<String, String> map = new HashMap<>();
|
||||
map.put("partnerUsername", lineInfoDO.getUsername());
|
||||
map.put("partnerMobile", lineInfoDO.getMobile());
|
||||
map.put("storeName", shopInfoDO.getShopName());
|
||||
//自有店财务
|
||||
UserRoleEnum finance = UserRoleEnum.FINANCE;
|
||||
if (JoinModeEnum.OWN_STORE.getCode()==(shopInfo.getJoinMode())) {
|
||||
finance = UserRoleEnum.OWN_SHOP_OFFICE;
|
||||
}
|
||||
List<EnterpriseUserDO> itList = userAuthMappingService.getAllUserByRoleEnumAndRegionId(finance, shopInfoDO.getRegionId());
|
||||
List<String> itUsers = new ArrayList<>();
|
||||
if (Objects.nonNull(itList)) {
|
||||
itUsers.addAll(itList.stream().map(EnterpriseUserDO::getUserId).collect(Collectors.toList()));
|
||||
}
|
||||
commonService.sendQWMessage(itUsers,
|
||||
MessageEnum.MESSAGE_53,
|
||||
map);
|
||||
shopStageInfoDAO.updateShopStageInfo(request.getShopId(), SHOP_SUB_STAGE_STATUS_156);
|
||||
stageCompletion(request.getShopId());
|
||||
syncMainSysServer.syncStore(request.getShopId());
|
||||
return orderSysInfoDAO.updateByShopId(orderSysInfoDO);
|
||||
} else {
|
||||
orderSysInfoDO.setOrderUpdateTime(new Date());
|
||||
|
||||
@@ -872,6 +872,9 @@ public class ShopServiceImpl implements ShopService {
|
||||
case SHOP_SUB_STAGE_STATUS_83:
|
||||
return getUsersByRolesAndRegion(Arrays.asList(REGION_OFFICE, BRANCH_OFFICE), shopInfo.getRegionId());
|
||||
|
||||
case SHOP_SUB_STAGE_STATUS_83_5:
|
||||
return getUsersByRolesAndRegion(Collections.singletonList(FINANCE), shopInfo.getRegionId());
|
||||
|
||||
case SHOP_SUB_STAGE_STATUS_85_1:
|
||||
return getUsersByRole(FINANCE);
|
||||
|
||||
|
||||
@@ -242,6 +242,7 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu
|
||||
shopStageInfoDAO.updateShopStageInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_83);
|
||||
//发送通知
|
||||
List<EnterpriseUserDO> auditFranchiseFeeUsers = userAuthMappingService.getUserIdByRoleEnumAndRegionId(Arrays.asList(BRANCH_OFFICE, REGION_OFFICE), shopInfoDO.getRegionId());
|
||||
List<EnterpriseUserDO> financeUsers = userAuthMappingService.getUserIdByRoleEnumAndRegionId(Collections.singletonList(FINANCE), shopInfoDO.getRegionId());
|
||||
List<String> auditFranchiseFeeUserList = auditFranchiseFeeUsers.stream().distinct().map(EnterpriseUserDO::getUserId).collect(Collectors.toList());
|
||||
LineInfoDO lineInfo = lineInfoMapper.getByLineId(shopInfoDO.getLineId());
|
||||
HashMap<String, String> map = new HashMap<>();
|
||||
@@ -255,8 +256,10 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu
|
||||
OperationTypeEnum.OPERATION_TYPE_0, "加盟签约合同提交", OperationStatusEnum.PROCESSED);
|
||||
operationLogService.addOperationLog(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_83,
|
||||
user.getUserId(), auditFranchiseFeeUsers,
|
||||
OperationTypeEnum.OPERATION_TYPE_1, "加盟签约合同审批", OperationStatusEnum.NOT_PROCESSED);
|
||||
|
||||
OperationTypeEnum.OPERATION_TYPE_1, "加盟签约合同审批", OperationStatusEnum.NOT_PROCESSED, 1);
|
||||
operationLogService.addOperationLog(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_83_5,
|
||||
user.getUserId(), financeUsers,
|
||||
OperationTypeEnum.OPERATION_TYPE_1, "加盟签约合同财务审批", OperationStatusEnum.NOT_PROCESSED, 2);
|
||||
} else {
|
||||
//修改签约人信息
|
||||
signFranchiseMapper.updateByPrimaryKeySelective(signFranchiseDO);
|
||||
@@ -318,6 +321,7 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu
|
||||
shopStageInfoDAO.updateShopStageInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_83);
|
||||
//发送通知
|
||||
List<EnterpriseUserDO> userIds = userAuthMappingService.getUserIdByRoleEnumAndRegionId(Arrays.asList(BRANCH_OFFICE, REGION_OFFICE), shopInfoDO.getRegionId());
|
||||
List<EnterpriseUserDO> financeUsers = userAuthMappingService.getUserIdByRoleEnumAndRegionId(Collections.singletonList(FINANCE), shopInfoDO.getRegionId());
|
||||
List<String> auditFranchiseFeeUserList = userIds.stream().distinct().map(EnterpriseUserDO::getUserId).collect(Collectors.toList());
|
||||
LineInfoDO lineInfo = lineInfoMapper.getByLineId(shopInfoDO.getLineId());
|
||||
HashMap<String, String> map = new HashMap<>();
|
||||
@@ -332,8 +336,10 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu
|
||||
OperationTypeEnum.OPERATION_TYPE_0, "加盟签约合同重新提交提交", OperationStatusEnum.PROCESSED);
|
||||
operationLogService.addOperationLog(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_83,
|
||||
user.getUserId(), userIds,
|
||||
OperationTypeEnum.OPERATION_TYPE_1, "加盟签约合同审批", OperationStatusEnum.NOT_PROCESSED);
|
||||
|
||||
OperationTypeEnum.OPERATION_TYPE_1, "加盟签约合同审批", OperationStatusEnum.NOT_PROCESSED, 1);
|
||||
operationLogService.addOperationLog(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_83_5,
|
||||
user.getUserId(), financeUsers,
|
||||
OperationTypeEnum.OPERATION_TYPE_1, "加盟签约合同财务审批", OperationStatusEnum.NOT_PROCESSED, 2);
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
@@ -447,6 +453,99 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu
|
||||
//流水
|
||||
String lockValue = UUID.randomUUID().toString();
|
||||
boolean acquired = false;
|
||||
try {
|
||||
//10s过期
|
||||
acquired = redisUtilPool.setNxExpire(lockKey, lockValue, CommonConstants.TEN_SECONDS);
|
||||
if (Boolean.TRUE.equals(acquired)) {
|
||||
ShopInfoDO shopInfoDO = shopInfoMapper.selectByPrimaryKey(shopId);
|
||||
ShopAuditInfoDO shopAuditInfoDO = new ShopAuditInfoDO();
|
||||
shopAuditInfoDO.setShopId(shopId);
|
||||
shopAuditInfoDO.setAuditType(AuditTypeEnum.SIGN_FRANCHISE.getCode());
|
||||
shopAuditInfoDO.setSubmittedUserId(user.getUserId());
|
||||
shopAuditInfoDO.setSubmittedUserName(user.getName());
|
||||
//驳回
|
||||
if (Constants.ZERO_INTEGER.equals(request.getAuditResult())) {
|
||||
auditReject(request, shopAuditInfoDO, shopInfoDO);
|
||||
} else if (Constants.ONE_INTEGER.equals(request.getAuditResult())) {
|
||||
shopAuditInfoDO.setResultType(Constants.ZERO_INTEGER);
|
||||
shopAuditInfoDO.setPassReason(request.getCause());
|
||||
//更新状态为加盟商
|
||||
LineInfoDO lineInfoDO = lineInfoMapper.getByLineId(shopInfoDO.getLineId());
|
||||
shopStageInfoDAO.updateShopStageInfo(shopId, SHOP_SUB_STAGE_STATUS_83_5);
|
||||
|
||||
Boolean sendNotice = Boolean.TRUE;
|
||||
if (sendNotice) {
|
||||
HashMap<String, String> map = new HashMap<>();
|
||||
map.put("partnerUsername", lineInfoDO.getUsername());
|
||||
map.put("partnerMobile", lineInfoDO.getMobile());
|
||||
map.put("storeName", shopInfoDO.getShopName());
|
||||
List<EnterpriseUserDO> userDOList = userAuthMappingService.getAllUserByRoleEnumAndRegionId(UserRoleEnum.FINANCE, shopInfoDO.getRegionId());
|
||||
List<String> finances = new ArrayList<>();
|
||||
if (Objects.nonNull(userDOList)) {
|
||||
finances.addAll(userDOList.stream().map(EnterpriseUserDO::getUserId).collect(Collectors.toList()));
|
||||
}
|
||||
commonService.sendQWMessage(finances,
|
||||
MessageEnum.MESSAGE_19_1,
|
||||
map);
|
||||
}
|
||||
}
|
||||
shopAuditInfoMapper.insertSelective(shopAuditInfoDO);
|
||||
Long auditId = shopAuditInfoDO.getId();
|
||||
signFranchiseDAO.updateAuditByShopId(auditId, shopId);
|
||||
//审批记录表记录
|
||||
List<OperationLogDO> operationLogs = operationLogDAO.getBySubStageStatusEnumAndsStatus(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_83, OperationTypeEnum.OPERATION_TYPE_1.getCode());
|
||||
operationLogService.batchUpdateProcessed(operationLogs, auditId, user.getUserId(), request.getCause());
|
||||
return true;
|
||||
} else {
|
||||
throw new ServiceException(ErrorCodeEnum.DUPLICATE_SUBMISSION);
|
||||
}
|
||||
} finally {
|
||||
if (Boolean.TRUE.equals(acquired)) {
|
||||
String currentValue = redisUtilPool.getString(lockKey);
|
||||
if (lockValue.equals(currentValue)) {
|
||||
redisUtilPool.delKey(lockKey);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 分部内勤/财务审批拒绝
|
||||
*/
|
||||
private void auditReject(AuditApproveRequest request, ShopAuditInfoDO shopAuditInfoDO, ShopInfoDO shopInfoDO) {
|
||||
shopAuditInfoDO.setResultType(Constants.ONE_INTEGER);
|
||||
shopAuditInfoDO.setRejectReason(request.getCause());
|
||||
Map<String, String> requestMap = new HashMap<>();
|
||||
LineInfoDO lineInfo = lineInfoMapper.getByLineId(shopInfoDO.getLineId());
|
||||
shopStageInfoDAO.updateShopStageInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_85);
|
||||
Set<String> auditFranchiseFeeUsers = new HashSet<>();
|
||||
List<EnterpriseUserDO> branchUser = userAuthMappingService.getAllUserByRoleEnumAndRegionId(UserRoleEnum.JOIN_OFFICE, shopInfoDO.getRegionId());
|
||||
if (Objects.nonNull(branchUser)) {
|
||||
Set<String> branchUserIds = branchUser.stream().map(EnterpriseUserDO::getUserId).collect(Collectors.toSet());
|
||||
auditFranchiseFeeUsers.addAll(branchUserIds);
|
||||
}
|
||||
List<EnterpriseUserDO> regionUser = userAuthMappingService.getAllUserByRoleEnumAndRegionId(REGION_OFFICE, shopInfoDO.getRegionId());
|
||||
if (Objects.nonNull(regionUser)) {
|
||||
Set<String> regionUserIds = regionUser.stream().map(EnterpriseUserDO::getUserId).collect(Collectors.toSet());
|
||||
auditFranchiseFeeUsers.addAll(regionUserIds);
|
||||
}
|
||||
requestMap.put("storeName", shopInfoDO.getShopName());
|
||||
requestMap.put("partnerName", lineInfo.getUsername());
|
||||
requestMap.put("partnerMobile", lineInfo.getMobile());
|
||||
requestMap.put("lineId", String.valueOf(lineInfo.getId()));
|
||||
requestMap.put("shopId", String.valueOf(shopInfoDO.getId()));
|
||||
commonService.sendMessage(new ArrayList<>(auditFranchiseFeeUsers), MessageEnum.MESSAGE_20, requestMap);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public Boolean financeAuditApprove(AuditApproveRequest request, LoginUserInfo user) {
|
||||
log.info("SignFranchiseServiceImpl financeAuditApprove request:{}", JSONObject.toJSONString(request));
|
||||
Long shopId = request.getShopId();
|
||||
String lockKey = "financeAuditApprove:" + request.getShopId();
|
||||
//流水
|
||||
String lockValue = UUID.randomUUID().toString();
|
||||
boolean acquired = false;
|
||||
try {
|
||||
//10s过期
|
||||
acquired = redisUtilPool.setNxExpire(lockKey, lockValue, CommonConstants.TEN_SECONDS);
|
||||
@@ -460,30 +559,9 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu
|
||||
//驳回
|
||||
ContractCallbackDTO contractCallbackDTO = null;
|
||||
if (Constants.ZERO_INTEGER.equals(request.getAuditResult())) {
|
||||
shopAuditInfoDO.setResultType(Constants.ONE_INTEGER);
|
||||
shopAuditInfoDO.setRejectReason(request.getCause());
|
||||
Map<String, String> requestMap = new HashMap<>();
|
||||
LineInfoDO lineInfo = lineInfoMapper.getByLineId(shopInfoDO.getLineId());
|
||||
shopStageInfoDAO.updateShopStageInfo(shopId, ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_85);
|
||||
Set<String> auditFranchiseFeeUsers = new HashSet<>();
|
||||
List<EnterpriseUserDO> branchUser = userAuthMappingService.getAllUserByRoleEnumAndRegionId(UserRoleEnum.JOIN_OFFICE, shopInfoDO.getRegionId());
|
||||
if (Objects.nonNull(branchUser)) {
|
||||
Set<String> branchUserIds = branchUser.stream().map(EnterpriseUserDO::getUserId).collect(Collectors.toSet());
|
||||
auditFranchiseFeeUsers.addAll(branchUserIds);
|
||||
}
|
||||
List<EnterpriseUserDO> regionUser = userAuthMappingService.getAllUserByRoleEnumAndRegionId(REGION_OFFICE, shopInfoDO.getRegionId());
|
||||
if (Objects.nonNull(regionUser)) {
|
||||
Set<String> regionUserIds = regionUser.stream().map(EnterpriseUserDO::getUserId).collect(Collectors.toSet());
|
||||
auditFranchiseFeeUsers.addAll(regionUserIds);
|
||||
}
|
||||
requestMap.put("storeName", shopInfoDO.getShopName());
|
||||
requestMap.put("partnerName", lineInfo.getUsername());
|
||||
requestMap.put("partnerMobile", lineInfo.getMobile());
|
||||
requestMap.put("lineId", String.valueOf(lineInfo.getId()));
|
||||
requestMap.put("shopId", String.valueOf(shopInfoDO.getId()));
|
||||
commonService.sendMessage(new ArrayList<>(auditFranchiseFeeUsers), MessageEnum.MESSAGE_20, requestMap);
|
||||
auditReject(request, shopAuditInfoDO, shopInfoDO);
|
||||
} else if (Constants.ONE_INTEGER.equals(request.getAuditResult())) {
|
||||
log.info("合同审核,装修属性:{},加盟模式:{}",ShopDecorationAttributesEnum.getDescByCode(shopInfoDO.getShopDecorationAttributes()),
|
||||
log.info("合同审核,装修属性:{},加盟模式:{}", ShopDecorationAttributesEnum.getDescByCode(shopInfoDO.getShopDecorationAttributes()),
|
||||
JoinModeEnum.getByCode(shopInfoDO.getJoinMode()));
|
||||
if (shopInfoDO.getShopDecorationAttributes().equals(ShopDecorationAttributesEnum.OLD_NEW_OPEN.getCode())) {
|
||||
//老店新开时装修与开业直接完成
|
||||
@@ -491,7 +569,7 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu
|
||||
SHOP_SUB_STAGE_STATUS_863, SHOP_SUB_STAGE_STATUS_91, SHOP_SUB_STAGE_STATUS_112, SHOP_SUB_STAGE_STATUS_123, SHOP_SUB_STAGE_STATUS_143,
|
||||
SHOP_SUB_STAGE_STATUS_276
|
||||
));
|
||||
}else{
|
||||
} else {
|
||||
//,加盟公司自有店->加盟公司建店 不推送数据 再crm中完成
|
||||
//v2.0.0 先确认装修团队
|
||||
TeamAreaMappingDO city = teamAreaMappingDAO.getByCityId(shopInfoDO.getWantShopAreaId());
|
||||
@@ -512,7 +590,7 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu
|
||||
shopDecorationAssignDO.setShopId(shopId);
|
||||
shopDecorationAssignDAO.insert(shopDecorationAssignDO);
|
||||
//新增一个延迟队列 四个小时之后确定是否手动分配 没有手动分配 直接自动分配 红圈通推送和下一个流程开始改为分配团队之后 触发
|
||||
simpleMessageService.send(String.valueOf(shopDecorationAssignDO.getId()), RocketMqTagEnum.DELAY_SHOP_DECORATION_ASSIGN,System.currentTimeMillis() + 4*60*60 * 1000);
|
||||
simpleMessageService.send(String.valueOf(shopDecorationAssignDO.getId()), RocketMqTagEnum.DELAY_SHOP_DECORATION_ASSIGN, System.currentTimeMillis() + 4 * 60 * 60 * 1000);
|
||||
}
|
||||
shopAuditInfoDO.setResultType(Constants.ZERO_INTEGER);
|
||||
shopAuditInfoDO.setPassReason(request.getCause());
|
||||
@@ -523,15 +601,15 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu
|
||||
lineInfoMapper.insertOrUpdate(lineInfoDO);
|
||||
shopStageInfoDAO.updateShopStageInfo(shopId, SHOP_SUB_STAGE_STATUS_84);
|
||||
//初始化数据 如果是正新鸡排 需要手动分配 其他品牌直接开始 且将招商经理给到运营经理
|
||||
if (FranchiseBrandEnum.ZXJP.getCode()==Integer.valueOf(shopInfoDO.getFranchiseBrand())){
|
||||
log.info("zxjp_assign shopId:{}",shopId);
|
||||
if (FranchiseBrandEnum.ZXJP.getCode() == Integer.valueOf(shopInfoDO.getFranchiseBrand())) {
|
||||
log.info("zxjp_assign shopId:{}", shopId);
|
||||
//新增分配信息
|
||||
OperationsConsultantAssignDO operationsConsultantAssignDO = new OperationsConsultantAssignDO();
|
||||
operationsConsultantAssignDO.setShopId(shopId);
|
||||
operationsConsultantAssignDO.setAssignStatus(0);
|
||||
operationsConsultantAssignDO.setRegionId(shopInfoDO.getRegionId());
|
||||
operationsConsultantAssignDAO.addOperationsConsultantAssign(operationsConsultantAssignDO);
|
||||
}else {
|
||||
} else {
|
||||
//其他品牌直接开始 且将招商经理给到运营经理
|
||||
shopInfoDO.setOperationsConsultant(shopInfoDO.getInvestmentManager());
|
||||
shopInfoDAO.updateShopInfo(shopInfoDO);
|
||||
@@ -548,15 +626,6 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu
|
||||
map.put("partnerUsername", lineInfoDO.getUsername());
|
||||
map.put("partnerMobile", lineInfoDO.getMobile());
|
||||
map.put("storeName", shopInfoDO.getShopName());
|
||||
List<EnterpriseUserDO> userDOList = userAuthMappingService.getAllUserByRoleEnumAndRegionId(UserRoleEnum.FINANCE, shopInfoDO.getRegionId());
|
||||
List<String> finances = new ArrayList<>();
|
||||
if (Objects.nonNull(userDOList)) {
|
||||
finances.addAll(userDOList.stream().map(EnterpriseUserDO::getUserId).collect(Collectors.toList()));
|
||||
}
|
||||
// List<String> liGuiNeiQinList = enterpriseUserRoleDao.selectUserIdsByRoleIdList(Arrays.asList(UserRoleEnum.CONSTRUCTION_CUSTOMER.getCode()));
|
||||
// commonService.sendQWMessage(liGuiNeiQinList,
|
||||
// MessageEnum.MESSAGE_57,
|
||||
// map);
|
||||
commonService.sendQWMessage(Collections.singletonList(shopInfoDO.getInvestmentManager()),
|
||||
MessageEnum.MESSAGE_26,
|
||||
map);
|
||||
@@ -564,13 +633,13 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu
|
||||
}
|
||||
shopAuditInfoMapper.insertSelective(shopAuditInfoDO);
|
||||
Long auditId = shopAuditInfoDO.getId();
|
||||
if (contractCallbackDTO!=null&&StringUtils.isNotEmpty(contractCallbackDTO.getStoreCode())){
|
||||
if (contractCallbackDTO != null && StringUtils.isNotEmpty(contractCallbackDTO.getStoreCode())) {
|
||||
shopInfoDO.setShopCode(contractCallbackDTO.getStoreCode());
|
||||
shopInfoMapper.updateByPrimaryKeySelective(shopInfoDO);
|
||||
}
|
||||
signFranchiseDAO.updateAuditByShopId(auditId, shopId,contractCallbackDTO);
|
||||
signFranchiseDAO.updateAuditByShopId(auditId, shopId, contractCallbackDTO);
|
||||
//审批记录表记录
|
||||
List<OperationLogDO> operationLogs = operationLogDAO.getBySubStageStatusEnumAndsStatus(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_83, OperationTypeEnum.OPERATION_TYPE_1.getCode());
|
||||
List<OperationLogDO> operationLogs = operationLogDAO.getBySubStageStatusEnumAndsStatus(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_83_5, OperationTypeEnum.OPERATION_TYPE_1.getCode());
|
||||
operationLogService.batchUpdateProcessed(operationLogs, auditId, user.getUserId(), request.getCause());
|
||||
return true;
|
||||
} else {
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
package com.cool.store.service.plan;
|
||||
|
||||
import com.cool.store.request.plan.CityPlanningUpdateRequest;
|
||||
import com.cool.store.request.plan.CityPlanningQueryRequest;
|
||||
import com.cool.store.vo.plan.CityPlanningStatisticsVO;
|
||||
import com.cool.store.vo.plan.CityPlanningVO;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 城市规划服务接口
|
||||
*/
|
||||
public interface CityPlanningService {
|
||||
|
||||
/**
|
||||
* 新增城市规划
|
||||
* @param request 新增请求
|
||||
* @return 是否成功
|
||||
*/
|
||||
Boolean add(CityPlanningUpdateRequest request);
|
||||
|
||||
/**
|
||||
* 编辑城市规划
|
||||
* @param request 编辑请求
|
||||
* @return 是否成功
|
||||
*/
|
||||
Boolean update(CityPlanningUpdateRequest request);
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
* @param request 查询请求
|
||||
* @return 分页结果
|
||||
*/
|
||||
PageInfo<CityPlanningVO> queryPage(CityPlanningQueryRequest request);
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
* @param ids id列表
|
||||
* @return 是否成功
|
||||
*/
|
||||
Boolean deleteByIds(List<Long> ids);
|
||||
|
||||
/**
|
||||
* 规划进度
|
||||
* @param request 查询请求
|
||||
* @return 分页结果
|
||||
*/
|
||||
PageInfo<CityPlanningVO> cityPlanningSchedule(CityPlanningQueryRequest request);
|
||||
|
||||
/**
|
||||
* 规划进度总计
|
||||
* @param request 查询请求
|
||||
* @return 规划进度统计VO
|
||||
*/
|
||||
CityPlanningStatisticsVO cityPlanningStatistics(CityPlanningQueryRequest request);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,161 @@
|
||||
package com.cool.store.service.plan.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollStreamUtil;
|
||||
import com.cool.store.context.CurrentUserHolder;
|
||||
import com.cool.store.dao.StoreDao;
|
||||
import com.cool.store.dao.ad.AdDistrictDAO;
|
||||
import com.cool.store.dao.plan.CityPlanningDAO;
|
||||
import com.cool.store.entity.plan.CityPlanningDO;
|
||||
import com.cool.store.enums.ErrorCodeEnum;
|
||||
import com.cool.store.exception.ServiceException;
|
||||
import com.cool.store.request.plan.CityPlanningUpdateRequest;
|
||||
import com.cool.store.request.plan.CityPlanningQueryRequest;
|
||||
import com.cool.store.service.plan.CityPlanningService;
|
||||
import com.cool.store.utils.BeanUtil;
|
||||
import com.cool.store.vo.plan.CityPlanningStatisticsVO;
|
||||
import com.cool.store.vo.plan.CityPlanningVO;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
* 城市规划服务实现类
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class CityPlanningServiceImpl implements CityPlanningService {
|
||||
private final CityPlanningDAO cityPlanningDAO;
|
||||
private final AdDistrictDAO adDistrictDAO;
|
||||
private final StoreDao storeDao;
|
||||
|
||||
private final static DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyMMddHHmmssSSS");
|
||||
|
||||
@Override
|
||||
public Boolean add(CityPlanningUpdateRequest request) {
|
||||
// 校验同年份同季度同省市不能存在2个规划
|
||||
if (cityPlanningDAO.existsByYearAndQuarterAndRegion(
|
||||
request.getYear(), request.getQuarter(),
|
||||
request.getProvinceCode(), request.getCityCode(), null)) {
|
||||
throw new ServiceException(ErrorCodeEnum.CITY_PLANNING_EXISTS);
|
||||
}
|
||||
|
||||
CityPlanningDO cityPlanningDO = BeanUtil.toBean(request, CityPlanningDO.class);
|
||||
cityPlanningDO.setPlanNo(generatePlanNo(request));
|
||||
cityPlanningDO.setCreateUserId(CurrentUserHolder.getUserId());
|
||||
return cityPlanningDAO.insertSelective(cityPlanningDO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean update(CityPlanningUpdateRequest request) {
|
||||
// 先查询是否存在
|
||||
CityPlanningDO existing = cityPlanningDAO.getById(request.getId());
|
||||
if (existing == null) {
|
||||
throw new ServiceException("规划不存在");
|
||||
}
|
||||
|
||||
// 校验同年份同季度同省市不能存在2个规划(排除自身)
|
||||
if (cityPlanningDAO.existsByYearAndQuarterAndRegion(
|
||||
request.getYear(), request.getQuarter(),
|
||||
request.getProvinceCode(), request.getCityCode(), request.getId())) {
|
||||
throw new ServiceException("同年份同季度同省市已存在其他规划,不能修改");
|
||||
}
|
||||
|
||||
CityPlanningDO cityPlanningDO = BeanUtil.toBean(request, CityPlanningDO.class);
|
||||
return cityPlanningDAO.updateSelective(cityPlanningDO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageInfo<CityPlanningVO> queryPage(CityPlanningQueryRequest request) {
|
||||
PageHelper.startPage(request.getPageNum(), request.getPageSize());
|
||||
List<CityPlanningDO> list = cityPlanningDAO.queryByCondition(request);
|
||||
PageInfo<CityPlanningDO> page = new PageInfo<>(list);
|
||||
PageInfo<CityPlanningVO> result = BeanUtil.toPage(page, CityPlanningVO.class);
|
||||
List<String> adCodes = list.stream()
|
||||
.flatMap(v -> Stream.of(v.getProvinceCode(), v.getCityCode()))
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
Map<String, String> adMap = adDistrictDAO.getNameByCodes(adCodes);
|
||||
result.getList().forEach(v -> {
|
||||
v.setProvince(adMap.get(v.getProvinceCode()));
|
||||
v.setCity(adMap.get(v.getCityCode()));
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean deleteByIds(List<Long> ids) {
|
||||
return cityPlanningDAO.deleteByIds(ids);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageInfo<CityPlanningVO> cityPlanningSchedule(CityPlanningQueryRequest request) {
|
||||
PageHelper.startPage(request.getPageNum(), request.getPageSize());
|
||||
List<CityPlanningDO> list = cityPlanningDAO.queryByCondition(request);
|
||||
PageInfo<CityPlanningDO> page = new PageInfo<>(list);
|
||||
PageInfo<CityPlanningVO> result = BeanUtil.toPage(page, CityPlanningVO.class);
|
||||
List<String> adCodes = list.stream()
|
||||
.flatMap(v -> Stream.of(v.getProvinceCode(), v.getCityCode()))
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
Map<String, String> adMap = adDistrictDAO.getNameByCodes(adCodes);
|
||||
Set<Integer> years = CollStreamUtil.toSet(list, CityPlanningDO::getYear);
|
||||
Map<Integer, Map<Integer, Map<String, Map<String, Integer>>>> storeNumMap = storeDao.storeNumStatisticsByAd(new ArrayList<>(years), new ArrayList<>(adMap.values()));
|
||||
result.getList().forEach(v -> {
|
||||
v.setProvince(adMap.get(v.getProvinceCode()));
|
||||
v.setCity(adMap.get(v.getCityCode()));
|
||||
Integer completeNum = storeNumMap.getOrDefault(v.getYear(), Collections.emptyMap())
|
||||
.getOrDefault(v.getQuarter(), Collections.emptyMap())
|
||||
.getOrDefault(v.getProvince(), Collections.emptyMap())
|
||||
.getOrDefault(v.getCity(), 0);
|
||||
v.setCompleteNum(completeNum);
|
||||
BigDecimal rate = v.getTarget() != 0 ? BigDecimal.valueOf(completeNum)
|
||||
.multiply(BigDecimal.valueOf(100))
|
||||
.divide(BigDecimal.valueOf(v.getTarget()), 1, RoundingMode.HALF_UP) : BigDecimal.ZERO;
|
||||
v.setCompleteRate(rate);
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CityPlanningStatisticsVO cityPlanningStatistics(CityPlanningQueryRequest request) {
|
||||
List<CityPlanningDO> list = cityPlanningDAO.queryByCondition(request);
|
||||
List<String> adCodes = list.stream()
|
||||
.flatMap(v -> Stream.of(v.getProvinceCode(), v.getCityCode()))
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
Map<String, String> adMap = adDistrictDAO.getNameByCodes(adCodes);
|
||||
Set<Integer> years = CollStreamUtil.toSet(list, CityPlanningDO::getYear);
|
||||
Map<Integer, Map<Integer, Map<String, Map<String, Integer>>>> storeNumMap = storeDao.storeNumStatisticsByAd(new ArrayList<>(years), new ArrayList<>(adMap.values()));
|
||||
int completeNum = 0, totalTarget = 0;
|
||||
for (CityPlanningDO v : list) {
|
||||
String province = adMap.get(v.getProvinceCode());
|
||||
String city = adMap.get(v.getCityCode());
|
||||
completeNum += storeNumMap.getOrDefault(v.getYear(), Collections.emptyMap())
|
||||
.getOrDefault(v.getQuarter(), Collections.emptyMap())
|
||||
.getOrDefault(province, Collections.emptyMap())
|
||||
.getOrDefault(city, 0);
|
||||
totalTarget += v.getTarget();
|
||||
}
|
||||
BigDecimal rate = totalTarget != 0 ? BigDecimal.valueOf(completeNum)
|
||||
.multiply(BigDecimal.valueOf(100))
|
||||
.divide(BigDecimal.valueOf(totalTarget), 1, RoundingMode.HALF_UP) : BigDecimal.ZERO;
|
||||
return new CityPlanningStatisticsVO(totalTarget, completeNum, rate);
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成规划编码
|
||||
* 格式:CP + 年份 + 季度 + 序号
|
||||
*/
|
||||
private String generatePlanNo(CityPlanningUpdateRequest request) {
|
||||
return "GH" + request.getYear() + request.getQuarter() + request.getCityCode() + ((int) (Math.random() * 900) + 100);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
package com.cool.store.controller.webb;
|
||||
|
||||
import com.cool.store.response.ResponseResult;
|
||||
import com.cool.store.service.ad.AdDistrictService;
|
||||
import com.cool.store.vo.ad.AdDistrictVO;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 行政区划 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author wangff
|
||||
* @since 2025/10/14
|
||||
*/
|
||||
@Api(tags = "行政区划")
|
||||
@RestController
|
||||
@RequestMapping("/pc/ad/district")
|
||||
@RequiredArgsConstructor
|
||||
public class AdDistrictController {
|
||||
private final AdDistrictService adDistrictService;
|
||||
|
||||
@ApiOperation("行政区划列表")
|
||||
@GetMapping("/list")
|
||||
public ResponseResult<List<AdDistrictVO>> cityList(Long pid) {
|
||||
return ResponseResult.success(adDistrictService.cityList(pid));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
package com.cool.store.controller.webb;
|
||||
|
||||
import com.cool.store.common.InsertGroup;
|
||||
import com.cool.store.common.UpdateGroup;
|
||||
import com.cool.store.request.plan.CityPlanningUpdateRequest;
|
||||
import com.cool.store.request.plan.CityPlanningQueryRequest;
|
||||
import com.cool.store.response.ResponseResult;
|
||||
import com.cool.store.service.plan.CityPlanningService;
|
||||
import com.cool.store.vo.plan.CityPlanningStatisticsVO;
|
||||
import com.cool.store.vo.plan.CityPlanningVO;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 城市规划控制器
|
||||
*/
|
||||
@Api(tags = "城市规划")
|
||||
@RestController
|
||||
@RequestMapping("/pc/cityPlanning")
|
||||
@RequiredArgsConstructor
|
||||
public class CityPlanningController {
|
||||
private final CityPlanningService cityPlanningService;
|
||||
|
||||
@ApiOperation("新增城市规划")
|
||||
@PostMapping("/add")
|
||||
public ResponseResult<Boolean> add(@RequestBody @Validated(InsertGroup.class) CityPlanningUpdateRequest request) {
|
||||
return ResponseResult.success(cityPlanningService.add(request));
|
||||
}
|
||||
|
||||
@ApiOperation("编辑城市规划")
|
||||
@PostMapping("/update")
|
||||
public ResponseResult<Boolean> update(@RequestBody @Validated(UpdateGroup.class) CityPlanningUpdateRequest request) {
|
||||
return ResponseResult.success(cityPlanningService.update(request));
|
||||
}
|
||||
|
||||
@ApiOperation("分页查询城市规划")
|
||||
@PostMapping("/queryPage")
|
||||
public ResponseResult<PageInfo<CityPlanningVO>> queryPage(@RequestBody CityPlanningQueryRequest request) {
|
||||
return ResponseResult.success(cityPlanningService.queryPage(request));
|
||||
}
|
||||
|
||||
@ApiOperation("批量删除城市规划")
|
||||
@PostMapping("/deleteByIds")
|
||||
public ResponseResult<Boolean> deleteByIds(@RequestBody List<Long> ids) {
|
||||
return ResponseResult.success(cityPlanningService.deleteByIds(ids));
|
||||
}
|
||||
|
||||
@ApiOperation("规划进度")
|
||||
@PostMapping("/cityPlanningSchedule")
|
||||
public ResponseResult<PageInfo<CityPlanningVO>> cityPlanningSchedule(@RequestBody CityPlanningQueryRequest request) {
|
||||
return ResponseResult.success(cityPlanningService.cityPlanningSchedule(request));
|
||||
}
|
||||
|
||||
@ApiOperation("规划进度总计")
|
||||
@PostMapping("/cityPlanningStatistics")
|
||||
public ResponseResult<CityPlanningStatisticsVO> cityPlanningStatistics(@RequestBody CityPlanningQueryRequest request) {
|
||||
return ResponseResult.success(cityPlanningService.cityPlanningStatistics(request));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package com.cool.store.controller.webb;
|
||||
|
||||
import com.cool.store.context.CurrentUserHolder;
|
||||
import com.cool.store.context.LoginUserInfo;
|
||||
import com.cool.store.request.AuditApproveRequest;
|
||||
import com.cool.store.request.BuildInformationRequest;
|
||||
import com.cool.store.response.BuildInformationResponse;
|
||||
import com.cool.store.response.ResponseResult;
|
||||
@@ -33,7 +36,8 @@ public class PCBuildInformationController {
|
||||
@ApiOperation("提交/修改")
|
||||
@PostMapping("/submitOrUpdate")
|
||||
public ResponseResult<Integer> submitBuildInformation(@RequestBody @Validated BuildInformationRequest request) {
|
||||
return ResponseResult.success(buildInformationService.submitOrUpdate(request));
|
||||
LoginUserInfo user = CurrentUserHolder.getUser();
|
||||
return ResponseResult.success(buildInformationService.submitOrUpdate(request, user.getUserId(), user.getName()));
|
||||
}
|
||||
|
||||
@ApiOperation("获取加盟类型 1 - 个人加盟 2- 企业加盟")
|
||||
@@ -42,4 +46,10 @@ public class PCBuildInformationController {
|
||||
return ResponseResult.success(buildInformationService.getJoinType(lineId));
|
||||
}
|
||||
|
||||
@ApiOperation("建店资料营运顾问审批")
|
||||
@PostMapping("/operationsConsultantAudit")
|
||||
public ResponseResult<Boolean> operationsConsultantAudit(@RequestBody @Validated AuditApproveRequest request) {
|
||||
LoginUserInfo user = CurrentUserHolder.getUser();
|
||||
return ResponseResult.success(buildInformationService.operationsConsultantAudit(request, user));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,6 +44,13 @@ public class PCSignFranchiseController {
|
||||
return ResponseResult.success(signFranchiseService.auditApprove(request,user));
|
||||
}
|
||||
|
||||
@ApiOperation("加盟合同签约财务审核")
|
||||
@PostMapping("/audit/finance")
|
||||
public ResponseResult<Boolean> financeAuditApprove(@RequestBody @Validated AuditApproveRequest request) {
|
||||
LoginUserInfo user = CurrentUserHolder.getUser();
|
||||
return ResponseResult.success(signFranchiseService.financeAuditApprove(request,user));
|
||||
}
|
||||
|
||||
@ApiOperation("获取默认值")
|
||||
@GetMapping("/default/get")
|
||||
public ResponseResult<AddSignFranchiseResponse> getSignFranchise(@RequestParam("shopId") Long shopId) {
|
||||
|
||||
@@ -36,7 +36,8 @@ public class MiniBuildInformationController {
|
||||
@ApiOperation("提交/修改")
|
||||
@PostMapping("/submitOrUpdate")
|
||||
public ResponseResult<Integer> submitBuildInformation(@RequestBody @Validated BuildInformationRequest request) {
|
||||
return ResponseResult.success(buildInformationService.submitOrUpdate(request));
|
||||
PartnerUserInfoVO user = PartnerUserHolder.getUser();
|
||||
return ResponseResult.success(buildInformationService.submitOrUpdate(request, user.getPartnerId(), user.getUsername()));
|
||||
}
|
||||
|
||||
@ApiOperation("获取加盟类型 1 - 个人加盟 2- 企业加盟")
|
||||
|
||||
Reference in New Issue
Block a user