导粉记录,订单条件筛选,食谱计划生成优化
This commit is contained in:
parent
06d62ea4a0
commit
669bbfbf23
@ -4,6 +4,7 @@ import java.util.HashMap;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import com.stdiet.common.utils.DateUtils;
|
||||||
import com.stdiet.common.utils.StringUtils;
|
import com.stdiet.common.utils.StringUtils;
|
||||||
import com.stdiet.custom.domain.SysImportFanWxAccount;
|
import com.stdiet.custom.domain.SysImportFanWxAccount;
|
||||||
import com.stdiet.custom.domain.SysWxSaleAccount;
|
import com.stdiet.custom.domain.SysWxSaleAccount;
|
||||||
@ -106,6 +107,7 @@ public class SysImportFanRecordController extends BaseController
|
|||||||
String[] importFanLiveArray = sysImportFanRecord.getImportFanLives().split(",");
|
String[] importFanLiveArray = sysImportFanRecord.getImportFanLives().split(",");
|
||||||
String[] wxAccountIdArray = sysImportFanRecord.getWxAccountIds().split(",");
|
String[] wxAccountIdArray = sysImportFanRecord.getWxAccountIds().split(",");
|
||||||
String[] fanNumArray = sysImportFanRecord.getFanNums().split(",");
|
String[] fanNumArray = sysImportFanRecord.getFanNums().split(",");
|
||||||
|
String[] importTimeArray = sysImportFanRecord.getImportTimes().split(",");
|
||||||
int index = -1;
|
int index = -1;
|
||||||
for (String importFanChannel : importFanChannelArray) {
|
for (String importFanChannel : importFanChannelArray) {
|
||||||
index++;
|
index++;
|
||||||
@ -116,6 +118,7 @@ public class SysImportFanRecordController extends BaseController
|
|||||||
sysImportFanRecord.setImportFanLive(StringUtils.isEmpty(importFanLiveArray[index]) ? 0L : Long.parseLong(importFanLiveArray[index]));
|
sysImportFanRecord.setImportFanLive(StringUtils.isEmpty(importFanLiveArray[index]) ? 0L : Long.parseLong(importFanLiveArray[index]));
|
||||||
sysImportFanRecord.setWxAccountId(Long.parseLong(wxAccountIdArray[index]));
|
sysImportFanRecord.setWxAccountId(Long.parseLong(wxAccountIdArray[index]));
|
||||||
sysImportFanRecord.setFanNum(Long.parseLong(fanNumArray[index]));
|
sysImportFanRecord.setFanNum(Long.parseLong(fanNumArray[index]));
|
||||||
|
sysImportFanRecord.setImportTime(DateUtils.parseDate(importTimeArray[index]));
|
||||||
row = sysImportFanRecordService.insertSysImportFanRecord(sysImportFanRecord);
|
row = sysImportFanRecordService.insertSysImportFanRecord(sysImportFanRecord);
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
|
@ -39,6 +39,10 @@ public class SysImportFanRecord extends BaseEntity
|
|||||||
/** 删除标识,0未删除 1已删除 */
|
/** 删除标识,0未删除 1已删除 */
|
||||||
private Long delFlag;
|
private Long delFlag;
|
||||||
|
|
||||||
|
//导粉时间
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
|
||||||
|
private Date importTime;
|
||||||
|
|
||||||
//微信ID
|
//微信ID
|
||||||
private Long wxAccountId;
|
private Long wxAccountId;
|
||||||
|
|
||||||
@ -62,6 +66,8 @@ public class SysImportFanRecord extends BaseEntity
|
|||||||
|
|
||||||
private String fanNums;
|
private String fanNums;
|
||||||
|
|
||||||
|
private String importTimes;
|
||||||
|
|
||||||
|
|
||||||
//总进粉数量
|
//总进粉数量
|
||||||
private Integer totalFanNum;
|
private Integer totalFanNum;
|
||||||
|
@ -33,6 +33,11 @@ public class SysImportFanWxAccount extends BaseEntity
|
|||||||
@Excel(name = "导粉数量")
|
@Excel(name = "导粉数量")
|
||||||
private Long importFanNum;
|
private Long importFanNum;
|
||||||
|
|
||||||
|
/** 导粉时间 */
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
|
||||||
|
@Excel(name = "导粉时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm")
|
||||||
|
private Date importTime;
|
||||||
|
|
||||||
/** 删除标识 0未删除 1已删除 */
|
/** 删除标识 0未删除 1已删除 */
|
||||||
private Long delFlag;
|
private Long delFlag;
|
||||||
|
|
||||||
|
@ -2,6 +2,8 @@ package com.stdiet.custom.mapper;
|
|||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import com.stdiet.custom.domain.SysRecipesPlan;
|
import com.stdiet.custom.domain.SysRecipesPlan;
|
||||||
import com.stdiet.custom.domain.SysRecipesPlanListInfo;
|
import com.stdiet.custom.domain.SysRecipesPlanListInfo;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
@ -117,4 +119,11 @@ public interface SysRecipesPlanMapper
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
int updateMuchRecipesPlanDate(SysRecipesPlan sysRecipesPlan);
|
int updateMuchRecipesPlanDate(SysRecipesPlan sysRecipesPlan);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询食谱计划中对应食谱存在天数缺失的食谱计划
|
||||||
|
* @param cusId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<Map<String,Object>> getNeedSupplyRecipesByCusId(@Param("cusId")Long cusId);
|
||||||
}
|
}
|
@ -2,6 +2,7 @@ package com.stdiet.custom.service;
|
|||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import com.stdiet.custom.domain.SysRecipesPlan;
|
import com.stdiet.custom.domain.SysRecipesPlan;
|
||||||
import com.stdiet.custom.domain.SysRecipesPlanListInfo;
|
import com.stdiet.custom.domain.SysRecipesPlanListInfo;
|
||||||
@ -122,4 +123,11 @@ public interface ISysRecipesPlanService
|
|||||||
*/
|
*/
|
||||||
List<SysRecipesPlan> selectPlanListByCusId(Long cusId);
|
List<SysRecipesPlan> selectPlanListByCusId(Long cusId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询食谱计划中对应食谱存在天数缺失的食谱计划
|
||||||
|
* @param cusId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<Map<String,Object>> getNeedSupplyRecipesByCusId(Long cusId);
|
||||||
|
|
||||||
}
|
}
|
@ -72,15 +72,18 @@ public class SysImportFanRecordServiceImpl implements ISysImportFanRecordService
|
|||||||
sysImportFanWxAccount.setImportFanRecordId(record != null ? record.getId() : sysImportFanRecord.getId());
|
sysImportFanWxAccount.setImportFanRecordId(record != null ? record.getId() : sysImportFanRecord.getId());
|
||||||
sysImportFanWxAccount.setImportWxAccountId(sysImportFanRecord.getWxAccountId());
|
sysImportFanWxAccount.setImportWxAccountId(sysImportFanRecord.getWxAccountId());
|
||||||
sysImportFanWxAccount.setImportFanNum(sysImportFanRecord.getFanNum());
|
sysImportFanWxAccount.setImportFanNum(sysImportFanRecord.getFanNum());
|
||||||
|
sysImportFanWxAccount.setImportTime(sysImportFanRecord.getImportTime());
|
||||||
sysImportFanWxAccount.setCreateTime(new Date());
|
sysImportFanWxAccount.setCreateTime(new Date());
|
||||||
|
row = sysImportFanWxAccountService.insertSysImportFanWxAccount(sysImportFanWxAccount);
|
||||||
|
|
||||||
//根据微信号、导粉记录查询是否存在
|
//根据微信号、导粉记录查询是否存在
|
||||||
SysImportFanWxAccount oldFanWxAccount = sysImportFanWxAccountService.getWxAccountByFanRecordId(sysImportFanWxAccount);
|
/*SysImportFanWxAccount oldFanWxAccount = sysImportFanWxAccountService.getWxAccountByFanRecordId(sysImportFanWxAccount);
|
||||||
if(oldFanWxAccount == null){
|
if(oldFanWxAccount == null){
|
||||||
row = sysImportFanWxAccountService.insertSysImportFanWxAccount(sysImportFanWxAccount);
|
row = sysImportFanWxAccountService.insertSysImportFanWxAccount(sysImportFanWxAccount);
|
||||||
}else{
|
}else{
|
||||||
oldFanWxAccount.setImportFanNum((oldFanWxAccount.getImportFanNum() == null ? 0 : oldFanWxAccount.getImportFanNum()) + sysImportFanWxAccount.getImportFanNum());
|
oldFanWxAccount.setImportFanNum((oldFanWxAccount.getImportFanNum() == null ? 0 : oldFanWxAccount.getImportFanNum()) + sysImportFanWxAccount.getImportFanNum());
|
||||||
row = sysImportFanWxAccountService.updateSysImportFanWxAccount(oldFanWxAccount);
|
row = sysImportFanWxAccountService.updateSysImportFanWxAccount(oldFanWxAccount);
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
return row;
|
return row;
|
||||||
}
|
}
|
||||||
|
@ -4,10 +4,8 @@ import com.stdiet.common.utils.DateUtils;
|
|||||||
import com.stdiet.common.utils.StringUtils;
|
import com.stdiet.common.utils.StringUtils;
|
||||||
import com.stdiet.common.utils.SynchrolockUtil;
|
import com.stdiet.common.utils.SynchrolockUtil;
|
||||||
import com.stdiet.common.utils.sign.Md5Utils;
|
import com.stdiet.common.utils.sign.Md5Utils;
|
||||||
import com.stdiet.custom.domain.SysOrder;
|
import com.stdiet.custom.domain.*;
|
||||||
import com.stdiet.custom.domain.SysOrderPause;
|
import com.stdiet.custom.mapper.SysRecipesMapper;
|
||||||
import com.stdiet.custom.domain.SysRecipesPlan;
|
|
||||||
import com.stdiet.custom.domain.SysRecipesPlanListInfo;
|
|
||||||
import com.stdiet.custom.mapper.SysRecipesPlanMapper;
|
import com.stdiet.custom.mapper.SysRecipesPlanMapper;
|
||||||
import com.stdiet.custom.service.*;
|
import com.stdiet.custom.service.*;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@ -43,6 +41,8 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService {
|
|||||||
private IWechatAppletService wechatAppletService;
|
private IWechatAppletService wechatAppletService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private ISysCustomerService sysCustomerService;
|
private ISysCustomerService sysCustomerService;
|
||||||
|
@Autowired
|
||||||
|
private SysRecipesMapper sysRecipesMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询食谱计划
|
* 查询食谱计划
|
||||||
@ -151,7 +151,7 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService {
|
|||||||
@Async
|
@Async
|
||||||
public void regenerateRecipesPlan(Long cusId) {
|
public void regenerateRecipesPlan(Long cusId) {
|
||||||
try {
|
try {
|
||||||
Thread.sleep(5000);
|
Thread.sleep(3000);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
@ -196,6 +196,8 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//食谱计划更新完成之后需要查询是否存在天数缺失情况,进行补充
|
||||||
|
supplyRecipesBmenu(cusId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@ -206,6 +208,34 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询食谱计划中对应食谱存在天数缺失的食谱计划,食谱计划发生变化时,可能会导致sys_customer_daily_menu表中天数缺失,需要查询出来进行补充
|
||||||
|
* @param cusId 客户ID
|
||||||
|
*/
|
||||||
|
private void supplyRecipesBmenu(Long cusId){
|
||||||
|
List<Map<String,Object>> list = getNeedSupplyRecipesByCusId(cusId);
|
||||||
|
if(list != null && list.size() > 0){
|
||||||
|
for (Map<String,Object> map : list) {
|
||||||
|
Long recipesId = (Long)map.get("recipesId");
|
||||||
|
Integer enNumDay = (Integer)map.get("enNumDay");
|
||||||
|
Integer maxNumDay = (Integer)map.get("maxNumDay");
|
||||||
|
if(recipesId != null && enNumDay != null && maxNumDay != null){
|
||||||
|
List<SysRecipesDaily> menus = new ArrayList<>();
|
||||||
|
for (int i = maxNumDay+1; i <= enNumDay; i++) {
|
||||||
|
SysRecipesDaily daily = new SysRecipesDaily();
|
||||||
|
daily.setCusId(cusId);
|
||||||
|
daily.setNumDay(i);
|
||||||
|
daily.setRecipesId(recipesId);
|
||||||
|
menus.add(daily);
|
||||||
|
}
|
||||||
|
sysRecipesMapper.bashAddMenus(menus);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新食谱计划,删除旧食谱中多余的,添加新食谱中多的
|
* 更新食谱计划,删除旧食谱中多余的,添加新食谱中多的
|
||||||
*
|
*
|
||||||
@ -474,4 +504,13 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询食谱计划中对应食谱存在天数缺失的食谱计划
|
||||||
|
* @param cusId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public List<Map<String,Object>> getNeedSupplyRecipesByCusId(Long cusId){
|
||||||
|
return sysRecipesPlanMapper.getNeedSupplyRecipesByCusId(cusId);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -58,12 +58,13 @@
|
|||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectTotalSysImportFanNum" parameterType="SysImportFanRecord" resultType="int">
|
<select id="selectTotalSysImportFanNum" parameterType="SysImportFanRecord" resultType="int">
|
||||||
select sum(fwa.import_fan_num)
|
select ifnull(sum(fwa.import_fan_num),0) from sys_import_fan_wx_account fwa
|
||||||
from sys_import_fan_record as fc
|
where fwa.del_flag = 0 and fwa.import_fan_record_id in
|
||||||
left join sys_import_fan_wx_account fwa on fwa.import_fan_record_id = fc.id and fwa.del_flag = 0
|
(
|
||||||
where fc.del_flag = 0
|
select fc.id from sys_import_fan_record as fc where fc.del_flag = 0
|
||||||
<if test="importFanDate != null "> and fc.import_fan_date = #{importFanDate}</if>
|
<if test="importFanDate != null "> and fc.import_fan_date = #{importFanDate}</if>
|
||||||
<if test="importFanChannel != null "> and fc.import_fan_channel = #{importFanChannel}</if>
|
<if test="importFanChannel != null "> and fc.import_fan_channel = #{importFanChannel}</if>
|
||||||
|
)
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectSysImportFanRecordById" parameterType="Long" resultMap="SysImportFanRecordResult">
|
<select id="selectSysImportFanRecordById" parameterType="Long" resultMap="SysImportFanRecordResult">
|
||||||
@ -129,7 +130,7 @@
|
|||||||
|
|
||||||
<select id="getWxAccountListByFanRecordId" parameterType="Long" resultType="Map">
|
<select id="getWxAccountListByFanRecordId" parameterType="Long" resultType="Map">
|
||||||
select fwc.id, fwc.import_fan_record_id as importFanRecordId, fwc.import_wx_account_id as importWxAccountId, fwc.import_fan_num as importFanNum,
|
select fwc.id, fwc.import_fan_record_id as importFanRecordId, fwc.import_wx_account_id as importWxAccountId, fwc.import_fan_num as importFanNum,
|
||||||
su.nick_name as saleName,wa.wx_account as wxAccount
|
DATE_FORMAT(fwc.import_time,'%Y-%m-%d %H:%i') as importTime,su.nick_name as saleName,wa.wx_account as wxAccount
|
||||||
from sys_import_fan_wx_account fwc
|
from sys_import_fan_wx_account fwc
|
||||||
left join sys_wx_sale_account wa on wa.id = fwc.import_wx_account_id and wa.del_flag = 0
|
left join sys_wx_sale_account wa on wa.id = fwc.import_wx_account_id and wa.del_flag = 0
|
||||||
left join sys_wx_distribution swd on swd.wechat_account = wa.id and swd.del_flag = 0
|
left join sys_wx_distribution swd on swd.wechat_account = wa.id and swd.del_flag = 0
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
<result property="importFanRecordId" column="import_fan_record_id" />
|
<result property="importFanRecordId" column="import_fan_record_id" />
|
||||||
<result property="importWxAccountId" column="import_wx_account_id" />
|
<result property="importWxAccountId" column="import_wx_account_id" />
|
||||||
<result property="importFanNum" column="import_fan_num" />
|
<result property="importFanNum" column="import_fan_num" />
|
||||||
|
<result property="importTime" column="import_time" />
|
||||||
<result property="createTime" column="create_time" />
|
<result property="createTime" column="create_time" />
|
||||||
<result property="createBy" column="create_by" />
|
<result property="createBy" column="create_by" />
|
||||||
<result property="updateTime" column="update_time" />
|
<result property="updateTime" column="update_time" />
|
||||||
@ -17,7 +18,7 @@
|
|||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<sql id="selectSysImportFanWxAccountVo">
|
<sql id="selectSysImportFanWxAccountVo">
|
||||||
select id, import_fan_record_id, import_wx_account_id, import_fan_num, create_time, create_by, update_time, update_by, del_flag from sys_import_fan_wx_account
|
select id, import_fan_record_id, import_wx_account_id, import_fan_num,import_time, create_time, create_by, update_time, update_by, del_flag from sys_import_fan_wx_account
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
<select id="selectSysImportFanWxAccountList" parameterType="SysImportFanWxAccount" resultMap="SysImportFanWxAccountResult">
|
<select id="selectSysImportFanWxAccountList" parameterType="SysImportFanWxAccount" resultMap="SysImportFanWxAccountResult">
|
||||||
@ -38,6 +39,7 @@
|
|||||||
<if test="importFanRecordId != null">import_fan_record_id,</if>
|
<if test="importFanRecordId != null">import_fan_record_id,</if>
|
||||||
<if test="importWxAccountId != null">import_wx_account_id,</if>
|
<if test="importWxAccountId != null">import_wx_account_id,</if>
|
||||||
<if test="importFanNum != null">import_fan_num,</if>
|
<if test="importFanNum != null">import_fan_num,</if>
|
||||||
|
<if test="importTime != null">import_time,</if>
|
||||||
<if test="createTime != null">create_time,</if>
|
<if test="createTime != null">create_time,</if>
|
||||||
<if test="createBy != null">create_by,</if>
|
<if test="createBy != null">create_by,</if>
|
||||||
<if test="updateTime != null">update_time,</if>
|
<if test="updateTime != null">update_time,</if>
|
||||||
@ -48,6 +50,7 @@
|
|||||||
<if test="importFanRecordId != null">#{importFanRecordId},</if>
|
<if test="importFanRecordId != null">#{importFanRecordId},</if>
|
||||||
<if test="importWxAccountId != null">#{importWxAccountId},</if>
|
<if test="importWxAccountId != null">#{importWxAccountId},</if>
|
||||||
<if test="importFanNum != null">#{importFanNum},</if>
|
<if test="importFanNum != null">#{importFanNum},</if>
|
||||||
|
<if test="importTime != null">#{importTime},</if>
|
||||||
<if test="createTime != null">#{createTime},</if>
|
<if test="createTime != null">#{createTime},</if>
|
||||||
<if test="createBy != null">#{createBy},</if>
|
<if test="createBy != null">#{createBy},</if>
|
||||||
<if test="updateTime != null">#{updateTime},</if>
|
<if test="updateTime != null">#{updateTime},</if>
|
||||||
@ -62,6 +65,7 @@
|
|||||||
<if test="importFanRecordId != null">import_fan_record_id = #{importFanRecordId},</if>
|
<if test="importFanRecordId != null">import_fan_record_id = #{importFanRecordId},</if>
|
||||||
<if test="importWxAccountId != null">import_wx_account_id = #{importWxAccountId},</if>
|
<if test="importWxAccountId != null">import_wx_account_id = #{importWxAccountId},</if>
|
||||||
<if test="importFanNum != null">import_fan_num = #{importFanNum},</if>
|
<if test="importFanNum != null">import_fan_num = #{importFanNum},</if>
|
||||||
|
<if test="importTime != null">import_time = #{importTime},</if>
|
||||||
<if test="createTime != null">create_time = #{createTime},</if>
|
<if test="createTime != null">create_time = #{createTime},</if>
|
||||||
<if test="createBy != null">create_by = #{createBy},</if>
|
<if test="createBy != null">create_by = #{createBy},</if>
|
||||||
<if test="updateTime != null">update_time = #{updateTime},</if>
|
<if test="updateTime != null">update_time = #{updateTime},</if>
|
||||||
|
@ -284,4 +284,16 @@
|
|||||||
update sys_recipes_plan set start_date = #{startDate},end_date = #{endDate},pause_date=#{pauseDate} where id =
|
update sys_recipes_plan set start_date = #{startDate},end_date = #{endDate},pause_date=#{pauseDate} where id =
|
||||||
#{id}
|
#{id}
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
<!-- 查询食谱计划中对应食谱存在天数缺失的食谱计划,食谱计划发生变化时,可能会导致sys_customer_daily_menu表中天数缺失,需要查询出来进行补充 -->
|
||||||
|
<select id="getNeedSupplyRecipesByCusId" parameterType="Long" resultType="Map">
|
||||||
|
select plan.recipes_id as recipesId,plan.end_num_day as enNumDay,s.maxNumDay from sys_recipes_plan as plan left join
|
||||||
|
|
||||||
|
(
|
||||||
|
select recipes_id,count(1) as dayNum,max(num_day) as maxNumDay from sys_customer_daily_menu where cus_id = #{cusId} and recipes_id is not null group by recipes_id
|
||||||
|
)
|
||||||
|
as s on s.recipes_id = plan.recipes_id
|
||||||
|
|
||||||
|
where plan.cus_id = #{cusId} and plan.del_flag = 0 and plan.recipes_id is not null and plan.end_num_day > s.maxNumDay
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
<!-- 销售 -->
|
<!-- 销售 -->
|
||||||
<result property="saleName" column="sale_name"></result>
|
<result property="saleName" column="sale_name"></result>
|
||||||
|
<result property="channel" column="channel"></result>
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<sql id="selectSysWxSaleAccountVo">
|
<sql id="selectSysWxSaleAccountVo">
|
||||||
@ -140,7 +141,7 @@
|
|||||||
|
|
||||||
<!-- 查询可以接粉的微信号以及对应销售,用于导粉记录管理 -->
|
<!-- 查询可以接粉的微信号以及对应销售,用于导粉记录管理 -->
|
||||||
<select id="getWxAccountAndSale" resultMap="SysWxSaleAccountResult">
|
<select id="getWxAccountAndSale" resultMap="SysWxSaleAccountResult">
|
||||||
select wa.id, wa.wx_account, su.nick_name as sale_name
|
select wa.id, wa.wx_account, swd.account_id as channel, su.nick_name as sale_name
|
||||||
from sys_wx_sale_account wa
|
from sys_wx_sale_account wa
|
||||||
left join sys_wx_distribution swd on wa.id = swd.wechat_account and swd.del_flag = 0
|
left join sys_wx_distribution swd on wa.id = swd.wechat_account and swd.del_flag = 0
|
||||||
LEFT JOIN sys_user su ON su.user_id = swd.user_id AND su.del_flag = 0
|
LEFT JOIN sys_user su ON su.user_id = swd.user_id AND su.del_flag = 0
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<el-dialog :title="title" :visible.sync="open" width="1050px" :close-on-click-modal="false" append-to-body @closed="cancel">
|
<el-dialog :title="title" :visible.sync="open" width="1050px" :close-on-click-modal="false" append-to-body @closed="cancel">
|
||||||
<!--<div style="margin-bottom: 20px;color:red">1、添加导粉记录时会根据进粉渠道、当前时间来自动确定所属直播间,当前时间段没有直播,则取上一次直播,若账号从未直播过,则为空</div>-->
|
<!--<div style="margin-bottom: 20px;color:red">1、添加导粉记录时会根据进粉渠道、当前时间来自动确定所属直播间,当前时间段没有直播,则取上一次直播,若账号从未直播过,则为空</div>-->
|
||||||
<el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
|
<el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
|
||||||
<!--<el-form-item label="账号渠道" prop="channel">
|
<el-form-item label="账号渠道" prop="channel">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="queryParams.channel"
|
v-model="queryParams.channel"
|
||||||
placeholder="请选择账号渠道"
|
placeholder="请选择账号渠道"
|
||||||
@ -19,7 +19,7 @@
|
|||||||
:value="parseInt(dict.dictValue)"
|
:value="parseInt(dict.dictValue)"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>-->
|
</el-form-item>
|
||||||
<el-form-item label="销售" prop="saleId" label-width="50px">
|
<el-form-item label="销售" prop="saleId" label-width="50px">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="queryParams.saleId"
|
v-model="queryParams.saleId"
|
||||||
@ -89,20 +89,15 @@
|
|||||||
</el-table-column>-->
|
</el-table-column>-->
|
||||||
<el-table-column label="导粉时间" align="center" prop="fanTime" width="240">
|
<el-table-column label="导粉时间" align="center" prop="fanTime" width="240">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-date-picker
|
<el-time-picker
|
||||||
v-model="scope.row.fanTime"
|
|
||||||
type="datetime"
|
|
||||||
placeholder="选择导粉时间"
|
|
||||||
format="yyyy-MM-dd HH:mm"
|
|
||||||
value-format="yyyy-MM-dd HH:mm"
|
value-format="yyyy-MM-dd HH:mm"
|
||||||
:picker-options="fanPickerOptions"
|
v-model="scope.row.fanTime"
|
||||||
|
placeholder="选择导粉时间"
|
||||||
@change="autoSelectLive(scope.row)"
|
@change="autoSelectLive(scope.row)"
|
||||||
>
|
>
|
||||||
</el-date-picker>
|
</el-time-picker>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
|
|
||||||
<el-table-column label="导粉数量" align="center" prop="fanNum" width="180">
|
<el-table-column label="导粉数量" align="center" prop="fanNum" width="180">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-input-number v-model="scope.row.fanNum" :min="1" :max="10000" label="导粉数量" style="width:160px"></el-input-number>
|
<el-input-number v-model="scope.row.fanNum" :min="1" :max="10000" label="导粉数量" style="width:160px"></el-input-number>
|
||||||
@ -227,7 +222,7 @@ export default {
|
|||||||
response.data.wxSaleAccountList.forEach((item,index) => {
|
response.data.wxSaleAccountList.forEach((item,index) => {
|
||||||
item.fanNum = 1;
|
item.fanNum = 1;
|
||||||
//item.importFanNum = this.getTotalFanNum(response.data.fanNumList, item.id);
|
//item.importFanNum = this.getTotalFanNum(response.data.fanNumList, item.id);
|
||||||
item.importFanChannel = null;
|
item.importFanChannel = item.channel ? item.channel : null;
|
||||||
item.importFanLive = null;
|
item.importFanLive = null;
|
||||||
item.fanTime = null;
|
item.fanTime = null;
|
||||||
});
|
});
|
||||||
@ -297,14 +292,16 @@ export default {
|
|||||||
'importFanChannel': row.importFanChannel,
|
'importFanChannel': row.importFanChannel,
|
||||||
'importFanLive': row.importFanLive,
|
'importFanLive': row.importFanLive,
|
||||||
'wxAccountId': row.id,
|
'wxAccountId': row.id,
|
||||||
'fanNum': row.fanNum
|
'fanNum': row.fanNum,
|
||||||
|
"importTime": row.fanTime
|
||||||
}
|
}
|
||||||
addImportFanRecord(param).then((response) => {
|
addImportFanRecord(param).then((response) => {
|
||||||
if(response.code == 200){
|
if(response.code == 200){
|
||||||
this.msgSuccess("保存成功");
|
this.msgSuccess("保存成功");
|
||||||
row.importFanChannel = null;
|
//row.importFanChannel = null;
|
||||||
row.importFanLive = null;
|
row.importFanLive = null;
|
||||||
row.importFanNum += row.fanNum;
|
row.importFanNum += row.fanNum;
|
||||||
|
row.fanTime = null;
|
||||||
row.fanNum = 1;
|
row.fanNum = 1;
|
||||||
this.importFanFlag = true;
|
this.importFanFlag = true;
|
||||||
}
|
}
|
||||||
@ -321,17 +318,19 @@ export default {
|
|||||||
}
|
}
|
||||||
let param = {
|
let param = {
|
||||||
'importFanDate': this.data.importFanDate,
|
'importFanDate': this.data.importFanDate,
|
||||||
'importFanChannels': null,
|
'importFanChannels': "",
|
||||||
'importFanLives': null,
|
'importFanLives': "",
|
||||||
'wxAccountIds': null,
|
'wxAccountIds': "",
|
||||||
'fanNums': null
|
'fanNums': "",
|
||||||
|
"importTimes": ""
|
||||||
}
|
}
|
||||||
this.wxAccountList.forEach((item,index) => {
|
this.wxAccountList.forEach((item,index) => {
|
||||||
if(item.importFanChannel != undefined && item.importFanChannel != null && item.importFanChannel != ""){
|
if(item.fanTime != undefined && item.fanTime != null && item.fanTime != ""){
|
||||||
param.importFanChannels += param.importFanChannels != null ? (","+this.nullToString(item.importFanChannel)) : item.importFanChannel;
|
param.importFanChannels += index != 0 ? (","+this.nullToString(item.importFanChannel)) : item.importFanChannel;
|
||||||
param.importFanLives += param.importFanLives != null ? (","+this.nullToString(item.importFanLive)) : item.importFanLive;
|
param.importFanLives += index != 0 ? (","+this.nullToString(item.importFanLive)) : item.importFanLive;
|
||||||
param.wxAccountIds += param.wxAccountIds != null ? (","+this.nullToString(item.id)) : item.id;
|
param.wxAccountIds += index != 0 ? (","+this.nullToString(item.id)) : item.id;
|
||||||
param.fanNums += param.fanNums != null ? (","+this.nullToString(item.fanNum)) : item.fanNum;
|
param.fanNums += index != 0 ? (","+this.nullToString(item.fanNum)) : item.fanNum;
|
||||||
|
param.importTimes += index != 0 ? (","+this.nullToString(item.fanTime)) : item.fanTime;
|
||||||
}
|
}
|
||||||
if(index == this.wxAccountList.length -1){
|
if(index == this.wxAccountList.length -1){
|
||||||
if(param.importFanChannels == null){
|
if(param.importFanChannels == null){
|
||||||
@ -347,9 +346,10 @@ export default {
|
|||||||
this.importFanFlag = true;
|
this.importFanFlag = true;
|
||||||
for(let i=0; i < this.wxAccountList.length; i++){
|
for(let i=0; i < this.wxAccountList.length; i++){
|
||||||
this.wxAccountList[i].importFanLive = null;
|
this.wxAccountList[i].importFanLive = null;
|
||||||
this.wxAccountList[i].importFanChannel = null;
|
//this.wxAccountList[i].importFanChannel = null;
|
||||||
this.wxAccountList[i].importFanNum += this.wxAccountList[i].fanNum;
|
this.wxAccountList[i].importFanNum += this.wxAccountList[i].fanNum;
|
||||||
this.wxAccountList[i].fanNum = 1;
|
this.wxAccountList[i].fanNum = 1;
|
||||||
|
this.wxAccountList[i].fanTime = null;
|
||||||
//this.$set('wxAccountList', index, item);
|
//this.$set('wxAccountList', index, item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -366,6 +366,8 @@ export default {
|
|||||||
row.importFanLive = null;
|
row.importFanLive = null;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
row.fanTime = this.data.importFanDate + " " + row.fanTime.substring(row.fanTime.length - 5);
|
||||||
|
//console.log(row.fanTime);
|
||||||
getLiveSchedulByTime({'fanChannel':row.importFanChannel,'liveStartTimeString':encodeURIComponent(row.fanTime)}).then((response) => {
|
getLiveSchedulByTime({'fanChannel':row.importFanChannel,'liveStartTimeString':encodeURIComponent(row.fanTime)}).then((response) => {
|
||||||
if (response.code === 200) {
|
if (response.code === 200) {
|
||||||
let live = response.data;
|
let live = response.data;
|
||||||
|
@ -92,10 +92,15 @@
|
|||||||
<span>{{ parseTime(scope.row.importFanDate, '{y}-{m}-{d}') }}</span>
|
<span>{{ parseTime(scope.row.importFanDate, '{y}-{m}-{d}') }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="进粉账号渠道" align="center" prop="importFanChannelName" />
|
<el-table-column label="账号渠道" align="center" prop="importFanChannelName" />
|
||||||
<el-table-column label="所属直播间" align="center" prop="liveRoomName" >
|
<el-table-column label="所属直播间" align="center" prop="liveRoomName" >
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{(scope.row.liveRoomName != null || scope.row.liveNutritionistName != null) ? (scope.row.liveRoomName + "—" + scope.row.liveNutritionistName) : ""}}
|
{{(scope.row.liveRoomName != null ? scope.row.liveRoomName : "无")}}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="直播营养师" align="center" prop="liveNutritionistName" >
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{scope.row.liveNutritionistName != null ? scope.row.liveNutritionistName : "无"}}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="导粉总数" align="center" prop="wxAccountList" :formatter="getTotalFanNum">
|
<el-table-column label="导粉总数" align="center" prop="wxAccountList" :formatter="getTotalFanNum">
|
||||||
@ -104,9 +109,9 @@
|
|||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-popover
|
<el-popover
|
||||||
placement="left"
|
placement="left"
|
||||||
width="520"
|
width="700"
|
||||||
trigger="click">
|
trigger="click">
|
||||||
<el-table :data="scope.row.wxAccountList" style="width:450;height: 400px;overflow: auto;">
|
<el-table :data="scope.row.wxAccountList" style="width:700;height: 400px;overflow: auto;">
|
||||||
<el-table-column width="80" property="saleName" label="销售" align="center"></el-table-column>
|
<el-table-column width="80" property="saleName" label="销售" align="center"></el-table-column>
|
||||||
<el-table-column width="160" property="wxAccount" label="微信号" align="center"></el-table-column>
|
<el-table-column width="160" property="wxAccount" label="微信号" align="center"></el-table-column>
|
||||||
<el-table-column width="120" property="importFanNum" label="导粉数量" align="center">
|
<el-table-column width="120" property="importFanNum" label="导粉数量" align="center">
|
||||||
@ -119,6 +124,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column width="160" property="importTime" label="导粉时间" align="center">
|
||||||
|
</el-table-column>
|
||||||
<el-table-column width="120" label="操作" align="center">
|
<el-table-column width="120" label="操作" align="center">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button
|
<el-button
|
||||||
|
@ -88,6 +88,24 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<el-col :span="6" v-if="!isPartner">
|
||||||
|
<el-form-item label="售中" prop="onSaleId">
|
||||||
|
<el-select
|
||||||
|
v-model="queryParams.onSaleId"
|
||||||
|
placeholder="请选择售中"
|
||||||
|
clearable
|
||||||
|
filterable
|
||||||
|
size="small"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="dict in onSaleIdOptions"
|
||||||
|
:key="dict.dictValue"
|
||||||
|
:label="dict.dictLabel"
|
||||||
|
:value="parseInt(dict.dictValue)"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
<el-col :span="6" v-if="!isPartner">
|
<el-col :span="6" v-if="!isPartner">
|
||||||
<el-form-item label="售后" prop="afterSaleId">
|
<el-form-item label="售后" prop="afterSaleId">
|
||||||
<el-select
|
<el-select
|
||||||
@ -248,7 +266,7 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="6">
|
||||||
<el-form-item label="订单类型" prop="searchOrderTypeArray">
|
<el-form-item label="订单类型" prop="searchOrderTypeArray">
|
||||||
<el-cascader
|
<el-cascader
|
||||||
placeholder="请选择订单类型"
|
placeholder="请选择订单类型"
|
||||||
@ -257,13 +275,13 @@
|
|||||||
:props="orderTypeProps"
|
:props="orderTypeProps"
|
||||||
collapse-tags
|
collapse-tags
|
||||||
clearable
|
clearable
|
||||||
style="width: 300px"
|
|
||||||
></el-cascader> </el-form-item
|
></el-cascader> </el-form-item
|
||||||
><!-- -->
|
><!-- -->
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="20">
|
||||||
<el-form-item label="成交日期" prop="orderTime">
|
<el-form-item label="成交日期" prop="orderTime">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
|
style="width:300px"
|
||||||
v-model="daterange"
|
v-model="daterange"
|
||||||
type="daterange"
|
type="daterange"
|
||||||
size="small"
|
size="small"
|
||||||
@ -276,10 +294,7 @@
|
|||||||
>
|
>
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
<el-form-item style="margin-left:50px">
|
||||||
|
|
||||||
<el-col>
|
|
||||||
<el-form-item>
|
|
||||||
<el-button
|
<el-button
|
||||||
type="cyan"
|
type="cyan"
|
||||||
icon="el-icon-search"
|
icon="el-icon-search"
|
||||||
@ -292,6 +307,20 @@
|
|||||||
</el-button>
|
</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<!--<el-col>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button
|
||||||
|
type="cyan"
|
||||||
|
icon="el-icon-search"
|
||||||
|
size="mini"
|
||||||
|
@click="handleQuery"
|
||||||
|
>搜索
|
||||||
|
</el-button>
|
||||||
|
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">
|
||||||
|
重置
|
||||||
|
</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>-->
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
@ -337,9 +366,11 @@
|
|||||||
width="100"
|
width="100"
|
||||||
>
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
|
<div v-if="scope.row.orderTime != undefined && scope.row.orderTime != null">
|
||||||
<div v-for="time in scope.row.orderTime.split(' ')" :key="time">
|
<div v-for="time in scope.row.orderTime.split(' ')" :key="time">
|
||||||
{{ time }}
|
{{ time }}
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
@ -362,7 +393,11 @@
|
|||||||
width="90"
|
width="90"
|
||||||
/>
|
/>
|
||||||
<el-table-column label="服务时长" align="center" prop="serveTime" />
|
<el-table-column label="服务时长" align="center" prop="serveTime" />
|
||||||
<el-table-column label="销售" align="center" prop="preSale" />
|
<el-table-column label="销售/售中" align="center" prop="preSale" >
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ scope.row.preSaleId ? scope.row.preSale : scope.row.onSale }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
v-if="!isMobile"
|
v-if="!isMobile"
|
||||||
label="售后"
|
label="售后"
|
||||||
@ -561,6 +596,7 @@ export default {
|
|||||||
phone: null,
|
phone: null,
|
||||||
payTypeId: null,
|
payTypeId: null,
|
||||||
preSaleId: null,
|
preSaleId: null,
|
||||||
|
onSaleId: null,
|
||||||
afterSaleId: null,
|
afterSaleId: null,
|
||||||
nutritionistId: null,
|
nutritionistId: null,
|
||||||
nutriAssisId: null,
|
nutriAssisId: null,
|
||||||
@ -592,6 +628,7 @@ export default {
|
|||||||
...mapGetters([
|
...mapGetters([
|
||||||
// 售前字典
|
// 售前字典
|
||||||
"preSaleIdOptions",
|
"preSaleIdOptions",
|
||||||
|
"onSaleIdOptions",
|
||||||
// 售后字典
|
// 售后字典
|
||||||
"afterSaleIdOptions",
|
"afterSaleIdOptions",
|
||||||
// 主营养师字典
|
// 主营养师字典
|
||||||
|
Loading…
x
Reference in New Issue
Block a user