Merge branch 'cc_20250513_franchise_report' into 'master'

Cc 20250513 franchise report

See merge request hangzhou/java/custom_zxjp!82
This commit is contained in:
苏竹红
2025-05-15 10:14:23 +00:00
37 changed files with 1083 additions and 105 deletions

View File

@@ -148,7 +148,7 @@ public enum ErrorCodeEnum {
LINE_ALREADY_EXISTS(10211163, "该线索已存在,跟进人为{0}", null), LINE_ALREADY_EXISTS(10211163, "该线索已存在,跟进人为{0}", null),
LINE_EXISTS_IN_PUBLIC_SEA(10211164, "该线索已存在,请前往公海认领", null), LINE_EXISTS_IN_PUBLIC_SEA(10211164, "该线索已存在,请前往公海认领", null),
CONTENT_DUPLICATED(10211200, "动态标题重复!", null), CONTENT_DUPLICATED(10211200, "动态标题重复!", null),
SIGN_FAIL(600000, "验签失败", null), SIGN_FAIL(600000, "验签失败=>{0}", null),
GET_ACCESSTOKEN_ERROR(600001, "获取小程序TOKEN错误", null), GET_ACCESSTOKEN_ERROR(600001, "获取小程序TOKEN错误", null),
NEW_MOBILE_HAS_EXIST(600002,"加盟商用户信息已存在",null), NEW_MOBILE_HAS_EXIST(600002,"加盟商用户信息已存在",null),
INSPECTION_USER_OCCUPY(600003,"当前稽核人已经配置其他战区",null), INSPECTION_USER_OCCUPY(600003,"当前稽核人已经配置其他战区",null),
@@ -195,7 +195,7 @@ public enum ErrorCodeEnum {
AUDIT_RESULT_FALSE(109012, "意向加盟合同API本次调用结果与上一次不一致", null), AUDIT_RESULT_FALSE(109012, "意向加盟合同API本次调用结果与上一次不一致", null),
TIME_NULL_FALSE(109013, "有时间为空", null), TIME_NULL_FALSE(109013, "完成时间不能为空", null),
UNISSUED_STATEMENT_2(109014, "该门店已发布账单", null), UNISSUED_STATEMENT_2(109014, "该门店已发布账单", null),
@@ -257,6 +257,7 @@ public enum ErrorCodeEnum {
BANK_EXIST(151007,"当前银行已存在,请直接选择!",null), BANK_EXIST(151007,"当前银行已存在,请直接选择!",null),
EXPORT_LIMIT_5000(151008,"导出数据不能超过5000条请增加筛选条件减少导出数量",null), EXPORT_LIMIT_5000(151008,"导出数据不能超过5000条请增加筛选条件减少导出数量",null),
REGION_INTERSECTION_IS_NULL(151011,"所选所属大区/分公司,不在所选集团下",null),
; ;

View File

@@ -20,7 +20,9 @@ public enum FileTypeEnum {
EXPORT_PROGRESS("exportProgress","进度确认"), EXPORT_PROGRESS("exportProgress","进度确认"),
IMPORT_OA_OLD_SHOP_DATA_ERROR("OaOldShopDataError", "导入OA旧数据错误列表"), IMPORT_OA_OLD_SHOP_DATA_ERROR("OaOldShopDataError", "导入OA旧数据错误列表"),
IMPORT_OA_OLD_SHOP_DATA("importOaOldShopData", "导入OA旧数据"), IMPORT_OA_OLD_SHOP_DATA("importOaOldShopData", "导入OA旧数据"),
ZXJP_OPEN_SHOP_REPORT("zxjpOpenShopReport","正新鸡排开店"),
IMPORT_OA_OLD_SHOP_STAGE_DATA("importOaOldShopStageData", "导入OA旧数据"),
IMPORT_OA_OLD_SHOP_STAGE_DATA_ERROR("OaOldShopStageDataError", "导入OA旧数据阶段错误列表"),
; ;
private String fileType; private String fileType;
private String desc; private String desc;

View File

@@ -11,6 +11,7 @@ import javax.annotation.Resource;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors;
/** /**
* @Auther: WangShuo * @Auther: WangShuo
@@ -57,4 +58,14 @@ public class AcceptanceInfoDAO {
public List<AcceptanceInfoDO> selectByEntryTimeNull(){ public List<AcceptanceInfoDO> selectByEntryTimeNull(){
return acceptanceInfoMapper.selectByEntryTimeNull(); return acceptanceInfoMapper.selectByEntryTimeNull();
} }
public List<Long> getAllShopIds(){
List<AcceptanceInfoDO> acceptanceInfoDOList = acceptanceInfoMapper.selectAll();
return acceptanceInfoDOList.stream().map(AcceptanceInfoDO::getShopId).collect(Collectors.toList());
}
public Integer initAcceptanceInfo(List<Long> shopIds){
return acceptanceInfoMapper.initAcceptanceInfo(shopIds);
}
} }

View File

@@ -5,10 +5,14 @@ import com.cool.store.entity.BigRegionDO;
import com.cool.store.enums.ErrorCodeEnum; import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.exception.ServiceException; import com.cool.store.exception.ServiceException;
import com.cool.store.mapper.BigRegionMapper; import com.cool.store.mapper.BigRegionMapper;
import com.cool.store.request.QueryBigRegionRequest;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import tk.mybatis.mapper.entity.Example;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* @Author suzhuhong * @Author suzhuhong
@@ -32,4 +36,33 @@ public class BigRegionDAO {
return bigRegionMapper.queryOrgInfoByBigRegionAndJoinMode(regionId,joinMode); return bigRegionMapper.queryOrgInfoByBigRegionAndJoinMode(regionId,joinMode);
} }
public List<Long> getRegionIdByGroupName(List<String> groupNameList){
if (CollectionUtils.isEmpty(groupNameList)){
return null;
}
Example example = new Example(BigRegionDO.class);
example.createCriteria().andIn("groupName", groupNameList);
List<BigRegionDO> bigRegionDOS = bigRegionMapper.selectByExample(example);
if (CollectionUtils.isEmpty(bigRegionDOS)){
return null;
}
return bigRegionDOS.stream().map(BigRegionDO::getRegionId).collect(Collectors.toList());
}
public List<BigRegionDO> getByRegionIdList(List<Long> regionIdList){
if (CollectionUtils.isEmpty(regionIdList)){
return null;
}
Example example = new Example(BigRegionDO.class);
example.createCriteria().andIn("regionId", regionIdList).andEqualTo("joinMode",0);
return bigRegionMapper.selectByExample(example);
}
/**
* @Auther: wangshuo
* @Date: 2025/5/15
* @description:只查询joinMode = 0
*/
public List<BigRegionDTO> queryBigRegion(QueryBigRegionRequest queryBigRegionRequest){
return bigRegionMapper.queryBigRegion(queryBigRegionRequest);
}
} }

View File

@@ -1,6 +1,7 @@
package com.cool.store.dao; package com.cool.store.dao;
import com.cool.store.constants.CommonConstants; import com.cool.store.constants.CommonConstants;
import com.cool.store.dto.FranchiseReportDTO;
import com.cool.store.dto.LicenseSyncDTO; import com.cool.store.dto.LicenseSyncDTO;
import com.cool.store.dto.Preparation.PreparationDTO; import com.cool.store.dto.Preparation.PreparationDTO;
import com.cool.store.dto.openPreparation.OpenPlanShopInfoDTO; import com.cool.store.dto.openPreparation.OpenPlanShopInfoDTO;
@@ -12,11 +13,7 @@ import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.enums.point.ShopStatusEnum; import com.cool.store.enums.point.ShopStatusEnum;
import com.cool.store.exception.ServiceException; import com.cool.store.exception.ServiceException;
import com.cool.store.mapper.ShopInfoMapper; import com.cool.store.mapper.ShopInfoMapper;
import com.cool.store.request.BranchShopRequest; import com.cool.store.request.*;
import com.cool.store.request.PlanListRequest;
import com.cool.store.request.PointLinePageRequest;
import com.cool.store.request.PreparationRequest;
import com.cool.store.request.platformBuildListRequest;
import com.cool.store.response.MiniShopsResponse; import com.cool.store.response.MiniShopsResponse;
import com.cool.store.response.PlatformBuildListResponse; import com.cool.store.response.PlatformBuildListResponse;
import com.cool.store.vo.shop.StageShopCountVO; import com.cool.store.vo.shop.StageShopCountVO;
@@ -290,4 +287,8 @@ public class ShopInfoDAO {
example.createCriteria().andIn("shopCode", shopCodeList).andEqualTo("deleted", false); example.createCriteria().andIn("shopCode", shopCodeList).andEqualTo("deleted", false);
return shopInfoMapper.selectByExample(example); return shopInfoMapper.selectByExample(example);
} }
public List<FranchiseReportDTO> getShopFranchiseReportList(FranchiseReportRequest request){
return shopInfoMapper.getShopFranchiseReportList(request);
}
} }

View File

