|
@@ -1,13 +1,13 @@
|
|
package org.jeecg.ctop.finance.settlement.service.serviceImpl;
|
|
package org.jeecg.ctop.finance.settlement.service.serviceImpl;
|
|
|
|
|
|
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
|
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
|
|
|
+import cn.afterturn.easypoi.excel.ExcelImportUtil;
|
|
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
|
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
|
|
|
+import cn.afterturn.easypoi.excel.entity.ImportParams;
|
|
|
|
+import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult;
|
|
import cn.com.ctop.common.module.entity.SysLog;
|
|
import cn.com.ctop.common.module.entity.SysLog;
|
|
import cn.com.ctop.common.module.entity.UserAllocation;
|
|
import cn.com.ctop.common.module.entity.UserAllocation;
|
|
-import cn.com.ctop.common.module.mapper.MailLogMapper;
|
|
|
|
-import cn.com.ctop.common.module.mapper.SysLogMapper;
|
|
|
|
-import cn.com.ctop.common.module.mapper.SysRoleMapper;
|
|
|
|
-import cn.com.ctop.common.module.mapper.UserAllocationMapper;
|
|
|
|
|
|
+import cn.com.ctop.common.module.mapper.*;
|
|
import cn.com.ctop.common.module.utils.CorpWexinUtils;
|
|
import cn.com.ctop.common.module.utils.CorpWexinUtils;
|
|
import cn.com.ctop.common.module.utils.ImageUtils;
|
|
import cn.com.ctop.common.module.utils.ImageUtils;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
@@ -24,8 +24,11 @@ import org.jeecg.common.api.vo.Result;
|
|
import org.jeecg.common.system.entity.SysUser;
|
|
import org.jeecg.common.system.entity.SysUser;
|
|
import org.jeecg.common.system.vo.LoginUser;
|
|
import org.jeecg.common.system.vo.LoginUser;
|
|
import org.jeecg.common.util.DateUtils;
|
|
import org.jeecg.common.util.DateUtils;
|
|
|
|
+import org.jeecg.ctop.finance.policy.entity.CwjsCompanySubject;
|
|
import org.jeecg.ctop.finance.policy.entity.CwjsPolicyInfo;
|
|
import org.jeecg.ctop.finance.policy.entity.CwjsPolicyInfo;
|
|
import org.jeecg.ctop.finance.policy.entity.CwjsPolicyProduct;
|
|
import org.jeecg.ctop.finance.policy.entity.CwjsPolicyProduct;
|
|
|
|
+import org.jeecg.ctop.finance.policy.mapper.CwjsCompanySubjectMapper;
|
|
|
|
+import org.jeecg.ctop.finance.policy.mapper.CwjsPolicyInfoMapper;
|
|
import org.jeecg.ctop.finance.policy.mapper.CwjsPolicyProductMapper;
|
|
import org.jeecg.ctop.finance.policy.mapper.CwjsPolicyProductMapper;
|
|
import org.jeecg.ctop.finance.policy.utils.Check;
|
|
import org.jeecg.ctop.finance.policy.utils.Check;
|
|
import org.jeecg.ctop.finance.settlement.entity.pojo.CtopCwjsSettlementInfo;
|
|
import org.jeecg.ctop.finance.settlement.entity.pojo.CtopCwjsSettlementInfo;
|
|
@@ -41,6 +44,7 @@ import org.jeecg.modules.ctop.service.IMaterialReportOverViewService;
|
|
import org.springframework.beans.BeanUtils;
|
|
import org.springframework.beans.BeanUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
import javax.imageio.ImageIO;
|
|
import javax.imageio.ImageIO;
|
|
@@ -200,8 +204,8 @@ public class ReportSettlementServiceImpl implements IReportSettlementService {
|
|
row.createCell(0).setCellValue(vo.getDate());
|
|
row.createCell(0).setCellValue(vo.getDate());
|
|
row.createCell(1).setCellValue(vo.getAccountName());
|
|
row.createCell(1).setCellValue(vo.getAccountName());
|
|
row.createCell(2).setCellValue(vo.getAdvertiserId());
|
|
row.createCell(2).setCellValue(vo.getAdvertiserId());
|
|
- row.createCell(3).setCellValue("北京汇创思拓数字科技有限公司-ka");
|
|
|
|
- row.createCell(4).setCellValue("73970348172");
|
|
|
|
|
|
+ row.createCell(3).setCellValue(vo.getAgentName());
|
|
|
|
+ row.createCell(4).setCellValue(vo.getAgentId());
|
|
row.createCell(5).setCellValue(vo.getCost());
|
|
row.createCell(5).setCellValue(vo.getCost());
|
|
row.createCell(6).setCellValue(vo.getCashCost());
|
|
row.createCell(6).setCellValue(vo.getCashCost());
|
|
row.createCell(7).setCellValue(vo.getRewardCost());
|
|
row.createCell(7).setCellValue(vo.getRewardCost());
|
|
@@ -563,7 +567,7 @@ public class ReportSettlementServiceImpl implements IReportSettlementService {
|
|
List<String> policyDaysList = new ArrayList<>();
|
|
List<String> policyDaysList = new ArrayList<>();
|
|
if (!Check.isNull(map.get("productName"))){
|
|
if (!Check.isNull(map.get("productName"))){
|
|
//查询 头条利润表 返点类型和比列
|
|
//查询 头条利润表 返点类型和比列
|
|
- List<Map<String,Object>> rateMap = reportSettlementMapper.getProfitBytedance(map.get("productName")+"","1",paramsVo.getStartTime(),paramsVo.getEndTime());
|
|
|
|
|
|
+ List<Map<String,Object>> rateMap = reportSettlementMapper.getProfitBytedance(map.get("advertiserName")+"",map.get("productName")+"",slaeMap.get("saleId")+"","1",paramsVo.getStartTime(),paramsVo.getEndTime());
|
|
List listPolicyTIme = new ArrayList();
|
|
List listPolicyTIme = new ArrayList();
|
|
for (Map<String, Object> rate : rateMap) {
|
|
for (Map<String, Object> rate : rateMap) {
|
|
listPolicyTIme.add(rate.get("policyStartDate"));
|
|
listPolicyTIme.add(rate.get("policyStartDate"));
|
|
@@ -585,7 +589,7 @@ public class ReportSettlementServiceImpl implements IReportSettlementService {
|
|
for (Map<String, String> stringMap : arrayList) {
|
|
for (Map<String, String> stringMap : arrayList) {
|
|
ProfitReportBytedanceVo vo = new ProfitReportBytedanceVo();
|
|
ProfitReportBytedanceVo vo = new ProfitReportBytedanceVo();
|
|
//使用政策 返点类型和比例
|
|
//使用政策 返点类型和比例
|
|
- Map<String,Object> policyRateMap = reportSettlementMapper.getProfitRebate(map.get("productName")+"",stringMap.get("startDate"),stringMap.get("endDate"));
|
|
|
|
|
|
+ Map<String,Object> policyRateMap = reportSettlementMapper.getProfitRebate(map.get("advertiserName")+"",map.get("productName")+"",slaeMap.get("saleId")+"","1",stringMap.get("startDate"),stringMap.get("endDate"));
|
|
if (!Check.isNull(policyRateMap)){
|
|
if (!Check.isNull(policyRateMap)){
|
|
if(Integer.valueOf(policyRateMap.get("rebateType").toString())== 0){
|
|
if(Integer.valueOf(policyRateMap.get("rebateType").toString())== 0){
|
|
vo.setRebateType("返现");//返点类型
|
|
vo.setRebateType("返现");//返点类型
|
|
@@ -721,7 +725,7 @@ public class ReportSettlementServiceImpl implements IReportSettlementService {
|
|
List<String> policyDaysList = new ArrayList<>();
|
|
List<String> policyDaysList = new ArrayList<>();
|
|
if (!Check.isNull(map.get("productName"))) {
|
|
if (!Check.isNull(map.get("productName"))) {
|
|
//查询 快手利润表 返点类型和比列
|
|
//查询 快手利润表 返点类型和比列
|
|
- List<Map<String, Object>> rateMap = reportSettlementMapper.getProfitBytedance(map.get("productName") + "", "2", paramsVo.getStartTime(), paramsVo.getEndTime());
|
|
|
|
|
|
+ List<Map<String, Object>> rateMap = reportSettlementMapper.getProfitBytedance(map.get("advertiserName")+"",map.get("productName") + "", slaeMap.get("saleId")+"","2", paramsVo.getStartTime(), paramsVo.getEndTime());
|
|
List listPolicyTIme = new ArrayList();
|
|
List listPolicyTIme = new ArrayList();
|
|
for (Map<String, Object> rate : rateMap) {
|
|
for (Map<String, Object> rate : rateMap) {
|
|
listPolicyTIme.add(rate.get("policyStartDate"));
|
|
listPolicyTIme.add(rate.get("policyStartDate"));
|
|
@@ -745,7 +749,7 @@ public class ReportSettlementServiceImpl implements IReportSettlementService {
|
|
for (Map<String, String> stringMap : arrayList) {
|
|
for (Map<String, String> stringMap : arrayList) {
|
|
ProfitReportKuaiShouVo vo = new ProfitReportKuaiShouVo();
|
|
ProfitReportKuaiShouVo vo = new ProfitReportKuaiShouVo();
|
|
//使用政策 返点类型和比例
|
|
//使用政策 返点类型和比例
|
|
- Map<String, Object> policyRateMap = reportSettlementMapper.getProfitRebate(map.get("productName") + "", stringMap.get("startDate"), stringMap.get("endDate"));
|
|
|
|
|
|
+ Map<String, Object> policyRateMap = reportSettlementMapper.getProfitRebate(map.get("advertiserName")+"",map.get("productName") + "", slaeMap.get("saleId")+"","2",stringMap.get("startDate"), stringMap.get("endDate"));
|
|
if (!Check.isNull(policyRateMap)) {
|
|
if (!Check.isNull(policyRateMap)) {
|
|
if (Integer.valueOf(policyRateMap.get("rebateType").toString()) == 0) {
|
|
if (Integer.valueOf(policyRateMap.get("rebateType").toString()) == 0) {
|
|
vo.setRebateType("返现");//返点类型
|
|
vo.setRebateType("返现");//返点类型
|
|
@@ -796,11 +800,9 @@ public class ReportSettlementServiceImpl implements IReportSettlementService {
|
|
vo.setTime(!Check.isNull(vo.getRebateType()) ? stringMap.get("startDate") + "----" + stringMap.get("endDate") : "");
|
|
vo.setTime(!Check.isNull(vo.getRebateType()) ? stringMap.get("startDate") + "----" + stringMap.get("endDate") : "");
|
|
resultList.add(vo);
|
|
resultList.add(vo);
|
|
}
|
|
}
|
|
-
|
|
|
|
}
|
|
}
|
|
|
|
|
|
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("快手利润单", "快手利润单"), ProfitReportKuaiShouVo.class, resultList);
|
|
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("快手利润单", "快手利润单"), ProfitReportKuaiShouVo.class, resultList);
|
|
-
|
|
|
|
try {
|
|
try {
|
|
response.setCharacterEncoding("UTF-8");
|
|
response.setCharacterEncoding("UTF-8");
|
|
response.setHeader("content-Type", "application/vnd.ms-excel");
|
|
response.setHeader("content-Type", "application/vnd.ms-excel");
|
|
@@ -809,7 +811,6 @@ public class ReportSettlementServiceImpl implements IReportSettlementService {
|
|
} catch (IOException e) {
|
|
} catch (IOException e) {
|
|
throw new RuntimeException(e);
|
|
throw new RuntimeException(e);
|
|
}
|
|
}
|
|
-
|
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
e.printStackTrace();
|
|
return Result.errorMsg(e.getMessage());
|
|
return Result.errorMsg(e.getMessage());
|
|
@@ -834,7 +835,6 @@ public class ReportSettlementServiceImpl implements IReportSettlementService {
|
|
int accountNum = 0;
|
|
int accountNum = 0;
|
|
String productInfo = null;
|
|
String productInfo = null;
|
|
String message = "{0},您好!您{1}月份有{2}个产品的账户需要进行媒体后台消耗截图上传,共计{3}个账户。产品分别为:{4}。请及时上传,多谢配合!";
|
|
String message = "{0},您好!您{1}月份有{2}个产品的账户需要进行媒体后台消耗截图上传,共计{3}个账户。产品分别为:{4}。请及时上传,多谢配合!";
|
|
-
|
|
|
|
//查询所有 运营绑定的账户
|
|
//查询所有 运营绑定的账户
|
|
List<Map<String,Object>> userList = reportSettlementMapper.getAccountOperateUserId();
|
|
List<Map<String,Object>> userList = reportSettlementMapper.getAccountOperateUserId();
|
|
for (Map<String, Object> userMap : userList) {
|
|
for (Map<String, Object> userMap : userList) {
|
|
@@ -849,7 +849,6 @@ public class ReportSettlementServiceImpl implements IReportSettlementService {
|
|
productNum = product.size();
|
|
productNum = product.size();
|
|
accountNum = productList.size();
|
|
accountNum = productList.size();
|
|
productInfo = StringUtils.join(product.toArray(),"、");
|
|
productInfo = StringUtils.join(product.toArray(),"、");
|
|
-
|
|
|
|
//发送微信通知
|
|
//发送微信通知
|
|
JSONObject jsonObject = mailLogMapper.getWChatIdByUserId(userId);
|
|
JSONObject jsonObject = mailLogMapper.getWChatIdByUserId(userId);
|
|
String msg = MessageFormat.format(message,userMap.get("userName").toString(),month,productNum,accountNum,productInfo);
|
|
String msg = MessageFormat.format(message,userMap.get("userName").toString(),month,productNum,accountNum,productInfo);
|
|
@@ -881,7 +880,6 @@ public class ReportSettlementServiceImpl implements IReportSettlementService {
|
|
productNum = product.size();
|
|
productNum = product.size();
|
|
accountNum = productList.size();
|
|
accountNum = productList.size();
|
|
productInfo = StringUtils.join(product.toArray(),"、");
|
|
productInfo = StringUtils.join(product.toArray(),"、");
|
|
-
|
|
|
|
//发送微信通知
|
|
//发送微信通知
|
|
JSONObject jsonObject = mailLogMapper.getWChatIdByUserId(Check.isNull(userId) ? "f990f815ecef43fab9cbe1bb22bb6d63" : userId);
|
|
JSONObject jsonObject = mailLogMapper.getWChatIdByUserId(Check.isNull(userId) ? "f990f815ecef43fab9cbe1bb22bb6d63" : userId);
|
|
String msg = MessageFormat.format(message,userMap.get("userName").toString(),month,productNum,accountNum,productInfo);
|
|
String msg = MessageFormat.format(message,userMap.get("userName").toString(),month,productNum,accountNum,productInfo);
|
|
@@ -893,10 +891,8 @@ public class ReportSettlementServiceImpl implements IReportSettlementService {
|
|
@Resource
|
|
@Resource
|
|
private CwjsPolicyProductMapper cwjsPolicyProductMapper;
|
|
private CwjsPolicyProductMapper cwjsPolicyProductMapper;
|
|
|
|
|
|
-
|
|
|
|
@Override
|
|
@Override
|
|
public void cwjsPRofit(CwjsPolicyInfo cwjsPolicyInfo) {
|
|
public void cwjsPRofit(CwjsPolicyInfo cwjsPolicyInfo) {
|
|
-
|
|
|
|
// 获取两个日期之间 所有的 时间 年-月-日
|
|
// 获取两个日期之间 所有的 时间 年-月-日
|
|
List<String> betweenDaysList = SettlementUtil.getAllDatesOfTwoTimes(cwjsPolicyInfo.getPolicyStartDate(),cwjsPolicyInfo.getPolicyEndDate());
|
|
List<String> betweenDaysList = SettlementUtil.getAllDatesOfTwoTimes(cwjsPolicyInfo.getPolicyStartDate(),cwjsPolicyInfo.getPolicyEndDate());
|
|
//查看 政策下的产品
|
|
//查看 政策下的产品
|
|
@@ -909,6 +905,7 @@ public class ReportSettlementServiceImpl implements IReportSettlementService {
|
|
CtopCwjsSlettementReport report = new CtopCwjsSlettementReport();
|
|
CtopCwjsSlettementReport report = new CtopCwjsSlettementReport();
|
|
report.setPolicyId(cwjsPolicyInfo.getId());
|
|
report.setPolicyId(cwjsPolicyInfo.getId());
|
|
report.setAdvertiserName(cwjsPolicyInfo.getAdvertiserName());
|
|
report.setAdvertiserName(cwjsPolicyInfo.getAdvertiserName());
|
|
|
|
+ report.setCompanyName(cwjsPolicyInfo.getCompanyName());
|
|
report.setProductName(product.getPolicyProductName());
|
|
report.setProductName(product.getPolicyProductName());
|
|
report.setMediaType(cwjsPolicyInfo.getMediaType());
|
|
report.setMediaType(cwjsPolicyInfo.getMediaType());
|
|
report.setCreateUserId(cwjsPolicyInfo.getCreateUserId());
|
|
report.setCreateUserId(cwjsPolicyInfo.getCreateUserId());
|
|
@@ -920,4 +917,90 @@ public class ReportSettlementServiceImpl implements IReportSettlementService {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ private CwjsPolicyInfoMapper cwjsPolicyInfoMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ private SysUserMapper sysUserMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ private CwjsCompanySubjectMapper cwjsCompanySubjectMapper;
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public Result importPolicyInit(MultipartFile file) {
|
|
|
|
+ try {
|
|
|
|
+ //LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
|
|
|
+ //settlementInfo.setCreateUserId(user.getId());
|
|
|
|
+ //settlementInfo.setCreateUserId("b161b7d9793942f980dbfe8c931cd1b0");
|
|
|
|
+ ImportParams importParams = new ImportParams();
|
|
|
|
+ //表头行数
|
|
|
|
+ importParams.setHeadRows(1);
|
|
|
|
+
|
|
|
|
+ ExcelImportResult<PolicyImportVo> importResult = ExcelImportUtil.importExcelMore(file.getInputStream(), PolicyImportVo.class, importParams);
|
|
|
|
+ if (importResult.getList().size() < 1) {
|
|
|
|
+ return Result.error("读取Excel失败,数据不能为空,请重新检查数据并导入");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for (PolicyImportVo importVo : importResult.getList()) {
|
|
|
|
+ if (cn.com.ctop.common.module.utils.Check.isNull(importVo.getCompanyName())){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ if (cn.com.ctop.common.module.utils.Check.isNull(importVo.getPolicyProductName())){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ List<String> productNameList = Arrays.asList(importVo.getPolicyProductName().split("-"));
|
|
|
|
+
|
|
|
|
+ CwjsPolicyInfo cwjsPolicyInfo = new CwjsPolicyInfo();
|
|
|
|
+ BeanUtils.copyProperties(importVo, cwjsPolicyInfo);
|
|
|
|
+
|
|
|
|
+ // 销售 - 创建人
|
|
|
|
+ QueryWrapper<SysUser> sysUserQw = new QueryWrapper<>();
|
|
|
|
+ sysUserQw.eq("realname", importVo.getCreateUserName());
|
|
|
|
+ sysUserQw.last("limit 1");
|
|
|
|
+ SysUser user = sysUserMapper.selectOne(sysUserQw);
|
|
|
|
+ cwjsPolicyInfo.setCreateUserId(user.getId());
|
|
|
|
+
|
|
|
|
+ //公司主体
|
|
|
|
+ QueryWrapper<CwjsCompanySubject> companySubQw = new QueryWrapper<>();
|
|
|
|
+ companySubQw.eq("company_subject_name", importVo.getCompanySubjectIdStr());
|
|
|
|
+ companySubQw.eq("area_info", importVo.getAreaInfo());
|
|
|
|
+ companySubQw.last("limit 1");
|
|
|
|
+ CwjsCompanySubject companySubject = cwjsCompanySubjectMapper.selectOne(companySubQw);
|
|
|
|
+ cwjsPolicyInfo.setCompanySubjectId(companySubject.getId());
|
|
|
|
+
|
|
|
|
+ cwjsPolicyInfo.setApprovedStatus(3);
|
|
|
|
+
|
|
|
|
+ CwjsPolicyInfo policy = cwjsPolicyInfoMapper.getPolicyInfo(cwjsPolicyInfo);
|
|
|
|
+
|
|
|
|
+ if (cn.com.ctop.common.module.utils.Check.isNull(policy)){
|
|
|
|
+ cwjsPolicyInfoMapper.insert(cwjsPolicyInfo);
|
|
|
|
+ policy = cwjsPolicyInfoMapper.getPolicyInfo(cwjsPolicyInfo);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //查看 政策下的产品
|
|
|
|
+ List<CwjsPolicyProduct> productList = cwjsPolicyProductMapper.queryProductsByPolicyId(policy.getId());
|
|
|
|
+ List proList = productList.stream().map(CwjsPolicyProduct:: getPolicyProductName).collect(Collectors.toList());
|
|
|
|
+ for (String str : productNameList) {
|
|
|
|
+ if (!proList.contains(str)){
|
|
|
|
+ //新增产品
|
|
|
|
+ CwjsPolicyProduct policyProduct = new CwjsPolicyProduct();
|
|
|
|
+ policyProduct.setPolicyId(policy.getId());
|
|
|
|
+ policyProduct.setPolicyProductName(str);
|
|
|
|
+ policyProduct.setCreateUserId(cwjsPolicyInfo.getCreateUserId());
|
|
|
|
+ policyProduct.setDelFlag(0);
|
|
|
|
+ cwjsPolicyProductMapper.insert(policyProduct);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ this.cwjsPRofit(policy);
|
|
|
|
+ }
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ return Result.error("政策数据上传失败,请使用正确的模板导入!");
|
|
|
|
+ }
|
|
|
|
+ return Result.successMsg("政策数据上传成功", null);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
}
|
|
}
|