|
|
@@ -14,6 +14,7 @@ import org.springblade.core.excel.util.ExcelUtil;
|
|
|
import org.springblade.core.secure.utils.AuthUtil;
|
|
|
import org.springblade.core.secure.utils.SecureUtil;
|
|
|
import org.springblade.core.tool.api.R;
|
|
|
+import org.springblade.core.tool.utils.BeanUtil;
|
|
|
import org.springblade.core.tool.utils.CollectionUtil;
|
|
|
import org.springblade.core.tool.utils.ObjectUtil;
|
|
|
import org.springblade.core.tool.utils.StringUtil;
|
|
|
@@ -21,6 +22,7 @@ import org.springblade.project.entity.ServiceProject;
|
|
|
import org.springblade.project.entity.ServiceProjectFiles;
|
|
|
import org.springblade.project.entity.ServiceProjectItem;
|
|
|
import org.springblade.project.excel.CommissionExcel;
|
|
|
+import org.springblade.project.excel.ServiceProjectItemExcel;
|
|
|
import org.springblade.project.excel.StatisticsExcel;
|
|
|
import org.springblade.project.service.ServiceProjectFilesService;
|
|
|
import org.springblade.project.service.ServiceProjectItemService;
|
|
|
@@ -40,6 +42,7 @@ import springfox.documentation.annotations.ApiIgnore;
|
|
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.math.MathContext;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@@ -896,6 +899,122 @@ public class ProjectController {
|
|
|
return R.data(iPage);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 新任务列表(导出)
|
|
|
+ *
|
|
|
+ * @param pName
|
|
|
+ * @param cornId
|
|
|
+ * @param corpName
|
|
|
+ * @param userName
|
|
|
+ * @param deptid
|
|
|
+ * @param status
|
|
|
+ * @param actualDateStart
|
|
|
+ * @param actualDateEnd
|
|
|
+ * @param beginStartTime
|
|
|
+ * @param beginEndTime
|
|
|
+ * @param projectType
|
|
|
+ * @param branch
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @GetMapping("/itemTask/export")
|
|
|
+ public void itemTaskExport(@RequestParam(name = "pname", required = false) String pName,
|
|
|
+ @RequestParam(name = "cornId", required = false) Long cornId,
|
|
|
+ @RequestParam(name = "corpName", required = false) String corpName,
|
|
|
+ @RequestParam(name = "userName", required = false) String userName,
|
|
|
+ @RequestParam(name = "deptid", required = false) Long deptid,
|
|
|
+ @RequestParam(name = "status", required = true) String status,
|
|
|
+ @RequestParam(name = "actualDateStart", required = false) String actualDateStart,
|
|
|
+ @RequestParam(name = "actualDateEnd", required = false) String actualDateEnd,
|
|
|
+ @RequestParam(name = "beginStartTime", required = false) String beginStartTime,
|
|
|
+ @RequestParam(name = "beginEndTime", required = false) String beginEndTime,
|
|
|
+ @RequestParam(name = "projectType", required = false) Integer projectType,
|
|
|
+ @RequestParam(name = "branch", required = false) String branch,
|
|
|
+ @RequestParam(name = "sysNo", required = false) String sysNo,
|
|
|
+ @RequestParam(name = "payStartTime", required = false) String payStartTime,
|
|
|
+ @RequestParam(name = "payEndTime", required = false) String payEndTime,
|
|
|
+ HttpServletResponse response
|
|
|
+ ) {
|
|
|
+ List<String> listStatus = Arrays.asList(status.split(","));
|
|
|
+
|
|
|
+ LambdaQueryWrapper<ServiceProjectItem> itemLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ itemLambdaQueryWrapper
|
|
|
+ .eq(projectType != null, ServiceProjectItem::getProjectType, projectType)
|
|
|
+ .eq(StringUtils.isNotBlank(userName), ServiceProjectItem::getUserName, userName)
|
|
|
+ .eq(ServiceProjectItem::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .like(StringUtils.isNotBlank(pName), ServiceProjectItem::getPName, pName)
|
|
|
+ .eq(ServiceProjectItem::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .ge(StringUtils.isNotBlank(beginStartTime), ServiceProjectItem::getBeginTime, beginStartTime)
|
|
|
+ .le(StringUtils.isNotBlank(beginEndTime), ServiceProjectItem::getBeginTime, beginEndTime)
|
|
|
+ .ge(StringUtils.isNotBlank(actualDateStart), ServiceProjectItem::getActualDate, actualDateStart)
|
|
|
+ .le(StringUtils.isNotBlank(actualDateEnd), ServiceProjectItem::getActualDate, actualDateEnd)
|
|
|
+ .ge(StringUtil.isNotBlank(payStartTime), ServiceProjectItem::getPayTime, payStartTime)
|
|
|
+ .le(StringUtil.isNotBlank(payEndTime), ServiceProjectItem::getPayTime, payEndTime)
|
|
|
+ .like(StringUtils.isNotBlank(sysNo), ServiceProjectItem::getSysNo, sysNo)
|
|
|
+ .orderByDesc(ServiceProjectItem::getCreateTime);
|
|
|
+
|
|
|
+
|
|
|
+ LambdaQueryWrapper<ServiceProject> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ //客户名称
|
|
|
+ if (cornId != null) {
|
|
|
+ lambdaQueryWrapper.eq(ServiceProject::getCorpId, cornId);
|
|
|
+ List<ServiceProject> list = serviceProjectService.list(lambdaQueryWrapper);
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(corpName)) {
|
|
|
+ List<Long> corpIdList = corpsDescClient.listCorpIdByName(corpName);
|
|
|
+ lambdaQueryWrapper.in(CollectionUtil.isNotEmpty(corpIdList), ServiceProject::getCorpId, corpIdList);
|
|
|
+
|
|
|
+ }
|
|
|
+ if (cornId != null || StringUtils.isNotBlank(corpName)) {
|
|
|
+ List<ServiceProject> list = serviceProjectService.list(lambdaQueryWrapper);
|
|
|
+ if (!CollectionUtils.isEmpty(list)) {
|
|
|
+ itemLambdaQueryWrapper.in(ServiceProjectItem::getPId, list.stream().map(ServiceProject::getId).collect(Collectors.toList()));
|
|
|
+ } else {
|
|
|
+ ExcelUtil.export(response, "任务", "任务", new ArrayList<>(), ServiceProjectItemExcel.class);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 承做人
|
|
|
+ if (StringUtils.isNotBlank(corpName)) {
|
|
|
+ List<User> userList = userClient.userInfoByName(corpName, AuthUtil.getTenantId());
|
|
|
+ List<Long> userIds = userList.stream().map(User::getId).collect(Collectors.toList());
|
|
|
+ itemLambdaQueryWrapper.in(ServiceProjectItem::getUserid, userIds);
|
|
|
+ }
|
|
|
+ itemLambdaQueryWrapper.orderByDesc(ServiceProjectItem::getCreateTime)
|
|
|
+ .eq(deptid != null, ServiceProjectItem::getDeptid, deptid)
|
|
|
+ .eq(ServiceProjectItem::getIsDeleted, 0)
|
|
|
+ .in(ServiceProjectItem::getStatus, listStatus)
|
|
|
+ .eq(ServiceProjectItem::getBranch, branch);
|
|
|
+ List<ServiceProjectItem> list = serviceProjectItemService.list(itemLambdaQueryWrapper);
|
|
|
+ if (!CollectionUtils.isEmpty(list)) {
|
|
|
+ String[] str = new String[]{"录入", "已请核", "审核中", "审核通过", "正在结算", "结算完成", "", "追加", "退费"};
|
|
|
+ String[] frequency = new String[]{"年", "半年", "审核中", "季度", "月", "单次"};
|
|
|
+ list.forEach(e -> {
|
|
|
+ e.setStrStatus(str[e.getStatus()]);
|
|
|
+ e.setFrequency(frequency[Integer.parseInt(e.getFrequency())]);
|
|
|
+ Long corpId = serviceProjectService.getOne(new LambdaQueryWrapper<ServiceProject>()
|
|
|
+ .eq(ServiceProject::getId, e.getPId())).getCorpId();
|
|
|
+ R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(corpId);
|
|
|
+ if (corpMessage.isSuccess() && corpMessage.getData() != null) {
|
|
|
+ e.setCorpName(corpMessage.getData().getCname());
|
|
|
+ }
|
|
|
+ //任务部门
|
|
|
+ R<Dept> dept = iSysClient.getDept(e.getDeptid());
|
|
|
+ if (dept.isSuccess() && dept.getData() != null) {
|
|
|
+ e.setDeptName(dept.getData().getDeptName());
|
|
|
+ }
|
|
|
+ //承做人
|
|
|
+ R<User> userR = userClient.userInfoById(e.getUserid());
|
|
|
+ if (userR.isSuccess()) {
|
|
|
+ e.setUserName(userR.getData().getRealName());
|
|
|
+ }
|
|
|
+ //毛收入
|
|
|
+ e.setGrossIncome((e.getServiceCharge().add(e.getMatMoney())).subtract(e.getCostReturn()));
|
|
|
+ e.setProjectName(e.getPName());
|
|
|
+ });
|
|
|
+ ExcelUtil.export(response, "任务", "任务", BeanUtil.copy(list, ServiceProjectItemExcel.class), ServiceProjectItemExcel.class);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* 统计主营业务-任务、提成统计
|
|
|
@@ -907,7 +1026,6 @@ public class ProjectController {
|
|
|
* @param actualDateStart
|
|
|
* @param actualDateEnd
|
|
|
* @param userName
|
|
|
- * @param status
|
|
|
* @param branch
|
|
|
* @return
|
|
|
*/
|
|
|
@@ -946,12 +1064,12 @@ public class ProjectController {
|
|
|
IPage<ServiceProjectItem> iPage = serviceProjectItemService.page(page, itemLambdaQueryWrapper);
|
|
|
String deptIds = "";//部门
|
|
|
String userIds = "";//承做人
|
|
|
- for (ServiceProjectItem projectItem : iPage.getRecords()){
|
|
|
- if (ObjectUtil.isNotEmpty(projectItem.getDeptid())){
|
|
|
+ for (ServiceProjectItem projectItem : iPage.getRecords()) {
|
|
|
+ if (ObjectUtil.isNotEmpty(projectItem.getDeptid())) {
|
|
|
deptIds = deptIds + projectItem.getDeptid() + ",";
|
|
|
}
|
|
|
- if (ObjectUtil.isNotEmpty(projectItem.getUserid())){
|
|
|
- userIds = userIds +projectItem.getUserid() + ",";
|
|
|
+ if (ObjectUtil.isNotEmpty(projectItem.getUserid())) {
|
|
|
+ userIds = userIds + projectItem.getUserid() + ",";
|
|
|
}
|
|
|
}
|
|
|
R<List<Dept>> deptList = iSysClient.selectByDeptIds(deptIds);
|
|
|
@@ -968,14 +1086,14 @@ public class ProjectController {
|
|
|
e.setCornName(corpMessage.getData().getCname());
|
|
|
}
|
|
|
//任务部门
|
|
|
- if (e.getDeptid() != null){
|
|
|
- if (ObjectUtil.isNotEmpty(deptList)){
|
|
|
+ if (e.getDeptid() != null) {
|
|
|
+ if (ObjectUtil.isNotEmpty(deptList)) {
|
|
|
e.setDeptName(deptList.getData().stream().filter(d -> d.getId().equals(e.getDeptid())).findFirst().get().getDeptName());
|
|
|
}
|
|
|
}
|
|
|
//承做人
|
|
|
- if (e.getUserid() != null){
|
|
|
- if (ObjectUtil.isNotEmpty(userList)){
|
|
|
+ if (e.getUserid() != null) {
|
|
|
+ if (ObjectUtil.isNotEmpty(userList)) {
|
|
|
e.setUserName(userList.stream().filter(d -> d.getId().equals(e.getUserid())).findFirst().get().getRealName());
|
|
|
}
|
|
|
}
|
|
|
@@ -989,13 +1107,20 @@ public class ProjectController {
|
|
|
|
|
|
@PostMapping("/updateProjectItem")
|
|
|
public R updateProjectItem(@RequestBody ServiceProjectItem serviceProjectItem) {
|
|
|
- if (ObjectUtils.isNotNull(serviceProjectItem.getId())){
|
|
|
+ if (ObjectUtils.isNotNull(serviceProjectItem.getId())) {
|
|
|
R.fail("请选择修改条件");
|
|
|
}
|
|
|
serviceProjectItem.setTenantId(AuthUtil.getTenantId());
|
|
|
serviceProjectItem.setUpdateUser(AuthUtil.getUserId());
|
|
|
serviceProjectItem.setUpdateTime(new Date());
|
|
|
serviceProjectItem.setUpdateUserName(AuthUtil.getUser().getUserName());
|
|
|
+ if (ObjectUtils.isNotNull(serviceProjectItem.getProportion())) {
|
|
|
+ BigDecimal proportion = serviceProjectItem.getProportion().divide(new BigDecimal("100"), MathContext.DECIMAL32);
|
|
|
+ BigDecimal amount = serviceProjectItem.getServiceCharge().subtract(serviceProjectItem.getMatMoney());
|
|
|
+ serviceProjectItem.setCommission(amount.multiply(proportion, MathContext.DECIMAL32));
|
|
|
+ } else {
|
|
|
+ serviceProjectItem.setCommission(new BigDecimal("0.00"));
|
|
|
+ }
|
|
|
serviceProjectItemService.updateById(serviceProjectItem);
|
|
|
return R.data(serviceProjectItem.getId());
|
|
|
}
|
|
|
@@ -1003,13 +1128,13 @@ public class ProjectController {
|
|
|
/**
|
|
|
* 统计主营业务-任务、提成统计导出
|
|
|
*
|
|
|
- * @param beginTimeStart 任务统计开始时间
|
|
|
- * @param beginTimeEnd 任务统计结束时间
|
|
|
- * @param actualDateStart 提成统计开始时间
|
|
|
- * @param actualDateEnd 提成统计结束时间
|
|
|
- * @param userName 承做人
|
|
|
- * @param taskStatus 状态
|
|
|
- * @param branch 任务分支
|
|
|
+ * @param beginTimeStart 任务统计开始时间
|
|
|
+ * @param beginTimeEnd 任务统计结束时间
|
|
|
+ * @param actualDateStart 提成统计开始时间
|
|
|
+ * @param actualDateEnd 提成统计结束时间
|
|
|
+ * @param userName 承做人
|
|
|
+ * @param taskStatus 状态
|
|
|
+ * @param branch 任务分支
|
|
|
*/
|
|
|
@GetMapping("/statisticsExport")
|
|
|
@ApiOperation(value = "任务 提成统计导出", notes = "任务 提成统计导出")
|
|
|
@@ -1022,7 +1147,7 @@ public class ProjectController {
|
|
|
@RequestParam(name = "branch") String branch,
|
|
|
@RequestParam(name = "type") String type,
|
|
|
HttpServletResponse response
|
|
|
- ){
|
|
|
+ ) {
|
|
|
LambdaQueryWrapper<ServiceProjectItem> itemLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
itemLambdaQueryWrapper
|
|
|
.eq(ServiceProjectItem::getTenantId, AuthUtil.getTenantId())
|
|
|
@@ -1059,14 +1184,14 @@ public class ProjectController {
|
|
|
}
|
|
|
|
|
|
R<String> taskStatusName = iDictBizClient.getOneValue("task_status", String.valueOf(e.getTaskStatus()), AuthUtil.getTenantId());
|
|
|
- if (ObjectUtil.isNotEmpty(taskStatusName)){
|
|
|
+ if (ObjectUtil.isNotEmpty(taskStatusName)) {
|
|
|
e.setTaskStatusName(taskStatusName.getData());
|
|
|
}
|
|
|
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- if (type.equals("RW")){
|
|
|
+ if (type.equals("RW")) {
|
|
|
List<StatisticsExcel> excelList = new ArrayList<>();
|
|
|
list.forEach(e -> {
|
|
|
StatisticsExcel excel = new StatisticsExcel();
|
|
|
@@ -1078,7 +1203,7 @@ public class ProjectController {
|
|
|
excelList.add(excel);
|
|
|
});
|
|
|
ExcelUtil.export(response, "任务统计", "任务统计", excelList, StatisticsExcel.class);
|
|
|
- }else if (type.equals("TC")){
|
|
|
+ } else if (type.equals("TC")) {
|
|
|
List<CommissionExcel> excelList = new ArrayList<>();
|
|
|
if (ObjectUtil.isNotEmpty(list)) {
|
|
|
list.forEach(e -> {
|
|
|
@@ -1092,7 +1217,7 @@ public class ProjectController {
|
|
|
});
|
|
|
}
|
|
|
ExcelUtil.export(response, "提成统计", "提成统计", excelList, CommissionExcel.class);
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
throw new RuntimeException("用户无导出权限!");
|
|
|
}
|
|
|
}
|