@@ -457,4 +457,13 @@ public class ShopStageInfoDAO {
boolean isTerminated = shopStageInfo.isTerminated(); boolean isTerminated = shopStageInfo.isTerminated();
return shopStageInfoMapper.dataUpdateAcceptanceStatus(list, shopStageInfo.getShopSubStageEnum().getShopSubStage(), shopStageInfo.getShopSubStageStatus(), isTerminated, remark); return shopStageInfoMapper.dataUpdateAcceptanceStatus(list, shopStageInfo.getShopSubStageEnum().getShopSubStage(), shopStageInfo.getShopSubStageStatus(), isTerminated, remark);
} }
public List<ShopStageInfoDO> getStageByShopStage(List<Long> shopIds, Integer shopStage){
if (CollectionUtils.isEmpty(shopIds) || shopStage == null){
return null;
}
Example example = new Example(ShopStageInfoDO.class);
example.createCriteria().andIn("shopId",shopIds).andEqualTo("shopStage",shopStage);
return shopStageInfoMapper.selectByExample(example);
}
} }

View File

@@ -36,4 +36,7 @@ public interface AcceptanceInfoMapper extends Mapper<AcceptanceInfoDO> {
* @description:查询进场时间为空的数据 * @description:查询进场时间为空的数据
*/ */
List<AcceptanceInfoDO> selectByEntryTimeNull(); List<AcceptanceInfoDO> selectByEntryTimeNull();
Integer initAcceptanceInfo(@Param("list") List<Long> shopIds);
} }

View File

@@ -2,6 +2,8 @@ package com.cool.store.mapper;
import com.cool.store.dto.region.BigRegionDTO; import com.cool.store.dto.region.BigRegionDTO;
import com.cool.store.entity.BigRegionDO; import com.cool.store.entity.BigRegionDO;
import com.cool.store.request.QueryBigRegionRequest;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
import java.util.List; import java.util.List;
@@ -24,5 +26,5 @@ public interface BigRegionMapper extends Mapper<BigRegionDO> {
*/ */
BigRegionDO queryOrgInfoByBigRegionAndJoinMode(Long regionId,Integer joinMode); BigRegionDO queryOrgInfoByBigRegionAndJoinMode(Long regionId,Integer joinMode);
List<BigRegionDTO> queryBigRegion(@Param("request") QueryBigRegionRequest queryBigRegionRequest);
} }

View File

