package com.sinata.modular.mall.controller;
|
|
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.convert.Convert;
|
import cn.hutool.core.util.StrUtil;
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.baomidou.mybatisplus.plugins.Page;
|
import com.sinata.common.enums.EnumCityRole;
|
import com.sinata.core.base.controller.BaseController;
|
import com.sinata.core.base.tips.ErrorTip;
|
import com.sinata.core.base.tips.SuccessTip;
|
import com.sinata.core.common.annotion.BussinessLog;
|
import com.sinata.core.common.annotion.Permission;
|
import com.sinata.core.common.constant.factory.PageFactory;
|
import com.sinata.core.shiro.ShiroKit;
|
import com.sinata.core.shiro.ShiroUser;
|
import com.sinata.core.util.DateUtils2;
|
import com.sinata.core.util.ExcelExportUtil;
|
import com.sinata.core.util.ExcelImportUtil;
|
import com.sinata.modular.mall.model.CommissionSettlementMonth;
|
import com.sinata.modular.mall.service.ICommissionSettlementMonthService;
|
import com.sinata.modular.member.model.MemUser;
|
import com.sinata.modular.member.service.IMemUserService;
|
import com.sinata.modular.system.model.Role;
|
import com.sinata.modular.system.service.IRoleService;
|
import java.util.stream.Collectors;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMethod;
|
import org.springframework.web.bind.annotation.RequestPart;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.IOException;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.concurrent.TimeoutException;
|
|
/**
|
* 佣金结算明细控制器
|
*
|
* @author Goku
|
*/
|
@Controller
|
@RequestMapping("/commissionSettlement")
|
public class CommissionSettlementController extends BaseController {
|
|
private String PREFIX = "/mall/commissionSettlement/";
|
@Autowired
|
private IMemUserService userService;
|
|
@Autowired
|
private ICommissionSettlementMonthService commissionSettlementMonthService;
|
|
@Autowired
|
private IRoleService roleService;
|
|
/**
|
* 跳转到佣金结算明细首页
|
*/
|
@RequestMapping("")
|
public String index() {
|
return PREFIX + "commissionSettlement.html";
|
}
|
|
/**
|
* 获取佣金结算明细列表
|
*/
|
@ResponseBody
|
@RequestMapping(value = "/list")
|
public Object list(String beginTime, String endTime, String condition, String condition1, String condition2, Integer condition3) {
|
Page<CommissionSettlementMonth> page = new PageFactory().defaultPage();
|
// if (StrUtil.isBlank(beginTime) && StrUtil.isBlank(endTime)) {
|
// // 如果查询月份为空,则默认当前月
|
// month = DateUtils2.formatDate(new Date(), "yyyyMM");
|
// }
|
// 时间搜索
|
if (StrUtil.isNotBlank(beginTime)) {
|
beginTime = beginTime.replace("-", "");
|
}
|
if (StrUtil.isNotBlank(endTime)) {
|
endTime = endTime.replace("-", "");
|
}
|
|
String cityCode = "";
|
try {
|
// 【城市管理员】数据查询
|
ShiroUser shiroUser = ShiroKit.getUser();
|
List<Integer> roleList = shiroUser.getRoleList();
|
List<Integer> cityRoleList = roleService.selectList(
|
new EntityWrapper<Role>().in("id", roleList)).stream().map(Role::getCityRole)
|
.collect(
|
Collectors.toList());
|
if (cityRoleList.contains(EnumCityRole.CITY_ROLE.index)) {
|
// 市级城市管理员
|
cityCode = shiroUser.getCityCode().substring(0, 4);
|
}
|
else if (cityRoleList.contains(EnumCityRole.PROVINCE_ROLE.index)) {
|
// 省级城市管理员
|
cityCode = shiroUser.getCityCode().substring(0, 2);
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
// 查询数据列表
|
page.setTotal(commissionSettlementMonthService.queryListCount(beginTime, endTime, condition, condition1, condition2, cityCode, condition3, null));
|
List<CommissionSettlementMonth> list = commissionSettlementMonthService.queryList(beginTime, endTime, condition, condition1, condition2, cityCode, condition3, null, page.getCurrent(), page.getSize());
|
page.setRecords(list);
|
return super.packForBT(page);
|
}
|
|
@Permission
|
@ResponseBody
|
@RequestMapping(value = "/export")
|
public void exportOrder(String beginTime, String endTime, String condition, String condition1, String condition2, String cityCode, Integer condition3, HttpServletResponse response) throws IOException {
|
// 时间搜索
|
if (StrUtil.isNotBlank(beginTime)) {
|
beginTime = beginTime.replace("-", "");
|
}
|
if (StrUtil.isNotBlank(endTime)) {
|
endTime = endTime.replace("-", "");
|
}
|
// 查询数据列表
|
List<CommissionSettlementMonth> list = commissionSettlementMonthService.queryList(beginTime, endTime, condition, condition1, condition2, cityCode, condition3, null, null, null);
|
|
List<List<Object>> dataList = new ArrayList<>();
|
List<Object> titles = CollUtil.newArrayList(
|
"销售员工号",
|
"销售员工姓名",
|
"销售员工职级",
|
"省级",
|
"市级",
|
"区县",
|
"结算月",
|
"销售佣金(套餐)",
|
"销售佣金(普通)",
|
"管理利益(套餐)",
|
"管理利益(普通)",
|
"育成奖",
|
"应发佣金",
|
"税前加款",
|
"税前扣款",
|
"税前应发佣金",
|
"实发金额"
|
);
|
dataList.add(titles);
|
|
for (CommissionSettlementMonth commission : list) {
|
dataList.add(
|
CollUtil.newArrayList(
|
commission.getShowId(),
|
commission.getUserName(),
|
commission.getUserGradeName(),
|
commission.getProvinceCodeName(),
|
commission.getCityCodeName(),
|
commission.getCountyCodeName(),
|
commission.getMonth(),
|
commission.getSalesCommissionGroup(),
|
commission.getSalesCommissionGoods(),
|
commission.getManageProfitGroup(),
|
commission.getManageProfitGoods(),
|
commission.getBreedAward(),
|
commission.getCommissionPayable(),
|
commission.getAddBeforeTax(),
|
commission.getSubBeforeTax(),
|
commission.getCommissionBeforeTax(),
|
commission.getPaymentAmount()
|
));
|
}
|
ExcelExportUtil.easySheet("佣金明细" + DateUtils2.formatDate(new Date(), "YYYYMMddHHmmSS"), "佣金明细", dataList, response);
|
}
|
|
@Permission
|
@ResponseBody
|
@BussinessLog(value = "导入佣金明细")
|
@RequestMapping(method = RequestMethod.POST, path = "/importData")
|
public Object importData(@RequestPart("file") MultipartFile file) {
|
try {
|
String[] titles = new String[]{
|
"showId", "userName", "userGradeName"
|
, "provinceCodeName", "cityCodeName", "countyCodeName"
|
, "month"
|
, "salesCommissionGroup", "salesCommissionGoods", "manageProfitGroup", "manageProfitGoods"
|
, "breedAward", "commissionPayable", "addBeforeTax", "subBeforeTax"
|
, "commissionBeforeTax", "paymentAmount"
|
};
|
// 读取表格中信息
|
List<Map<String, String>> list = ExcelImportUtil.getMapList(file, titles);
|
List<CommissionSettlementMonth> monthList = new ArrayList<>();
|
for (Map<String, String> map : list) {
|
String showId = map.get("showId");
|
String month = map.get("month");
|
if (StrUtil.isBlank(showId) && StrUtil.isBlank(month)) {
|
continue;
|
}
|
CommissionSettlementMonth old = commissionSettlementMonthService.selectOne(
|
new EntityWrapper<CommissionSettlementMonth>()
|
.eq("showId", showId)
|
.eq("month", month)
|
.last("LIMIT 1")
|
);
|
|
CommissionSettlementMonth o = new CommissionSettlementMonth();
|
if (old != null && old.getId() != null) {
|
// 设置ID(修改)
|
o.setId(old.getId());
|
} else {
|
MemUser memUser = userService.selectOne(
|
new EntityWrapper<MemUser>()
|
.eq("show_id", showId)
|
.last("LIMIT 1")
|
);
|
if (memUser == null) {
|
throw new TimeoutException("工号" + showId + "无效!");
|
}
|
o.setUserId(memUser.getId());
|
o.setProvinceCode(memUser.getAgentProvinceCode());
|
o.setCityCode(memUser.getAgentCityCode());
|
o.setCountyCode(memUser.getAgentCountyCode());
|
}
|
o.setShowId(showId);
|
o.setMonth(month);
|
// 设置新值
|
o.setUserName(map.get("userName"));
|
o.setUserGradeName(map.get("userGradeName"));
|
// o.setProvinceCodeName(map.get("provinceCodeName"));
|
// o.setCityCodeName(map.get("cityCodeName"));
|
// o.setCountyCodeName(map.get("countyCodeName"));
|
o.setSalesCommissionGroup(Convert.toBigDecimal(map.get("salesCommissionGroup")));
|
o.setSalesCommissionGoods(Convert.toBigDecimal(map.get("salesCommissionGoods")));
|
o.setManageProfitGroup(Convert.toBigDecimal(map.get("manageProfitGroup")));
|
o.setManageProfitGoods(Convert.toBigDecimal(map.get("manageProfitGoods")));
|
o.setBreedAward(Convert.toBigDecimal(map.get("breedAward")));
|
o.setCommissionPayable(Convert.toBigDecimal(map.get("commissionPayable")));
|
o.setAddBeforeTax(Convert.toBigDecimal(map.get("addBeforeTax")));
|
o.setSubBeforeTax(Convert.toBigDecimal(map.get("subBeforeTax")));
|
o.setCommissionBeforeTax(Convert.toBigDecimal(map.get("commissionBeforeTax")));
|
o.setPaymentAmount(Convert.toBigDecimal(map.get("paymentAmount")));
|
|
monthList.add(o);
|
}
|
|
if (monthList.size() > 0) {
|
commissionSettlementMonthService.insertOrUpdateBatch(monthList);
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
// 操作失败
|
return new ErrorTip(500, "数据导入失败!" + e.getMessage());
|
}
|
// 操作成功,但有错误数据的提示
|
return new SuccessTip(200, "导入成功!");
|
}
|
}
|