@@ -1,5 +1,6 @@
package com.cool.store.mapper; package com.cool.store.mapper;
import com.cool.store.dto.FranchiseReportDTO;
import com.cool.store.dto.LicenseSyncDTO; import com.cool.store.dto.LicenseSyncDTO;
import com.cool.store.dto.Preparation.PreparationDTO; import com.cool.store.dto.Preparation.PreparationDTO;
import com.cool.store.dto.openPreparation.OpenPlanShopInfoDTO; import com.cool.store.dto.openPreparation.OpenPlanShopInfoDTO;
@@ -7,11 +8,7 @@ import com.cool.store.dto.point.LineCountDTO;
import com.cool.store.dto.point.ShopPointDTO; import com.cool.store.dto.point.ShopPointDTO;
import com.cool.store.entity.PointInfoDO; import com.cool.store.entity.PointInfoDO;
import com.cool.store.entity.ShopInfoDO; import com.cool.store.entity.ShopInfoDO;
import com.cool.store.request.BranchShopRequest; import com.cool.store.request.*;
import com.cool.store.request.PlanListRequest;
import com.cool.store.request.PointLinePageRequest;
import com.cool.store.request.PreparationRequest;
import com.cool.store.request.platformBuildListRequest;
import com.cool.store.response.MiniShopsResponse; import com.cool.store.response.MiniShopsResponse;
import com.cool.store.response.PlatformBuildListResponse; import com.cool.store.response.PlatformBuildListResponse;
import com.cool.store.vo.shop.StageShopCountVO; import com.cool.store.vo.shop.StageShopCountVO;
@@ -101,6 +98,9 @@ public interface ShopInfoMapper extends Mapper<ShopInfoDO> {
*/ */
List<ShopInfoDO> selectShopListByRegionId(@Param("regionIds") List<Long> regionIds,@Param("shopSubStage") Integer shopSubStage,@Param("subStageStatus")List<Integer> subStageStatus,@Param("keyWord")String keyWord); List<ShopInfoDO> selectShopListByRegionId(@Param("regionIds") List<Long> regionIds,@Param("shopSubStage") Integer shopSubStage,@Param("subStageStatus")List<Integer> subStageStatus,@Param("keyWord")String keyWord);
List<ShopInfoDO> selectShopListByUser(@Param("userId") String userId,@Param("shopSubStage") Integer shopSubStage,@Param("subStageStatus")List<Integer> subStageStatus,@Param("keyWord")String keyWord);
List<ShopInfoDO> selectByIdOrSelectAll(@Param("shopId") Long shopId); List<ShopInfoDO> selectByIdOrSelectAll(@Param("shopId") Long shopId);
@@ -114,7 +114,7 @@ public interface ShopInfoMapper extends Mapper<ShopInfoDO> {
/** /**
* selectAllDataOrByShopId * selectAllDataOrByShopId
* @param shopId * @param
* @return * @return
*/ */
List<ShopInfoDO> selectAllDataOrByLineId(@Param("lineId") Long lineId); List<ShopInfoDO> selectAllDataOrByLineId(@Param("lineId") Long lineId);
@@ -141,4 +141,5 @@ public interface ShopInfoMapper extends Mapper<ShopInfoDO> {
Integer updateShopCity(@Param("list") List<ShopInfoDO> list); Integer updateShopCity(@Param("list") List<ShopInfoDO> list);
List<FranchiseReportDTO> getShopFranchiseReportList(@Param("request") FranchiseReportRequest request);
} }

View File

@@ -36,6 +36,12 @@
create_time,update_time,deleted,plan_acceptance_time,actual_acceptance_time,booking_user,plan_exit_time, create_time,update_time,deleted,plan_acceptance_time,actual_acceptance_time,booking_user,plan_exit_time,
ks_account,verification_mobile,shop_location_screenshots,shop_doorway_photo,shop_interior_photo ks_account,verification_mobile,shop_location_screenshots,shop_doorway_photo,shop_interior_photo
</sql> </sql>
<insert id="initAcceptanceInfo">
<foreach collection="list" index="index" item="item" separator=";">
insert into xfsg_acceptance_info (shop_id,create_time,update_time,deleted)
values (#{item},now(),now(),0)
</foreach>
</insert>
<update id="updateByShopIDSelective"> <update id="updateByShopIDSelective">
update xfsg_acceptance_info update xfsg_acceptance_info
<set> <set>

View File

@@ -14,6 +14,7 @@
<result column="join_mode" jdbcType="TINYINT" property="joinMode" /> <result column="join_mode" jdbcType="TINYINT" property="joinMode" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" /> <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" /> <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
<result column="group_name" jdbcType="VARCHAR" property="groupName" />
</resultMap> </resultMap>
@@ -41,4 +42,18 @@
</if> </if>
</where> </where>
</select> </select>
<select id="queryBigRegion" resultType="com.cool.store.dto.region.BigRegionDTO">
select *
from `xfsg_big_region`
where join_mode = 0
<if test="request.keyword!=null and request.keyword !=''">
and region_name like CONCAT('%',#{request.keyword},'%')
</if>
<if test="request.groupNameList!=null and request.groupNameList.size()>0">
and group_name in
<foreach item="item" collection="request.groupNameList" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
</select>
</mapper> </mapper>

View File

@@ -482,6 +482,54 @@
a.create_time >= '2025-04-19 00:00:00' a.create_time >= '2025-04-19 00:00:00'
and b.downstream_system_salting is null; and b.downstream_system_salting is null;
</select> </select>
<select id="getShopFranchiseReportList" resultType="com.cool.store.dto.FranchiseReportDTO">
select
a.id as shopId,
a.region_id as regionId,
a.store_type as storeType
from xfsg_shop_info a
left join xfsg_shop_stage_info b on a.id = b.shop_id
where
a.deleted = 0 and a.shop_status != 2 and a.franchise_brand = 1
and b.shop_sub_stage = 150 and b.is_terminated = 1
<if test = "request.regionIds !=null and request.regionIds.size >0">
and a.region_id in
<foreach collection="request.regionIds" item="regionId" index="index" open="(" separator="," close=")">
#{regionId}
</foreach>
</if>
<if test = "request.storeTypes !=null and request.storeTypes.size >0">
and a.store_type in
<foreach collection="request.storeTypes" item="storeType" index="index" open="(" separator="," close=")">
#{storeType}
</foreach>
</if>
and b.actual_complete_time >= #{request.buildStartTime} and b.actual_complete_time &lt;= #{request.buildEndTime}
</select>
<select id="selectShopListByUser" resultType="com.cool.store.entity.ShopInfoDO">
select
xsi.id,xsi.line_id as lineId,xsi.region_id as regionId,xsi.shop_name as shopName,xsi.store_num as
storeNum,xsi.shop_code as shopCode
from xfsg_shop_info xsi
left join xfsg_shop_stage_info xssi on xssi.shop_id = xsi.id
where
xsi.deleted = 0
AND xssi.shop_sub_stage_status != -100
and xssi.shop_sub_stage = #{shopSubStage}
<if test="userId!=null and userId!= ''">
and xsi.investment_manager = #{userId}
</if>
<if test="subStageStatus != null and subStageStatus.size()>0">
and xssi.shop_sub_stage_status in
<foreach collection="subStageStatus" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="keyWord != null and keyWord != '' ">
and xsi.shop_name Like concat("%",#{keyWord},"%") or xsi.store_num Like concat("%",#{keyWord},"%")
</if>
</select>
<update id="batchUpdate" parameterType="list"> <update id="batchUpdate" parameterType="list">
<foreach collection="list" item="item" index="index" open="" close="" separator=";"> <foreach collection="list" item="item" index="index" open="" close="" separator=";">

View File

@@ -0,0 +1,19 @@
package com.cool.store.dto;
import lombok.Data;
/**
* @Author: WangShuo
* @Date: 2025/05/13/15:59
* @Version 1.0
* @注释:
*/
@Data
public class FranchiseReportDTO {
private Long shopId;
private Long regionId;
private Integer storeType;
}

View File

@@ -57,6 +57,17 @@ public class BigRegionDO {
@Column(name = "update_time") @Column(name = "update_time")
private Date updateTime; private Date updateTime;
//集团名称
@Column(name = "group_name")
private String groupName;
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
/** /**
* @return id * @return id
*/ */

View File

@@ -0,0 +1,33 @@
package com.cool.store.request;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* @Author: WangShuo
* @Date: 2025/05/13/15:27
* @Version 1.0
* @注释:
*/
@Data
public class FranchiseReportRequest {
@ApiModelProperty(value = "加盟集团")
private List<String> joinGroupName;
@ApiModelProperty(value = "加盟分部/片区")
private List<Long> regionIds;
@ApiModelProperty(value = "门店类型")
private List<Integer> storeTypes;
@ApiModelProperty(value = "建店完成开始 时间格式 2025-05-01 00:00:00")
private String buildStartTime;
@ApiModelProperty(value = "建店完成结束时间 时间格式 2025-05-01 23:59:59")
private String buildEndTime;
}

View File

@@ -0,0 +1,18 @@
package com.cool.store.request;
import lombok.Data;
import java.util.List;
/**
* @Author: WangShuo
* @Date: 2025/05/15/10:15
* @Version 1.0
* @注释:
*/
@Data
public class QueryBigRegionRequest{
private String keyword;
private List<String> groupNameList;
}

View File

@@ -0,0 +1,94 @@
package com.cool.store.response;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.cool.store.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @Author: WangShuo
* @Date: 2025/05/13/15:30
* @Version 1.0
* @注释:
*/
@Data
public class FranchiseReportResponse {
@ApiModelProperty(value = "加盟集团")
@ExcelProperty(value = "加盟集团",order = 1)
@ColumnWidth(25)
private String joinGroupName;
@ApiModelProperty(value = "加盟分部/片区")
@ExcelProperty(value = "加盟分部/片区",order = 2)
@ColumnWidth(20)
private String regionName;
@ApiModelProperty(value = "门店数")
@ExcelProperty(value = "门店数",order = 3)
@ColumnWidth(15)
private Integer storeNum = 0;
@ApiModelProperty(value = "鸡排普通店")
@ExcelProperty(value = "鸡排普通店",order = 4)
@ColumnWidth(20)
private Integer normalStoreNum = 0;
@ApiModelProperty(value = "鸡排餐厅店")
@ExcelProperty(value = "鸡排餐厅店",order = 5)
@ColumnWidth(20)
private Integer restaurantStoreNum = 0;
@ApiModelProperty(value = "鸡排无展示门店")
@ExcelProperty(value = "鸡排无展示门店",order = 6)
@ColumnWidth(25)
private Integer noShowStoreNum = 0;
@ApiModelProperty(value = "加盟费")
@ExcelProperty(value = "加盟费",order = 7)
@ColumnWidth(20)
private BigDecimal franchiseFeeTotal = BigDecimal.ZERO;
@ApiModelProperty(value = "品牌费")
@ExcelProperty(value = "品牌费",order = 8)
@ColumnWidth(20)
private BigDecimal firstYearBrandingFeeTotal = BigDecimal.ZERO;
@ApiModelProperty(value = "管理费")
@ExcelProperty(value = "管理费",order = 9)
@ColumnWidth(20)
private BigDecimal firstYearManagementFeeTotal = BigDecimal.ZERO;
@ApiModelProperty(value = "设计费")
@ExcelProperty(value = "设计费",order = 10)
@ColumnWidth(20)
private BigDecimal performanceBondTotal = BigDecimal.ZERO;
@ApiModelProperty(value = "管理/品牌/设计费")
@ExcelProperty(value = "管理/品牌/设计费",order = 11)
@ColumnWidth(25)
private BigDecimal managementBrandingDesignFeeTotal = BigDecimal.ZERO;
@ApiModelProperty(value = "保证金")
@ExcelProperty(value = "保证金",order = 12)
@ColumnWidth(20)
private BigDecimal loanMarginTotal = BigDecimal.ZERO;
@ApiModelProperty(value = "昨日日期")
@ExcelProperty(value = "昨日日期",order = 13)
@ColumnWidth(15)
private String yesterdayDate;
@ApiModelProperty(value = "昨天门店数")
@ExcelProperty(value = "昨天门店数",order = 14)
@ColumnWidth(15)
private Integer yesterdayStoreNum = 0;
@ExcelIgnore
private Long regionId;
}

View File

@@ -0,0 +1,40 @@
package com.cool.store.handler;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.Head;
import com.alibaba.excel.write.handler.CellWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
import org.apache.poi.ss.usermodel.*;
import java.util.List;
public class CenterAlignHandler implements CellWriteHandler {
@Override
public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Head head, Integer integer, Integer integer1, Boolean aBoolean) {
}
@Override
public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell,
Head head, Integer relativeRowIndex, Boolean isHead) {
// 行号从0开始所以第3行及以后的行号>=2
if (cell.getRowIndex() >= 3) {
Workbook workbook = writeSheetHolder.getSheet().getWorkbook();
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setAlignment(HorizontalAlignment.CENTER);
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
cell.setCellStyle(cellStyle);
}
}
@Override
public void afterCellDataConverted(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, CellData cellData, Cell cell, Head head, Integer integer, Boolean aBoolean) {
}
@Override
public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List<CellData> list, Cell cell, Head head, Integer integer, Boolean aBoolean) {
}
}

View File

@@ -0,0 +1,54 @@
package com.cool.store.handler;
import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellRangeAddress;
import com.alibaba.excel.write.handler.SheetWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder;
/**
* 第一行 拦截器
*/
public class ImplProgressReportSheetWriteHandler implements SheetWriteHandler {
private final String title;
public ImplProgressReportSheetWriteHandler(String title) {
this.title = title;
}
@Override
public void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
}
@Override
public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
Workbook workbook = writeWorkbookHolder.getWorkbook();
Sheet sheet = workbook.getSheetAt(0);
// 设置第一行标题
Row row1 = sheet.createRow(0);
row1.setHeight((short) 300);
Cell row1Cell1 = row1.createCell(0);
row1Cell1.setCellValue(title);
CellStyle row1CellStyle = workbook.createCellStyle();
row1CellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
row1CellStyle.setAlignment(HorizontalAlignment.LEFT);
Font row1Font = workbook.createFont();
row1Font.setBold(true);
row1Font.setFontName("方正小标宋_GBK");
row1Font.setFontHeightInPoints((short) 10);
row1CellStyle.setFont(row1Font);
row1Cell1.setCellStyle(row1CellStyle);
//合并单元格,起始行,结束行,起始列,结束列
sheet.addMergedRegionUnsafe(new CellRangeAddress(0, 1, 0, 17));
}
}

View File

@@ -4,6 +4,7 @@ import com.cool.store.dto.region.BigRegionDTO;
import com.cool.store.entity.BigRegionDO; import com.cool.store.entity.BigRegionDO;
import com.cool.store.enums.ErrorCodeEnum; import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.exception.ServiceException; import com.cool.store.exception.ServiceException;
import com.cool.store.request.QueryBigRegionRequest;
import java.util.List; import java.util.List;
@@ -31,5 +32,7 @@ public interface BigRegionService {
*/ */
BigRegionDO queryOrgInfoByBigRegionAndJoinMode(Long regionId, Integer joinMode); BigRegionDO queryOrgInfoByBigRegionAndJoinMode(Long regionId, Integer joinMode);
List<BigRegionDTO> queryBigRegion(QueryBigRegionRequest queryBigRegionRequest);
} }

View File

@@ -22,4 +22,9 @@ public interface DataHandlerServer {
Boolean importOaOldShopData(List<Map<String, Object>> dataMapList, String originalFilename, LoginUserInfo user, Boolean importOaOldShopData(List<Map<String, Object>> dataMapList, String originalFilename, LoginUserInfo user,
ImportTaskDO task); ImportTaskDO task);
//数据处理阶段完成 某些阶段数据处理
Boolean dataStageHandler(List<Map<String, Object>> dataMapList, String originalFilename, LoginUserInfo user, ImportTaskDO task,Boolean flag);
//装修数据初始化
Boolean decorationDataInit();
} }

View File

@@ -4,7 +4,9 @@ import com.cool.store.dto.Preparation.PreparationDTO;
import com.cool.store.entity.ImportTaskDO; import com.cool.store.entity.ImportTaskDO;
import com.cool.store.entity.LineInfoDO; import com.cool.store.entity.LineInfoDO;
import com.cool.store.entity.PointInfoDO; import com.cool.store.entity.PointInfoDO;
import com.cool.store.request.FranchiseReportRequest;
import com.cool.store.response.BranchShopResponse; import com.cool.store.response.BranchShopResponse;
import com.cool.store.response.FranchiseReportResponse;
import java.util.List; import java.util.List;
@@ -24,4 +26,6 @@ public interface ExportRealizeService {
void exportJoinShop(List<BranchShopResponse> list,ImportTaskDO importTaskDO); void exportJoinShop(List<BranchShopResponse> list,ImportTaskDO importTaskDO);
void exportProgress(List<BranchShopResponse> list,ImportTaskDO importTaskDO); void exportProgress(List<BranchShopResponse> list,ImportTaskDO importTaskDO);
void exportZxjpOpenShopReport(List<FranchiseReportResponse> list, ImportTaskDO importTaskDO, FranchiseReportRequest request);
} }

View File

@@ -18,5 +18,8 @@ public interface ExportService {
//财务导出 //加盟开店申请 //进度确认 //财务导出 //加盟开店申请 //进度确认
Long exportProgressBase(BranchShopRequest request, LoginUserInfo user, FileTypeEnum fileTypeEnum); Long exportProgressBase(BranchShopRequest request, LoginUserInfo user, FileTypeEnum fileTypeEnum);
//正新加盟报表导出
Long exportZxjpOpenShopReport(FranchiseReportRequest request, LoginUserInfo user);
} }

View File

@@ -0,0 +1,18 @@
package com.cool.store.service;
import com.cool.store.request.FranchiseReportRequest;
import com.cool.store.response.FranchiseReportResponse;
import com.github.pagehelper.PageInfo;
import java.util.List;
/**
* @Author: WangShuo
* @Date: 2025/05/13/15:22
* @Version 1.0
* @注释:
*/
public interface FranchiseReportService {
List<FranchiseReportResponse> zxjpOpenShopReport(FranchiseReportRequest request);
}

View File

@@ -5,10 +5,12 @@ import com.cool.store.dto.region.BigRegionDTO;
import com.cool.store.entity.BigRegionDO; import com.cool.store.entity.BigRegionDO;
import com.cool.store.enums.ErrorCodeEnum; import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.exception.ServiceException; import com.cool.store.exception.ServiceException;
import com.cool.store.request.QueryBigRegionRequest;
import com.cool.store.service.BigRegionService; import com.cool.store.service.BigRegionService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Collections;
import java.util.List; import java.util.List;
/** /**
@@ -35,4 +37,9 @@ public class BigRegionServiceImpl implements BigRegionService {
return bigRegionDAO.queryOrgInfoByBigRegionAndJoinMode(regionId,joinMode); return bigRegionDAO.queryOrgInfoByBigRegionAndJoinMode(regionId,joinMode);
} }
@Override
public List<BigRegionDTO> queryBigRegion(QueryBigRegionRequest queryBigRegionRequest) {
return bigRegionDAO.queryBigRegion(queryBigRegionRequest);
}
} }

View File

@@ -5,11 +5,14 @@ import com.cool.store.context.LoginUserInfo;
import com.cool.store.dao.*; import com.cool.store.dao.*;
import com.cool.store.dto.*; import com.cool.store.dto.*;
import com.cool.store.entity.*; import com.cool.store.entity.*;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.enums.FileTypeEnum; import com.cool.store.enums.FileTypeEnum;
import com.cool.store.enums.ImportTaskStatusEnum; import com.cool.store.enums.ImportTaskStatusEnum;
import com.cool.store.enums.PosAndOrderEnum; import com.cool.store.enums.PosAndOrderEnum;
import com.cool.store.enums.point.ShopStageEnum;
import com.cool.store.enums.point.ShopSubStageEnum; import com.cool.store.enums.point.ShopSubStageEnum;
import com.cool.store.enums.point.ShopSubStageStatusEnum; import com.cool.store.enums.point.ShopSubStageStatusEnum;
import com.cool.store.exception.ServiceException;
import com.cool.store.mapper.*; import com.cool.store.mapper.*;
import com.cool.store.service.DataHandlerServer; import com.cool.store.service.DataHandlerServer;
import com.cool.store.service.FranchiseFeeService; import com.cool.store.service.FranchiseFeeService;
@@ -41,6 +44,8 @@ import static com.cool.store.utils.poi.DateUtils.YYYY_MM_DD;
@Service @Service
@Slf4j @Slf4j
public class DataHandlerServerImpl implements DataHandlerServer { public class DataHandlerServerImpl implements DataHandlerServer {
@Resource
private AcceptanceInfoDAO acceptanceInfoDAO;
@Resource @Resource
private ImportTaskMapper importTaskMapper; private ImportTaskMapper importTaskMapper;
@Resource @Resource
@@ -77,6 +82,7 @@ public class DataHandlerServerImpl implements DataHandlerServer {
private SignFranchiseDAO signFranchiseDAO; private SignFranchiseDAO signFranchiseDAO;
@Value("${mybatis.configuration.variables.enterpriseId}") @Value("${mybatis.configuration.variables.enterpriseId}")
private String eid; private String eid;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Boolean importOaOldShopData(List<Map<String, Object>> dataMapList, String originalFilename, LoginUserInfo user, ImportTaskDO task) { public Boolean importOaOldShopData(List<Map<String, Object>> dataMapList, String originalFilename, LoginUserInfo user, ImportTaskDO task) {
@@ -375,6 +381,187 @@ public class DataHandlerServerImpl implements DataHandlerServer {
return null; return null;
} }
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean dataStageHandler(List<Map<String, Object>> dataMapList, String originalFilename, LoginUserInfo user, ImportTaskDO task, Boolean flag) {
List<String> shopCodeList = new ArrayList<>();
ListUtils.emptyIfNull(dataMapList)
.forEach(data -> {
try {
shopCodeList.add(String.valueOf(data.get("门店编码")).trim());
} catch (Exception e) {
log.info("importOaOldShopData 转化dto error:{}", JSONObject.toJSONString(data));
}
});
if (CollectionUtils.isEmpty(shopCodeList)) {
log.info("数据处理 门店编码为空");
return null;
}
List<ShopInfoDO> shopInfoList = shopInfoDAO.selectByShopCodeList(shopCodeList);
if (CollectionUtils.isEmpty(shopInfoList)) {
log.info("数据处理 门店未找到对应数据");
return null;
}
List<ImportOaOldShopDataErrorDTO> errorList = new ArrayList<>();
List<Long> shopIds = shopInfoList.stream().map(ShopInfoDO::getId).collect(Collectors.toList());
Map<String, ShopInfoDO> shopInfoMap = shopInfoList.stream().collect(Collectors.toMap(ShopInfoDO::getShopCode, x -> x));
List<Long> lineIdList = shopInfoList.stream().map(ShopInfoDO::getLineId).collect(Collectors.toList());
//手机号
Map<Long, String> lineMobileMap = lineInfoDAO.getLineMobileMap(lineIdList);
List<ShopStageInfoDO> stageByShopStage = shopStageInfoDAO.getStageByShopStage(shopIds, ShopStageEnum.SHOP_STAGE_2.getShopStage());
Map<Long, List<ShopStageInfoDO>> shopStageInfoMap = stageByShopStage.stream().collect(Collectors.groupingBy(ShopStageInfoDO::getShopId));
//培训和开业完成
List<Long> trainShopIdList = new ArrayList<>();
//建店大阶段完成
List<Long> buildShopIdList = new ArrayList<>();
List<OpeningOperationPlanDO> addOpeningOperationPlanDO = new ArrayList<>();
List<PosAndOrderInfoDO> addPosAndOrderInfoList = new ArrayList<>();
for (String shopCode : shopCodeList) {
ShopInfoDO shop = shopInfoMap.get(shopCode);
if (shop == null) {
ImportOaOldShopDataErrorDTO errorDTO = new ImportOaOldShopDataErrorDTO();
errorDTO.setShopCode(shopCode);
errorDTO.setErrorReason("code未找到对应门店数据");
errorList.add(errorDTO);
continue;
}
Long shopId = shop.getId();
List<ShopStageInfoDO> shopStageInfoList = shopStageInfoMap.get(shopId);
if (CollectionUtils.isEmpty(shopStageInfoList)) {
ImportOaOldShopDataErrorDTO errorDTO = new ImportOaOldShopDataErrorDTO();
errorDTO.setShopCode(shop.getShopCode());
errorDTO.setErrorReason("门店未找到对应阶段数据");
errorList.add(errorDTO);
continue;
}
Map<Integer, ShopStageInfoDO> stageMap = shopStageInfoList.stream().collect(Collectors.toMap(ShopStageInfoDO::getShopSubStage, Function.identity()));
if (!ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_84.getShopSubStageStatus()
.equals(stageMap.get(ShopSubStageEnum.SHOP_STAGE_8.getShopSubStage()).getShopSubStageStatus())) {
ImportOaOldShopDataErrorDTO errorDTO = new ImportOaOldShopDataErrorDTO();
errorDTO.setShopCode(shop.getShopCode());
errorDTO.setErrorReason("合同未完成");
errorList.add(errorDTO);
continue;
}
trainShopIdList.add(shopId);
if (!ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_143.getShopSubStageStatus()
.equals(stageMap.get(ShopSubStageEnum.SHOP_STAGE_14.getShopSubStage()).getShopSubStageStatus())) {
OpeningOperationPlanDO openingOperationPlanDO = new OpeningOperationPlanDO();
openingOperationPlanDO.setShopId(shopId);
openingOperationPlanDO.setCreateTime(new Date());
addOpeningOperationPlanDO.add(openingOperationPlanDO);
}
if (!ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_156.getShopSubStageStatus()
.equals(stageMap.get(ShopSubStageEnum.SHOP_STAGE_15.getShopSubStage()).getShopSubStageStatus())) {
ImportOaOldShopDataErrorDTO errorDTO = new ImportOaOldShopDataErrorDTO();
errorDTO.setShopCode(shop.getShopCode());
errorDTO.setErrorReason("建店资料未完成");
errorList.add(errorDTO);
continue;
}
buildShopIdList.add(shopId);
if (!ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_173.getShopSubStageStatus()
.equals(stageMap.get(ShopSubStageEnum.SHOP_STAGE_17.getShopSubStage()).getShopSubStageStatus())) {
PosAndOrderInfoDO posDO = new PosAndOrderInfoDO();
posDO.setShopId(shopId);
posDO.setAccount("ZXA8_" + shop.getShopCode());
posDO.setPassword("888888");
posDO.setType(PosAndOrderEnum.ORDER.getCode());
posDO.setRemark("已为您开通订货系统账号和密码密码已加密初始密码为888888可通过加盟小程序修改密码");
posDO.setCreateTime(new Date());
addPosAndOrderInfoList.add(posDO);
}
if (!ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_163.getShopSubStageStatus()
.equals(stageMap.get(ShopSubStageEnum.SHOP_STAGE_16.getShopSubStage()).getShopSubStageStatus())) {
PosAndOrderInfoDO posDO = new PosAndOrderInfoDO();
posDO.setShopId(shopId);
posDO.setAccount(lineMobileMap.get(shop.getLineId()));
posDO.setType(PosAndOrderEnum.POS.getCode());
posDO.setRemark("已为您开通POS系统账号和密码");
posDO.setCreateTime(new Date());
addPosAndOrderInfoList.add(posDO);
}
if (!ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_235.getShopSubStageStatus()
.equals(stageMap.get(ShopSubStageEnum.SHOP_STAGE_23.getShopSubStage()).getShopSubStageStatus())) {
PosAndOrderInfoDO posDO = new PosAndOrderInfoDO();
posDO.setShopId(shopId);
posDO.setAccount(shop.getShopCode());
posDO.setType(PosAndOrderEnum.XIN_FA_SYS.getCode());
posDO.setCreateTime(new Date());
addPosAndOrderInfoList.add(posDO);
}
if (!ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_245.getShopSubStageStatus()
.equals(stageMap.get(ShopSubStageEnum.SHOP_STAGE_24.getShopSubStage()).getShopSubStageStatus())
&& !ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_244.getShopSubStageStatus()
.equals(stageMap.get(ShopSubStageEnum.SHOP_STAGE_24.getShopSubStage()).getShopSubStageStatus())) {
PosAndOrderInfoDO posDO = new PosAndOrderInfoDO();
posDO.setShopId(shopId);
posDO.setType(PosAndOrderEnum.TENT_PASS.getCode());
posDO.setCreateTime(new Date());
addPosAndOrderInfoList.add(posDO);
}
}
if (flag) {
//装修大阶段
shopStageInfoDAO.dataUpdateStatus(trainShopIdList, ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_863);
shopStageInfoDAO.dataUpdateStatus(trainShopIdList, ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_91);
shopStageInfoDAO.dataUpdateStatus(trainShopIdList, ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_112);
shopStageInfoDAO.dataUpdateStatus(trainShopIdList, ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_123);
}
//培训
shopStageInfoDAO.dataUpdateStatus(trainShopIdList, ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_51);
//开业方案
shopStageInfoDAO.dataUpdateStatus(trainShopIdList, ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_143);
//营帐通
shopStageInfoDAO.dataUpdateStatus(buildShopIdList, ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_245);
//新发
shopStageInfoDAO.dataUpdateStatus(buildShopIdList, ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_235);
//pos
shopStageInfoDAO.dataUpdateStatus(buildShopIdList, ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_163);
if (!errorList.isEmpty()) {
task.setStatus(ImportTaskStatusEnum.ERROR.getCode());
String url = null;
try {
url = easyExcelUtil.exportExcel(ImportOaOldShopDataErrorDTO.class, errorList, null,
FileTypeEnum.IMPORT_OA_OLD_SHOP_STAGE_DATA_ERROR.getDesc() + DateUtils.parseDateToStr(SPECIAL_DATE_START_1, new Date()),
FileTypeEnum.IMPORT_OA_OLD_SHOP_STAGE_DATA_ERROR.getDesc() + DateUtils.parseDateToStr(SPECIAL_DATE_START_1, new Date()));
} catch (Exception e) {
log.info("导出失败列表失败 errorList:{}", JSONObject.toJSONString(errorList));
}
task.setFileUrl(url);
} else {
task.setStatus(ImportTaskStatusEnum.SUCCESS.getCode());
}
task.setTotalNum(dataMapList.size());
task.setSuccessNum(dataMapList.size() - errorList.size());
importTaskMapper.update(eid, task);
return true;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean decorationDataInit() {
//施工阶段
List<ShopStageInfoDO> subStages = shopStageInfoDAO.getSubStages(ShopSubStageEnum.SHOP_STAGE_11.getShopSubStage());
List<Long> allShopIds = acceptanceInfoDAO.getAllShopIds();
//需要处理的门店
List<Long> addShopIds = new ArrayList<>();
for (ShopStageInfoDO subStage : subStages){
if (ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_112.getShopSubStageStatus().equals(subStage.getShopSubStageStatus())){
if (!allShopIds.contains(subStage.getShopId())){
addShopIds.add(subStage.getShopId());
}
}
}
if (CollectionUtils.isEmpty(addShopIds)){
throw new ServiceException(ErrorCodeEnum.PARAMS_VALIDATE_ERROR);
}
acceptanceInfoDAO.initAcceptanceInfo(addShopIds);
return true;
}
private static boolean check(ImportOaOldShopDataDTO dto, List<ImportOaOldShopDataErrorDTO> errorList) { private static boolean check(ImportOaOldShopDataDTO dto, List<ImportOaOldShopDataErrorDTO> errorList) {
if (StringUtil.isBlank(dto.getShopCode())) { if (StringUtil.isBlank(dto.getShopCode())) {
ImportOaOldShopDataErrorDTO errorDTO = new ImportOaOldShopDataErrorDTO(); ImportOaOldShopDataErrorDTO errorDTO = new ImportOaOldShopDataErrorDTO();
@@ -533,13 +720,17 @@ public class DataHandlerServerImpl implements DataHandlerServer {
importOaOldShopDataDTO.setShopAddress(String.valueOf(data.get("门店地址"))); importOaOldShopDataDTO.setShopAddress(String.valueOf(data.get("门店地址")));
importOaOldShopDataDTO.setBuildEndTime(String.valueOf(data.get("建店资料完成时间"))); importOaOldShopDataDTO.setBuildEndTime(String.valueOf(data.get("建店资料完成时间")));
if (Objects.nonNull(data.get("店面租金"))) { if (Objects.nonNull(data.get("店面租金"))) {
importOaOldShopDataDTO.setMonthRent(String.valueOf(data.get("店面租金")));} importOaOldShopDataDTO.setMonthRent(String.valueOf(data.get("店面租金")));
}
if (Objects.nonNull(data.get("场地实际面积"))) { if (Objects.nonNull(data.get("场地实际面积"))) {
importOaOldShopDataDTO.setPointArea(String.valueOf(data.get("场地实际面积")));} importOaOldShopDataDTO.setPointArea(String.valueOf(data.get("场地实际面积")));
}
if (Objects.nonNull(data.get("签约人2姓名"))) { if (Objects.nonNull(data.get("签约人2姓名"))) {
importOaOldShopDataDTO.setPartnershipSignatorySecond(String.valueOf(data.get("签约人2姓名")));} importOaOldShopDataDTO.setPartnershipSignatorySecond(String.valueOf(data.get("签约人2姓名")));
}
if (Objects.nonNull(data.get("签约人2电话"))) { if (Objects.nonNull(data.get("签约人2电话"))) {
importOaOldShopDataDTO.setPartnershipSignatorySecondMobile(String.valueOf(data.get("签约人2电话")));} importOaOldShopDataDTO.setPartnershipSignatorySecondMobile(String.valueOf(data.get("签约人2电话")));
}
if (Objects.nonNull(data.get("签约人2身份证号码"))) { if (Objects.nonNull(data.get("签约人2身份证号码"))) {
importOaOldShopDataDTO.setPartnershipSignatorySecondIdNumber(String.valueOf(data.get("签约人2身份证号码"))); importOaOldShopDataDTO.setPartnershipSignatorySecondIdNumber(String.valueOf(data.get("签约人2身份证号码")));
} }

View File

@@ -388,10 +388,11 @@ public class DecorationServiceImpl implements DecorationService {
return new PageInfo<>(); return new PageInfo<>();
} }
} }
// //判断是否是管理员
// Boolean isAdmin = sysRoleService.checkIsAdmin(user.getUserId());
PageHelper.startPage(request.getPageNum(), request.getPageSize()); PageHelper.startPage(request.getPageNum(), request.getPageSize());
List<fitmentCheckVO> fitmentCheckVOList = new ArrayList<>(); List<fitmentCheckVO> fitmentCheckVOList = new ArrayList<>();
//shopId,lineid,regionid,shopname,storenum, //shopId,lineid,regionid,shopname,storenum,
List<ShopInfoDO> shopInfoDOS = shopInfoMapper.selectShopListByRegionId(regions, ShopSubStageEnum.SHOP_STAGE_12.getShopSubStage(), request.getSubStageStatus(), null); List<ShopInfoDO> shopInfoDOS = shopInfoMapper.selectShopListByRegionId(regions, ShopSubStageEnum.SHOP_STAGE_12.getShopSubStage(), request.getSubStageStatus(), null);
PageInfo pageInfo = new PageInfo<>(shopInfoDOS); PageInfo pageInfo = new PageInfo<>(shopInfoDOS);
if (shopInfoDOS.isEmpty()) { if (shopInfoDOS.isEmpty()) {

View File

@@ -14,8 +14,10 @@ import com.cool.store.enums.*;
import com.cool.store.enums.point.*; import com.cool.store.enums.point.*;
import com.cool.store.exception.ServiceException; import com.cool.store.exception.ServiceException;
import com.cool.store.mapper.*; import com.cool.store.mapper.*;
import com.cool.store.request.FranchiseReportRequest;
import com.cool.store.request.InitiatingRequest; import com.cool.store.request.InitiatingRequest;
import com.cool.store.response.BranchShopResponse; import com.cool.store.response.BranchShopResponse;
import com.cool.store.response.FranchiseReportResponse;
import com.cool.store.service.*; import com.cool.store.service.*;
import com.cool.store.utils.JSONUtils; import com.cool.store.utils.JSONUtils;
import com.cool.store.utils.RedisUtilPool; import com.cool.store.utils.RedisUtilPool;
@@ -627,6 +629,24 @@ public class ExportRealizeServiceImpl implements ExportRealizeService {
} }
} }
@Override
public void exportZxjpOpenShopReport(List<FranchiseReportResponse> list, ImportTaskDO importTaskDO, FranchiseReportRequest request) {
String url = "";
try {
url = easyExcelUtil.exportExcelSpecial(FranchiseReportResponse.class, list, null,
FileTypeEnum.ZXJP_OPEN_SHOP_REPORT.getDesc() + DateUtils.parseDateToStr(SPECIAL_DATE_START_1, new Date()),
FileTypeEnum.ZXJP_OPEN_SHOP_REPORT.getDesc() + DateUtils.parseDateToStr(SPECIAL_DATE_START_1, new Date()),
"建店资料完成日期:",request.getBuildStartTime(),request.getBuildEndTime());
} catch (Throwable e) {
log.error("fileUpload upload err, originFileName={}", FileTypeEnum.ZXJP_OPEN_SHOP_REPORT.getDesc(), e);
throw new ServiceException(ErrorCodeEnum.INTERNAL_SERVER_ERROR);
} finally {
importTaskDO.setStatus(ImportStatusEnum.success.getCode());
importTaskDO.setFileUrl(url);
importTaskMapper.update(eid, importTaskDO);
}
}
private String toString(Object o) { private String toString(Object o) {
if (o == null) { if (o == null) {
return ""; return "";

View File

@@ -19,6 +19,7 @@ import com.cool.store.mapper.ImportTaskMapper;
import com.cool.store.mapper.PointInfoMapper; import com.cool.store.mapper.PointInfoMapper;
import com.cool.store.request.*; import com.cool.store.request.*;
import com.cool.store.response.BranchShopResponse; import com.cool.store.response.BranchShopResponse;
import com.cool.store.response.FranchiseReportResponse;
import com.cool.store.service.*; import com.cool.store.service.*;
import com.cool.store.utils.easyExcel.EasyExcelUtil; import com.cool.store.utils.easyExcel.EasyExcelUtil;
import com.cool.store.utils.poi.DateUtils; import com.cool.store.utils.poi.DateUtils;
@@ -71,6 +72,9 @@ public class ExportServiceImpl implements ExportService {
private ShopInfoDAO shopInfoDAO; private ShopInfoDAO shopInfoDAO;
@Autowired @Autowired
private ShopService shopService; private ShopService shopService;
@Resource
private FranchiseReportService franchiseReportService;
@Override @Override
@@ -137,5 +141,25 @@ public class ExportServiceImpl implements ExportService {
return total; return total;
} }
@Override
public Long exportZxjpOpenShopReport(FranchiseReportRequest request, LoginUserInfo user) {
List<FranchiseReportResponse> franchiseReport = franchiseReportService.zxjpOpenShopReport(request);
if (CollectionUtils.isEmpty(franchiseReport)){
log.error("导出数据为空");
return 0L;
}
ImportTaskDO importTaskDO = new ImportTaskDO();
importTaskDO.setStatus(ImportStatusEnum.Ongoing.getCode());
importTaskDO.setFileName(FileTypeEnum.ZXJP_OPEN_SHOP_REPORT.getDesc() + DateUtils.parseDateToStr(DateUtils.SPECIAL_DATE_START_1, new Date()));
importTaskDO.setIsImport(Boolean.FALSE);
importTaskDO.setFileType(FileTypeEnum.ZXJP_OPEN_SHOP_REPORT.getFileType());
importTaskDO.setCreateUserId(user.getUserId());
importTaskDO.setCreateTime(new Date().getTime());
importTaskDO.setCreateName(user.getName());
importTaskMapper.insert(eid, importTaskDO);
exportRealizeService.exportZxjpOpenShopReport(franchiseReport, importTaskDO,request);
return (long) franchiseReport.size();
}
} }

View File

@@ -0,0 +1,187 @@
package com.cool.store.service.impl;
import com.cool.store.dao.BigRegionDAO;
import com.cool.store.dao.FranchiseFeeDAO;
import com.cool.store.dao.ShopInfoDAO;
import com.cool.store.dto.FranchiseReportDTO;
import com.cool.store.entity.BigRegionDO;
import com.cool.store.entity.FranchiseFeeDO;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.enums.StoreTypeEnum;
import com.cool.store.exception.ServiceException;
import com.cool.store.mapper.FranchiseFeeMapper;
import com.cool.store.request.FranchiseReportRequest;
import com.cool.store.response.FranchiseReportResponse;
import com.cool.store.service.FranchiseReportService;
import com.cool.store.utils.poi.StringUtils;
import com.github.pagehelper.PageInfo;
import groovy.util.logging.Log4j;
import io.swagger.annotations.ApiModelProperty;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Author: WangShuo
* @Date: 2025/05/13/15:22
* @Version 1.0
* @注释:
*/
@Slf4j
@Service
public class FranchiseReportServiceImpl implements FranchiseReportService {
@Resource
private BigRegionDAO bigRegionDAO;
@Resource
private ShopInfoDAO shopInfoDAO;
@Resource
private FranchiseFeeMapper franchiseFeeMapper;
@Override
public List<FranchiseReportResponse> zxjpOpenShopReport(FranchiseReportRequest request) {
if (StringUtils.isBlank(request.getBuildStartTime()) || StringUtils.isBlank(request.getBuildEndTime())) {
throw new ServiceException(ErrorCodeEnum.TIME_NULL_FALSE);
}
//集团查大区
List<Long> regionIdByGroupName = bigRegionDAO.getRegionIdByGroupName(request.getJoinGroupName());
if (CollectionUtils.isNotEmpty(regionIdByGroupName)) {
if (CollectionUtils.isEmpty(request.getRegionIds())) {
request.setRegionIds(regionIdByGroupName);
} else {
request.getRegionIds().retainAll(regionIdByGroupName);
if (CollectionUtils.isEmpty(request.getRegionIds())){
throw new ServiceException(ErrorCodeEnum.REGION_INTERSECTION_IS_NULL);
}
}
}
List<FranchiseReportDTO> shopFranchiseReportList = shopInfoDAO.getShopFranchiseReportList(request);
if (CollectionUtils.isEmpty(shopFranchiseReportList)) {
log.info("查询门店数据为空");
return null;
}
List<Long> shopIds = shopFranchiseReportList.stream().map(FranchiseReportDTO::getShopId).collect(Collectors.toList());
Set<Long> regionSet = shopFranchiseReportList.stream().map(FranchiseReportDTO::getRegionId).collect(Collectors.toSet());
//加盟费账单
List<FranchiseFeeDO> franchiseFeeList = franchiseFeeMapper.getFranchiseFeeByShopIds(shopIds);
Map<Long, FranchiseFeeDO> franchiseFeeMap = franchiseFeeList.stream().collect(Collectors.toMap(FranchiseFeeDO::getShopId, franchiseFeeDO -> franchiseFeeDO));
List<BigRegionDO> bigRegionDOList = bigRegionDAO.getByRegionIdList(new ArrayList<>(regionSet));
Map<Long, BigRegionDO> bigRegionDOMap = bigRegionDOList.stream().collect(Collectors.toMap(BigRegionDO::getRegionId, bigRegionDO -> bigRegionDO));
Map<Long, FranchiseReportResponse> responseByRegionIdMap = new HashMap<>();
for (FranchiseReportDTO shopFranchiseReportDTO : shopFranchiseReportList) {
FranchiseReportResponse response = responseByRegionIdMap.get(shopFranchiseReportDTO.getRegionId());
if (response == null) {
response = new FranchiseReportResponse();
response.setRegionId(shopFranchiseReportDTO.getRegionId());
response.setRegionName(bigRegionDOMap.getOrDefault(shopFranchiseReportDTO.getRegionId(), new BigRegionDO()).getRegionName());
String groupName = bigRegionDOMap.getOrDefault(shopFranchiseReportDTO.getRegionId(), new BigRegionDO()).getGroupName();
if (StringUtils.isBlank(groupName)) {
continue;
}
response.setJoinGroupName(groupName);
}
if (StoreTypeEnum.NO_SHOW_STORE.getCode().equals(shopFranchiseReportDTO.getStoreType())) {
response.setNoShowStoreNum(response.getNoShowStoreNum() + 1);
} else if (StoreTypeEnum.ORDINARY_STORE.getCode().equals(shopFranchiseReportDTO.getStoreType())) {
response.setNormalStoreNum(response.getNormalStoreNum() + 1);
} else if (StoreTypeEnum.RESTAURANT_STORE.getCode().equals(shopFranchiseReportDTO.getStoreType())) {
response.setRestaurantStoreNum(response.getRestaurantStoreNum() + 1);
}
response.setStoreNum(response.getStoreNum() + 1);
FranchiseFeeDO franchiseFeeDO = franchiseFeeMap.get(shopFranchiseReportDTO.getShopId());
if (franchiseFeeDO != null) {
response.setFranchiseFeeTotal(response.getFranchiseFeeTotal().add(new BigDecimal(franchiseFeeDO.getYearFranchiseFee())));
response.setLoanMarginTotal(response.getLoanMarginTotal().add(new BigDecimal(franchiseFeeDO.getLoanMargin())));
response.setFirstYearManagementFeeTotal(response.getFirstYearManagementFeeTotal().add(new BigDecimal(franchiseFeeDO.getFirstYearManageFee())));
response.setFirstYearBrandingFeeTotal(response.getFirstYearBrandingFeeTotal().add(new BigDecimal(franchiseFeeDO.getFirstYearFee())));
response.setPerformanceBondTotal(response.getPerformanceBondTotal().add(new BigDecimal(franchiseFeeDO.getPerformanceBond())));
response.setManagementBrandingDesignFeeTotal(response.getManagementBrandingDesignFeeTotal()
.add(new BigDecimal(franchiseFeeDO.getFirstYearManageFee()))
.add(new BigDecimal(franchiseFeeDO.getFirstYearFee()))
.add(new BigDecimal(franchiseFeeDO.getPerformanceBond())));
}
responseByRegionIdMap.put(shopFranchiseReportDTO.getRegionId(), response);
}
FranchiseReportRequest yesterdayRequest = new FranchiseReportRequest();
yesterdayRequest.setRegionIds(request.getRegionIds());
yesterdayRequest.setStoreTypes(request.getStoreTypes());
LocalDate now = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
//昨日 00:00:00
LocalDateTime yesterdayStartDate = now.minusDays(1).atStartOfDay();
String yesterdayStartTime = yesterdayStartDate.format(formatter);
//昨日 23:59:59
LocalDateTime yesterdayEndDate = now.minusDays(1).atTime(23, 59, 59);
String yesterdayEndTime = yesterdayEndDate.format(formatter);
yesterdayRequest.setBuildStartTime(yesterdayStartTime);
yesterdayRequest.setBuildEndTime(yesterdayEndTime);
List<FranchiseReportDTO> yesterdayShopFranchiseReportList = shopInfoDAO.getShopFranchiseReportList(yesterdayRequest);
DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
if (CollectionUtils.isNotEmpty(yesterdayShopFranchiseReportList)) {
Map<Long, List<FranchiseReportDTO>> yesterdayMap = yesterdayShopFranchiseReportList.stream().collect(Collectors.groupingBy(FranchiseReportDTO::getRegionId));
for (Long regionId : responseByRegionIdMap.keySet()) {
FranchiseReportResponse response = responseByRegionIdMap.get(regionId);
if (Objects.isNull(response)) {
continue;
}
List<FranchiseReportDTO> yesterdayList = yesterdayMap.get(regionId);
response.setYesterdayDate(yesterdayStartDate.format(formatter1));
response.setYesterdayStoreNum(CollectionUtils.isEmpty(yesterdayList) ? 0 : yesterdayList.size());
responseByRegionIdMap.put(regionId, response);
}
}
List<FranchiseReportResponse> list = new ArrayList<>(responseByRegionIdMap.values());
if (CollectionUtils.isEmpty(list)) {
log.info("数据为空");
return Collections.emptyList();
}
sortByName(list);
return list;
}
public static void sortByName(List<FranchiseReportResponse> list) {
list.sort(Comparator.comparingInt(f -> extractNumberFromName(f.getJoinGroupName())));
}
private static int extractNumberFromName(String name) {
try {
if (name.contains("第一加盟集团")) {
return 1;
}
if (name.contains("第二加盟集团")) {
return 2;
}
if (name.contains("第三加盟集团")) {
return 3;
}
if (name.contains("第四加盟集团")) {
return 4;
}
if (name.contains("第五加盟集团")) {
return 5;
}
if (name.contains("第六加盟集团")) {
return 6;
}
if (name.contains("第七加盟集团")) {
return 7;
}
if (name.contains("第八加盟集团")) {
return 8;
}
return Integer.MAX_VALUE;
} catch (Exception e) {
return Integer.MAX_VALUE;
}
}
}

View File

@@ -3,8 +3,10 @@ package com.cool.store.service.impl;
import com.cool.store.dao.EnterpriseUserDAO; import com.cool.store.dao.EnterpriseUserDAO;
import com.cool.store.dao.PosAndOrderInfoDAO; import com.cool.store.dao.PosAndOrderInfoDAO;
import com.cool.store.dao.ShopInfoDAO;
import com.cool.store.dao.ShopStageInfoDAO; import com.cool.store.dao.ShopStageInfoDAO;
import com.cool.store.entity.PosAndOrderInfoDO; import com.cool.store.entity.PosAndOrderInfoDO;
import com.cool.store.entity.ShopInfoDO;
import com.cool.store.entity.ShopStageInfoDO; import com.cool.store.entity.ShopStageInfoDO;
import com.cool.store.enums.ErrorCodeEnum; import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.enums.PosAndOrderEnum; import com.cool.store.enums.PosAndOrderEnum;
@@ -32,6 +34,8 @@ import java.util.Objects;
@Service @Service
public class PosAndOrderInfoServiceImpl implements PosAndOrderInfoService { public class PosAndOrderInfoServiceImpl implements PosAndOrderInfoService {
@Resource
private ShopInfoDAO shopInfoDAO;
@Resource @Resource
private PosAndOrderInfoDAO posAndOrderInfoDAO; private PosAndOrderInfoDAO posAndOrderInfoDAO;
@Autowired @Autowired
@@ -68,6 +72,7 @@ public class PosAndOrderInfoServiceImpl implements PosAndOrderInfoService {
public PosAndOrderResponse get(Long shopId, Integer type) { public PosAndOrderResponse get(Long shopId, Integer type) {
PosAndOrderResponse response = new PosAndOrderResponse(); PosAndOrderResponse response = new PosAndOrderResponse();
PosAndOrderInfoDO posAndOrderInfoDO = posAndOrderInfoDAO.selectOneByShopId(shopId, type); PosAndOrderInfoDO posAndOrderInfoDO = posAndOrderInfoDAO.selectOneByShopId(shopId, type);
ShopInfoDO shopInfo = shopInfoDAO.getShopInfo(shopId);
if (Objects.nonNull(posAndOrderInfoDO)) { if (Objects.nonNull(posAndOrderInfoDO)) {
response.setShopId(posAndOrderInfoDO.getShopId()); response.setShopId(posAndOrderInfoDO.getShopId());
response.setAccount(posAndOrderInfoDO.getAccount()); response.setAccount(posAndOrderInfoDO.getAccount());
@@ -77,6 +82,9 @@ public class PosAndOrderInfoServiceImpl implements PosAndOrderInfoService {
response.setCreateTime(posAndOrderInfoDO.getCreateTime()); response.setCreateTime(posAndOrderInfoDO.getCreateTime());
response.setCreateUser(enterpriseUserDAO.getUserName(posAndOrderInfoDO.getCreateUser())); response.setCreateUser(enterpriseUserDAO.getUserName(posAndOrderInfoDO.getCreateUser()));
} }
else{
response.setAccount(shopInfo.getShopCode());
}
return response; return response;
} }

View File

@@ -218,7 +218,7 @@ public class SyncDataServiceImpl implements SyncDataService {
request.setShopProvince(pointInfo.getProvince()); request.setShopProvince(pointInfo.getProvince());
request.setShopCity(pointInfo.getCity()); request.setShopCity(pointInfo.getCity());
} }
log.info("/pushData 数据 {}",JSONObject.toJSONString(request));
return request; return request;
} }

View File

@@ -3,6 +3,9 @@ package com.cool.store.utils.easyExcel;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy;
import com.cool.store.handler.CenterAlignHandler;
import com.cool.store.handler.ImplProgressReportSheetWriteHandler;
import com.cool.store.mapper.ImportTaskMapper; import com.cool.store.mapper.ImportTaskMapper;
import com.cool.store.oss.OssClientService; import com.cool.store.oss.OssClientService;
import com.cool.store.utils.UUIDUtils; import com.cool.store.utils.UUIDUtils;
@@ -64,6 +67,33 @@ public class EasyExcelUtil {
} }
//表头从第二行开始,第一行显示日期
public String exportExcelSpecial( Class head, List list, Set<String> set, String sheetName, String fileName,String firstTitle,String startTime,String endTime) throws Exception {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
if (set == null) {
EasyExcel.write(outputStream)
.head(head)
.autoCloseStream(true)
.registerWriteHandler( new ImplProgressReportSheetWriteHandler(firstTitle+" "+startTime+""+endTime))
.registerWriteHandler(new CenterAlignHandler())
.sheet(sheetName)
.useDefaultStyle(false).relativeHeadRowIndex(2)
.doWrite(list);
} else {
EasyExcel.write(outputStream, head).autoCloseStream(true).includeColumnFiledNames(set).sheet(sheetName)
.doWrite(list);
}
byte[] bytes = outputStream.toByteArray();
long size = bytes.length;
InputStream is = new ByteArrayInputStream(bytes);
if (StringUtils.isNotBlank(fileName) && fileName.contains(".")) {
fileName = fileName.substring(0, fileName.lastIndexOf("."));
}
String file = getUploadPath(eid) + fileName + "_" + UUIDUtils.get32UUID() + EXCEL_SUFFIX;
return ossClientService.putObject(file, is, size, CONTENT_TYPE);
}
private String getUploadPath(String eid) { private String getUploadPath(String eid) {
String time = DateUtil.format(new Date(), "yyMM"); String time = DateUtil.format(new Date(), "yyMM");
return "eid" + "/" + eid + "/" + time + "/"; return "eid" + "/" + eid + "/" + time + "/";

View File

@@ -3,6 +3,7 @@ package com.cool.store.controller.webb;
import com.cool.store.dto.content.ContentQueryDetailDto; import com.cool.store.dto.content.ContentQueryDetailDto;
import com.cool.store.dto.region.BigRegionDTO; import com.cool.store.dto.region.BigRegionDTO;
import com.cool.store.entity.HyContentInfoDO; import com.cool.store.entity.HyContentInfoDO;
import com.cool.store.request.QueryBigRegionRequest;
import com.cool.store.response.ResponseResult; import com.cool.store.response.ResponseResult;
import com.cool.store.service.BigRegionService; import com.cool.store.service.BigRegionService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -31,5 +32,10 @@ public class BigRegionController {
return ResponseResult.success(bigRegionService.queryAllBigRegion(keyword)); return ResponseResult.success(bigRegionService.queryAllBigRegion(keyword));
} }
@PostMapping("/queryBigRegion")
@ApiOperation("获取可选择的大区joinMode = 0")
public ResponseResult<List<BigRegionDTO>> queryBigRegion(@RequestBody QueryBigRegionRequest queryBigRegionRequest) {
return ResponseResult.success(bigRegionService.queryBigRegion(queryBigRegionRequest));
}
} }

View File

@@ -13,9 +13,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource; import javax.annotation.Resource;
@@ -43,6 +41,7 @@ public class DataHandlerController {
@Value("${mybatis.configuration.variables.enterpriseId}") @Value("${mybatis.configuration.variables.enterpriseId}")
private String eid; private String eid;
@PostMapping("/importOaOldShopData") @PostMapping("/importOaOldShopData")
@ApiOperation("导入OA旧数据") @ApiOperation("导入OA旧数据")
public ResponseResult<Boolean> importOaOldShopData(MultipartFile file) { public ResponseResult<Boolean> importOaOldShopData(MultipartFile file) {
@@ -68,5 +67,36 @@ public class DataHandlerController {
return ResponseResult.success(true); return ResponseResult.success(true);
} }
@PostMapping("/dataStageHandler")
@ApiOperation("阶段处理")
public ResponseResult<Boolean> importOaOldShopData(MultipartFile file, @RequestParam("flag") Boolean flag) {
ExcelReader reader = null;
try {
reader = ExcelUtil.getReader(file.getInputStream());
} catch (IOException e) {
log.error("read file error:", e);
}
assert reader != null;
log.info("----------------------:{}", file.getOriginalFilename());
List<Map<String, Object>> dataMapList = reader.read(0, 1, Integer.MAX_VALUE);
ImportTaskDO importTaskDO = new ImportTaskDO();
importTaskDO.setFileName(file.getOriginalFilename());
importTaskDO.setFileType(FileTypeEnum.IMPORT_OA_OLD_SHOP_STAGE_DATA.getFileType());
importTaskDO.setIsImport(true);
importTaskDO.setStatus(ImportTaskStatusEnum.PROGRESS.getCode());
importTaskDO.setCreateUserId(CurrentUserHolder.getUserId());
importTaskDO.setCreateName(CurrentUserHolder.getUser().getName());
importTaskDO.setCreateTime(System.currentTimeMillis());
importTaskMapper.insert(eid, importTaskDO);
dataHandlerServer.dataStageHandler(dataMapList, file.getOriginalFilename(), CurrentUserHolder.getUser(), importTaskDO, flag);
return ResponseResult.success(true);
}
@GetMapping("/decorationDataInit")
@ApiOperation("装修数据初始化")
public ResponseResult decorationDataInit() {
dataHandlerServer.decorationDataInit();
return ResponseResult.success(true);
}
} }

View File

@@ -56,4 +56,10 @@ public class ExportController {
public ResponseResult exportProgress(@RequestBody BranchShopRequest request) { public ResponseResult exportProgress(@RequestBody BranchShopRequest request) {
return ResponseResult.success(exportService.exportProgressBase(request, CurrentUserHolder.getUser(), FileTypeEnum.EXPORT_PROGRESS)); return ResponseResult.success(exportService.exportProgressBase(request, CurrentUserHolder.getUser(), FileTypeEnum.EXPORT_PROGRESS));
} }
@PostMapping("/zxjpOpenShopReport")
@ApiOperation("正新鸡排开店")
public ResponseResult zxjpOpenShopReport(@RequestBody FranchiseReportRequest request) {
return ResponseResult.success(exportService.exportZxjpOpenShopReport(request, CurrentUserHolder.getUser()));
}
} }

View File

@@ -0,0 +1,34 @@
package com.cool.store.controller.webb;
import com.cool.store.request.FranchiseReportRequest;
import com.cool.store.response.FranchiseReportResponse;
import com.cool.store.response.ResponseResult;
import com.cool.store.service.FranchiseReportService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* @Author: WangShuo
* @Date: 2025/05/13/15:46
* @Version 1.0
* @注释:
*/
@RestController
@RequestMapping("/pc/franchiseReport")
@Api(tags = "PC端加盟报表")
public class PCFranchiseReportController {
@Resource
private FranchiseReportService franchiseReportService;
@RequestMapping("/getZxjpOpenShopReport")
@ApiOperation("正新鸡排开店")
public ResponseResult<List<FranchiseReportResponse>> getList(@RequestBody FranchiseReportRequest request) {
return ResponseResult.success( franchiseReportService.zxjpOpenShopReport(request));
}
}