first commit
This commit is contained in:
@@ -0,0 +1,138 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<artifactId>ruoyi-modules</artifactId>
|
||||
<version>3.6.1</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>ruoyi-modules-additional</artifactId>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>15</maven.compiler.source>
|
||||
<maven.compiler.target>15</maven.compiler.target>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
||||
<!-- SpringCloud Alibaba Nacos -->
|
||||
<dependency>
|
||||
<groupId>com.alibaba.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- SpringCloud Alibaba Nacos Config -->
|
||||
<dependency>
|
||||
<groupId>com.alibaba.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- SpringCloud Alibaba Sentinel -->
|
||||
<dependency>
|
||||
<groupId>com.alibaba.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- SpringBoot Actuator -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-actuator</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- Swagger UI -->
|
||||
<dependency>
|
||||
<groupId>io.springfox</groupId>
|
||||
<artifactId>springfox-swagger-ui</artifactId>
|
||||
<version>${swagger.fox.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Mysql Connector -->
|
||||
<dependency>
|
||||
<groupId>mysql</groupId>
|
||||
<artifactId>mysql-connector-java</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- RuoYi Common DataSource -->
|
||||
<dependency>
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<artifactId>ruoyi-common-datasource</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- RuoYi Common DataScope -->
|
||||
<dependency>
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<artifactId>ruoyi-common-datascope</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- RuoYi Common Log -->
|
||||
<dependency>
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<artifactId>ruoyi-common-log</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- RuoYi Common Swagger -->
|
||||
<dependency>
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<artifactId>ruoyi-common-swagger</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- nutz -->
|
||||
<dependency>
|
||||
<groupId>org.nutz</groupId>
|
||||
<artifactId>nutz-spring-boot-starter</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<artifactId>ruoyi-api-additional</artifactId>
|
||||
<version>3.6.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<artifactId>ruoyi-api-system</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>cn.afterturn</groupId>
|
||||
<artifactId>easypoi-spring-boot-starter</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<artifactId>ruoyi-api-activity</artifactId>
|
||||
<version>3.6.1</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<finalName>${project.artifactId}</finalName>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
<goal>repackage</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<configuration>
|
||||
<source>15</source>
|
||||
<target>15</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
package com.ruoyi.additional;
|
||||
|
||||
import com.ruoyi.common.core.utils.SpringUtils;
|
||||
import com.ruoyi.common.security.annotation.EnableCustomConfig;
|
||||
import com.ruoyi.common.security.annotation.EnableRyFeignClients;
|
||||
import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date ${DATE}
|
||||
* @Description
|
||||
*/
|
||||
@EnableCustomConfig
|
||||
@EnableCustomSwagger2
|
||||
@EnableRyFeignClients
|
||||
@SpringBootApplication
|
||||
public class RuoYiAdditionalApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(RuoYiAdditionalApplication.class, args);
|
||||
try {
|
||||
Dao dao = SpringUtils.getBean(Dao.class);
|
||||
dao.execute(Sqls.create("ALTER TABLE `ry-additional`.`honor` \n" +
|
||||
"MODIFY COLUMN `unitName` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '单位' AFTER `unionName`;"));
|
||||
dao.execute(Sqls.create("ALTER TABLE `ry-additional`.`honor` \n" +
|
||||
"MODIFY COLUMN `unionName` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '分工会' AFTER `jobStatus`;"));
|
||||
}catch (Exception ignored) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
package com.ruoyi.additional.config;
|
||||
|
||||
import org.apache.catalina.connector.Connector;
|
||||
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
/**
|
||||
* @ClassName TomcatConfig
|
||||
* @Description TODO
|
||||
* @Author zhaoxinyu
|
||||
* @Date 2022/12/19 13:46
|
||||
* @Version 1.0
|
||||
*/
|
||||
@Configuration
|
||||
public class TomcatConfig {
|
||||
|
||||
@Bean
|
||||
public TomcatServletWebServerFactory webServerFactory() {
|
||||
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
|
||||
factory.addConnectorCustomizers((Connector connector) -> {
|
||||
connector.setProperty("relaxedPathChars", "\"<>[\\]^`{|}");
|
||||
connector.setProperty("relaxedQueryChars", "\"<>[\\]^`{|}");
|
||||
});
|
||||
return factory;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.ruoyi.additional.constant;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 数据源
|
||||
*
|
||||
* @author jug
|
||||
* @date 2022/12/30
|
||||
*/
|
||||
@Getter
|
||||
public enum Ds {
|
||||
/**
|
||||
* 主库
|
||||
*/
|
||||
ADDITIONAL,
|
||||
|
||||
/**
|
||||
* 活动
|
||||
*/
|
||||
ACTIVITY,
|
||||
|
||||
/**
|
||||
* 系统
|
||||
*/
|
||||
SYSTEM,
|
||||
|
||||
PROPOSAL,
|
||||
|
||||
JDH;
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
package com.ruoyi.additional.constant.aidFundMember;
|
||||
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class AidFundMemberPageForm extends PageForm {
|
||||
|
||||
String unitId;
|
||||
String unionId;
|
||||
String personType;
|
||||
String userState;
|
||||
String sex;
|
||||
Integer year;
|
||||
Boolean isAudit;
|
||||
Boolean isPayed;
|
||||
}
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
package com.ruoyi.additional.controller.aidFundMember;
|
||||
|
||||
import com.ruoyi.additional.service.aidFundMember.AidFundMemberApplyService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* 基金会员申请
|
||||
*
|
||||
* @author jug
|
||||
* @date 2023/03/06
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/aidFundMember/apply")
|
||||
public class AidFundMemberApplyController {
|
||||
|
||||
@Autowired
|
||||
private AidFundMemberApplyService aidFundMemberApplyService;
|
||||
|
||||
@RequestMapping("/applyInfo")
|
||||
@RequiresPermissions("aidFundMember:apply")
|
||||
public AjaxResult applyInfo() {
|
||||
NutMap userMap = aidFundMemberApplyService.applyInfo();
|
||||
return AjaxResult.success(userMap);
|
||||
}
|
||||
|
||||
@RequestMapping("/signOut")
|
||||
@RequiresPermissions("aidFundMember:apply")
|
||||
public AjaxResult signOut() {
|
||||
aidFundMemberApplyService.doApply();
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@RequestMapping("/doApply")
|
||||
@RequiresPermissions("aidFundMember:apply")
|
||||
public AjaxResult doApply() {
|
||||
aidFundMemberApplyService.doApply();
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
package com.ruoyi.additional.controller.aidFundMember;
|
||||
|
||||
import com.ruoyi.additional.constant.aidFundMember.AidFundMemberPageForm;
|
||||
import com.ruoyi.additional.service.aidFundMember.AidFundMemberBatchJoinService;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* 基金成员批量加入
|
||||
*
|
||||
* @author jug
|
||||
* @date 2023/02/15
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/aidFundMember/batchJoin")
|
||||
public class AidFundMemberBatchJoinController {
|
||||
|
||||
@Autowired
|
||||
private AidFundMemberBatchJoinService aidFundMemberBatchJoinService;
|
||||
|
||||
@PostMapping("/pageData")
|
||||
@RequiresPermissions("aidFundMember:batchJoin")
|
||||
public AjaxResult pageData(@RequestBody AidFundMemberPageForm pageForm) {
|
||||
Pagination pagination = aidFundMemberBatchJoinService.pageData(pageForm);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@PostMapping("/batchSettings")
|
||||
@RequiresPermissions("aidFundMember:batchJoin")
|
||||
public AjaxResult batchSettings(@RequestBody String userIds[]) {
|
||||
aidFundMemberBatchJoinService.batchSettings(userIds);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
}
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
package com.ruoyi.additional.controller.aidFundMember;
|
||||
|
||||
import com.ruoyi.additional.api.domain.Audit;
|
||||
import com.ruoyi.additional.constant.aidFundMember.AidFundMemberPageForm;
|
||||
import com.ruoyi.additional.service.aidFundMember.AidFundMemberBranchUnionAuditService;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* 分工会审核
|
||||
*
|
||||
* @author jug
|
||||
* @date 2023/02/15
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/aidFundMember/branchUnionAudit")
|
||||
public class AidFundMemberBranchUnionAuditController {
|
||||
|
||||
@Autowired
|
||||
private AidFundMemberBranchUnionAuditService branchUnionAuditService;
|
||||
|
||||
@PostMapping("/pageData")
|
||||
@RequiresPermissions("aidFundMember:branchUnionAudit")
|
||||
public AjaxResult pageData(@RequestBody AidFundMemberPageForm pageForm) {
|
||||
Pagination pagination = branchUnionAuditService.pageData(pageForm);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@PostMapping("/doSubmit")
|
||||
@RequiresPermissions("aidFundMember:branchUnionAudit")
|
||||
public AjaxResult doSubmit(@RequestBody Audit audit, @RequestParam String id) {
|
||||
branchUnionAuditService.doSubmit(audit, id);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("/doRevoke")
|
||||
@RequiresPermissions("aidFundMember:branchUnionAudit")
|
||||
public AjaxResult doRevoke(@RequestParam String id) {
|
||||
branchUnionAuditService.doRevoke(id);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+73
@@ -0,0 +1,73 @@
|
||||
package com.ruoyi.additional.controller.aidFundMember;
|
||||
|
||||
import com.ruoyi.additional.api.domain.Audit;
|
||||
import com.ruoyi.additional.api.domain.aidFundMember.AidFundMemberAuditRecord;
|
||||
import com.ruoyi.additional.constant.aidFundMember.AidFundMemberPageForm;
|
||||
import com.ruoyi.additional.service.aidFundMember.AidFundMemberChangeRecordService;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/aidFundMember/changeRecord")
|
||||
@Slf4j
|
||||
public class AidFundMemberChangeRecordController {
|
||||
|
||||
@Autowired
|
||||
private AidFundMemberChangeRecordService aidFundMemberChangeRecordService;
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@PostMapping("/pageData")
|
||||
@RequiresPermissions("aidFundMember:changeRecord")
|
||||
public AjaxResult pageData(@RequestBody AidFundMemberPageForm pageForm) {
|
||||
Pagination pagination = aidFundMemberChangeRecordService.pageData(pageForm);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
/**
|
||||
* 审计信息
|
||||
*
|
||||
* @param id id
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@GetMapping("/auditInfo/{id}")
|
||||
public AjaxResult auditInfo(@PathVariable String id) {
|
||||
AidFundMemberAuditRecord record = aidFundMemberChangeRecordService.fetch(id);
|
||||
List<String> unionAuditIds = record.getUnionAuditIds();
|
||||
List<String> retirementAuditIds = record.getRetirementAuditIds();
|
||||
List<String> fundAuditIds = record.getFundAuditIds();
|
||||
|
||||
NutMap result = NutMap.NEW();
|
||||
result.setv("unionAudits", Lang.isEmpty(unionAuditIds) ? Collections.emptyList() : dao.query(Audit.class, Cnd.where("id", "in", unionAuditIds)));
|
||||
result.setv("retirementAudits", Lang.isEmpty(retirementAuditIds) ? Collections.emptyList() : dao.query(Audit.class, Cnd.where("id", "in", retirementAuditIds)));
|
||||
result.setv("fundAudits", Lang.isEmpty(fundAuditIds) ? Collections.emptyList() : dao.query(Audit.class, Cnd.where("id", "in", fundAuditIds)));
|
||||
return AjaxResult.success(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/doDelete")
|
||||
@RequiresPermissions("aidFundMember:changeRecord")
|
||||
public AjaxResult doDelete(@RequestParam String id) {
|
||||
aidFundMemberChangeRecordService.doDelete(id);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+91
@@ -0,0 +1,91 @@
|
||||
package com.ruoyi.additional.controller.aidFundMember;
|
||||
|
||||
import com.ruoyi.additional.api.domain.aidFundMember.AidFundMemberPay;
|
||||
import com.ruoyi.additional.service.aidFundMember.AidFundMemberPayService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.dao.util.Daos;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/aidFundMember/common")
|
||||
public class AidFundMemberController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private AidFundMemberPayService payService;
|
||||
|
||||
/**
|
||||
* 用户信息
|
||||
*
|
||||
* @param id id
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@GetMapping("/userInfo/{id}")
|
||||
public AjaxResult userInfo(@PathVariable String id) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
loginName,
|
||||
userName,
|
||||
sex,
|
||||
birthday,
|
||||
nation,
|
||||
position,
|
||||
jobTitle,
|
||||
political,
|
||||
mobile,
|
||||
deptName,
|
||||
unionName,
|
||||
userState,
|
||||
personType
|
||||
FROM
|
||||
`user`
|
||||
WHERE userId = @userId
|
||||
""");
|
||||
sql.setParam("userId", id);
|
||||
return AjaxResult.success(Daos.query(dao, sql.toString(), Sqls.callback.map()));
|
||||
}
|
||||
|
||||
@GetMapping("/applyRecords/{userId}")
|
||||
public AjaxResult applyRecords(@PathVariable String userId) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
afmar.*,
|
||||
u.loginName,
|
||||
u.userName,
|
||||
state.stateName
|
||||
FROM
|
||||
aid_fund_member_audit_record afmar
|
||||
LEFT JOIN audit_state state ON state.stateId = afmar.stateId
|
||||
LEFT JOIN `user` u ON u.userId = afmar.userId
|
||||
WHERE afmar.userId = @userId
|
||||
ORDER BY afmar.applyTime DESC
|
||||
""");
|
||||
sql.setParam("userId", userId);
|
||||
return AjaxResult.success(Daos.query(dao, sql.toString(), Sqls.callback.maps()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户支付记录
|
||||
*
|
||||
* @param userId 用户id
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@GetMapping("/userPayRecords/{userId}")
|
||||
public AjaxResult userPayRecords(@PathVariable String userId) {
|
||||
List<AidFundMemberPay> payRecords = payService.query(Cnd.where("userId", "=", userId).desc("year"));
|
||||
return AjaxResult.success(payRecords);
|
||||
}
|
||||
|
||||
}
|
||||
+88
@@ -0,0 +1,88 @@
|
||||
package com.ruoyi.additional.controller.aidFundMember;
|
||||
|
||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
|
||||
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||
import com.ruoyi.additional.api.domain.Audit;
|
||||
import com.ruoyi.additional.constant.aidFundMember.AidFundMemberPageForm;
|
||||
import com.ruoyi.additional.service.aidFundMember.AidFundMemberFoundationAuditService;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.ServletOutputStream;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 基金会审核
|
||||
*
|
||||
* @author jug
|
||||
* @date 2023/02/15
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/aidFundMember/foundationAudit")
|
||||
@Slf4j
|
||||
public class AidFundMemberFoundationAuditController {
|
||||
|
||||
@Autowired
|
||||
private AidFundMemberFoundationAuditService foundationAuditService;
|
||||
|
||||
@PostMapping("/pageData")
|
||||
@RequiresPermissions("aidFundMember:foundationAudit")
|
||||
public AjaxResult pageData(@RequestBody AidFundMemberPageForm pageForm) {
|
||||
Pagination pagination = foundationAuditService.pageData(pageForm);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@PostMapping("/doSubmit")
|
||||
@RequiresPermissions("aidFundMember:foundationAudit")
|
||||
public AjaxResult doSubmit(@RequestBody Audit audit, @RequestParam(name = "ids[]") List<String> ids) {
|
||||
foundationAuditService.doSubmit(audit, ids);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("/doRevoke")
|
||||
@RequiresPermissions("aidFundMember:foundationAudit")
|
||||
public AjaxResult doRevoke(@RequestParam String id) {
|
||||
foundationAuditService.doRevoke(id);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("/exportAuditUser")
|
||||
@RequiresPermissions("aidFundMember:foundationAudit")
|
||||
public void exportAuditUser(@RequestBody AidFundMemberPageForm pageForm, HttpServletResponse response) {
|
||||
try (ServletOutputStream outputStream = response.getOutputStream()) {
|
||||
List<NutMap> list = foundationAuditService.exportAuditUser(pageForm);
|
||||
|
||||
List<ExcelExportEntity> entities = new ArrayList<>();
|
||||
entities.add(new ExcelExportEntity("分工会名称", "unionName", 20));
|
||||
entities.add(new ExcelExportEntity("单位名称", "deptName", 20));
|
||||
entities.add(new ExcelExportEntity("工号", "loginName", 20));
|
||||
entities.add(new ExcelExportEntity("姓名", "userName", 20));
|
||||
entities.add(new ExcelExportEntity("身份证号", "idcard", 20));
|
||||
entities.add(new ExcelExportEntity("备注", "", 20));
|
||||
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entities, list);
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", "attachment;filename=%s".formatted(URLEncoder.encode("基金会员审核名单.xlsx", StandardCharsets.UTF_8)));
|
||||
workbook.write(outputStream);
|
||||
workbook.close();
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
package com.ruoyi.additional.controller.aidFundMember;
|
||||
|
||||
import com.ruoyi.additional.constant.aidFundMember.AidFundMemberPageForm;
|
||||
import com.ruoyi.additional.service.aidFundMember.AidFundMemberHistoryService;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/aidFundMember/historyRecord")
|
||||
@Slf4j
|
||||
public class AidFundMemberHistoryController {
|
||||
|
||||
@Autowired
|
||||
private AidFundMemberHistoryService aidFundMemberHistoryService;
|
||||
|
||||
@PostMapping("/pageData")
|
||||
@RequiresPermissions("aidFundMember:historyRecord")
|
||||
public AjaxResult pageData(@RequestBody AidFundMemberPageForm pageForm) {
|
||||
assert pageForm.getYear() != null;
|
||||
Pagination pagination = aidFundMemberHistoryService.pageData(pageForm);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/doDelete")
|
||||
@RequiresPermissions("aidFundMember:historyRecord")
|
||||
public AjaxResult doDelete(@RequestParam String id) {
|
||||
aidFundMemberHistoryService.doDelete(id);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+161
@@ -0,0 +1,161 @@
|
||||
package com.ruoyi.additional.controller.aidFundMember;
|
||||
|
||||
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.ImportParams;
|
||||
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
|
||||
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.additional.api.constant.aidFundMember.AidFundMemberPayXlsMode;
|
||||
import com.ruoyi.additional.constant.aidFundMember.AidFundMemberPageForm;
|
||||
import com.ruoyi.additional.service.aidFundMember.AidFundMemberPayService;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.ServletOutputStream;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/aidFundMember/pay")
|
||||
@Slf4j
|
||||
public class AidFundMemberPayController {
|
||||
|
||||
@Autowired
|
||||
private AidFundMemberPayService aidFundMemberPayService;
|
||||
|
||||
@PostMapping("/pageData")
|
||||
@RequiresPermissions("aidFundMember:paymentRecord")
|
||||
public AjaxResult pageData(@RequestBody AidFundMemberPageForm pageForm) {
|
||||
Pagination pagination = aidFundMemberPayService.pageData(pageForm);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出名单
|
||||
*
|
||||
* @param year 一年
|
||||
* @param userStates 用户状态
|
||||
* @param response 响应
|
||||
*/
|
||||
@PostMapping("/exportPaysByYear")
|
||||
@RequiresPermissions("aidFundMember:paymentRecord")
|
||||
public void exportPaysByYear(@RequestParam int year, @RequestParam(name = "userState[]", required = false) List<String> userStates, HttpServletResponse response) {
|
||||
try (ServletOutputStream outputStream = response.getOutputStream()) {
|
||||
List<NutMap> list = aidFundMemberPayService.exportPaysByYear(year, userStates);
|
||||
|
||||
List<ExcelExportEntity> entities = new ArrayList<>();
|
||||
entities.add(new ExcelExportEntity("年份", "year", 20));
|
||||
entities.add(new ExcelExportEntity("工号", "loginName", 20));
|
||||
entities.add(new ExcelExportEntity("姓名", "userName", 20));
|
||||
entities.add(new ExcelExportEntity("分工会名称", "unionName", 20));
|
||||
entities.add(new ExcelExportEntity("单位名称", "deptName", 20));
|
||||
entities.add(new ExcelExportEntity("扣款金额", "money", 20));
|
||||
entities.add(new ExcelExportEntity("是否新会员", "memberStatus", 20));
|
||||
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entities, list);
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", "attachment;filename=%s".formatted(URLEncoder.encode(year + "基金会员缴费名单.xlsx", StandardCharsets.UTF_8)));
|
||||
workbook.write(outputStream);
|
||||
workbook.close();
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空缴费记录
|
||||
*
|
||||
* @param year 一年
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@PostMapping("/clearPays")
|
||||
@RequiresPermissions("aidFundMember:paymentRecord")
|
||||
public AjaxResult clearPays(@RequestParam int year) {
|
||||
aidFundMemberPayService.clearPays(year);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 下载缴费记录导入xlsx模板
|
||||
*
|
||||
* @param response 响应
|
||||
*/
|
||||
@PostMapping("/downloadImportXlsxTemplate")
|
||||
@RequiresPermissions("aidFundMember:paymentRecord")
|
||||
public void downloadImportXlsxTemplate(HttpServletResponse response) {
|
||||
try (ServletOutputStream outputStream = response.getOutputStream()) {
|
||||
int year = Calendar.getInstance().get(Calendar.YEAR);
|
||||
AidFundMemberPayXlsMode payXlsMode = new AidFundMemberPayXlsMode();
|
||||
payXlsMode.setLoginName("admin");
|
||||
payXlsMode.setUserName("管理员");
|
||||
payXlsMode.setYear(year);
|
||||
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, AidFundMemberPayXlsMode.class, Lang.list(payXlsMode));
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", "attachment;filename=%s".formatted(URLEncoder.encode(year + "扣费记录模板.xlsx", StandardCharsets.UTF_8)));
|
||||
workbook.write(outputStream);
|
||||
workbook.close();
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入缴费记录
|
||||
*
|
||||
* @param file 文件
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@PostMapping("/importPayRecords")
|
||||
@RequiresPermissions("aidFundMember:paymentRecord")
|
||||
public AjaxResult importPayRecords(@RequestParam MultipartFile file) {
|
||||
try {
|
||||
List<AidFundMemberPayXlsMode> list = ExcelImportUtil.importExcel(file.getInputStream(), AidFundMemberPayXlsMode.class, new ImportParams());
|
||||
String errMsg = aidFundMemberPayService.importPayRecords(list);
|
||||
if (StrUtil.isNotBlank(errMsg)) {
|
||||
return AjaxResult.warn(errMsg);
|
||||
}
|
||||
return AjaxResult.success();
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage());
|
||||
return AjaxResult.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 改变支付状态
|
||||
*
|
||||
* @param id id
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@PostMapping("/changePayStatus")
|
||||
@RequiresPermissions("aidFundMember:paymentRecord")
|
||||
public AjaxResult changePayStatus(@RequestParam String id) {
|
||||
Sql sql = Sqls.create("UPDATE aid_fund_member_pay SET payed = !payed WHERE id=@id");
|
||||
sql.setParam("id", id);
|
||||
aidFundMemberPayService.execute(sql);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
}
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
package com.ruoyi.additional.controller.aidFundMember;
|
||||
|
||||
import com.ruoyi.additional.api.domain.Audit;
|
||||
import com.ruoyi.additional.constant.aidFundMember.AidFundMemberPageForm;
|
||||
import com.ruoyi.additional.service.aidFundMember.AidFundMemberRetireAuditService;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/aidFundMember/retireAudit")
|
||||
public class AidFundMemberRetireAuditController {
|
||||
|
||||
@Autowired
|
||||
private AidFundMemberRetireAuditService retireAuditService;
|
||||
|
||||
@PostMapping("/pageData")
|
||||
@RequiresPermissions("aidFundMember:retireAudit")
|
||||
public AjaxResult pageData(@RequestBody AidFundMemberPageForm pageForm) {
|
||||
Pagination pagination = retireAuditService.pageData(pageForm);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@PostMapping("/doSubmit")
|
||||
@RequiresPermissions("aidFundMember:retireAudit")
|
||||
public AjaxResult doSubmit(@RequestBody Audit audit, @RequestParam String id) {
|
||||
retireAuditService.doSubmit(audit, id);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("/doRevoke")
|
||||
@RequiresPermissions("aidFundMember:retireAudit")
|
||||
public AjaxResult doRevoke(@RequestParam String id) {
|
||||
retireAuditService.doRevoke(id);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+149
@@ -0,0 +1,149 @@
|
||||
package com.ruoyi.additional.controller.aidFundMember;
|
||||
|
||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
|
||||
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.ruoyi.additional.constant.aidFundMember.AidFundMemberPageForm;
|
||||
import com.ruoyi.additional.service.aidFundMember.AidFundMemberHistoryService;
|
||||
import com.ruoyi.additional.service.aidFundMember.AidFundMemberPayService;
|
||||
import com.ruoyi.additional.service.aidFundMember.AidFundMemberStandingBookManageService;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.ServletOutputStream;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 基金成员台账
|
||||
*
|
||||
* @author jug
|
||||
* @date 2023/02/17
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/aidFundMember/standingBookManage")
|
||||
@Slf4j
|
||||
public class AidFundMemberStandingBookManageController {
|
||||
|
||||
@Autowired
|
||||
private AidFundMemberStandingBookManageService aidFundMemberStandingBookManageService;
|
||||
|
||||
@Autowired
|
||||
private AidFundMemberHistoryService memberHistoryService;
|
||||
|
||||
@Autowired
|
||||
private AidFundMemberPayService aidFundMemberPayService;
|
||||
|
||||
/**
|
||||
* 页面数据
|
||||
*
|
||||
* @param pageForm 页面形式
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@PostMapping("/pageData")
|
||||
@RequiresPermissions("aidFundMember:standingBookManage")
|
||||
public AjaxResult pageData(@RequestBody AidFundMemberPageForm pageForm) {
|
||||
Pagination pagination = aidFundMemberStandingBookManageService.pageData(pageForm);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
/**
|
||||
* 备份成员
|
||||
*
|
||||
* @param year 一年
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@PostMapping("/backupMember")
|
||||
@RequiresPermissions("aidFundMember:standingBookManage")
|
||||
public AjaxResult backupMember(@RequestParam int year) {
|
||||
memberHistoryService.backupMember(year);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出新基金会员
|
||||
*
|
||||
* @param response 响应
|
||||
*/
|
||||
@PostMapping("/exportNewMember")
|
||||
@RequiresPermissions("aidFundMember:standingBookManage")
|
||||
public void exportNewMember(HttpServletResponse response) {
|
||||
try (ServletOutputStream outputStream = response.getOutputStream()) {
|
||||
List<NutMap> list = aidFundMemberStandingBookManageService.exportNewMember();
|
||||
|
||||
List<ExcelExportEntity> entities = new ArrayList<>();
|
||||
entities.add(new ExcelExportEntity("分工会名称", "unionName", 20));
|
||||
entities.add(new ExcelExportEntity("单位名称", "deptName", 20));
|
||||
entities.add(new ExcelExportEntity("工号", "loginName", 20));
|
||||
entities.add(new ExcelExportEntity("姓名", "userName", 20));
|
||||
entities.add(new ExcelExportEntity("身份证号", "idcard", 20));
|
||||
entities.add(new ExcelExportEntity("备注", "", 20));
|
||||
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entities, list);
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", "attachment;filename=%s".formatted(URLEncoder.encode(DateUtil.thisYear() + "新基金会员名单.xlsx", StandardCharsets.UTF_8)));
|
||||
workbook.write(outputStream);
|
||||
workbook.close();
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建缴费记录
|
||||
*
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@RequestMapping("/createPayList")
|
||||
@RequiresPermissions("aidFundMember:standingBookManage")
|
||||
public AjaxResult createPayList() {
|
||||
aidFundMemberPayService.createMemberPayList();
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 变更
|
||||
*
|
||||
* @param userId 用户id
|
||||
* @param changeType 变化类型
|
||||
* @param currentUnitId 当前单位id
|
||||
* @param currentThreeUnitId 当前三个单位id
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@RequestMapping("/doChange")
|
||||
@RequiresPermissions("aidFundMember:standingBookManage")
|
||||
public AjaxResult doChange(@RequestParam String userId,
|
||||
@RequestParam String changeType,
|
||||
@RequestParam(required = false) String currentUnitId,
|
||||
@RequestParam(required = false) String currentThreeUnitId) {
|
||||
aidFundMemberStandingBookManageService.doChange(userId, changeType, currentUnitId, currentThreeUnitId);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*
|
||||
* @param userId 用户id
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/doDelete")
|
||||
@RequiresPermissions("aidFundMember:standingBookManage")
|
||||
public AjaxResult doDelete(@RequestParam String userId) {
|
||||
aidFundMemberStandingBookManageService.doDelete(userId);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
}
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
package com.ruoyi.additional.controller.common;
|
||||
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/16
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/common")
|
||||
public class AdditionalCommonController {
|
||||
|
||||
@RequestMapping("getEnumSelect")
|
||||
public AjaxResult getEnumSelect(String enumName) {
|
||||
try {
|
||||
String enumPackage = "com.ruoyi.additional.api.customEnum";
|
||||
Class<Enum> clazz = (Class<Enum>) Class.forName(enumPackage + "." + enumName);
|
||||
Enum[] objs = clazz.getEnumConstants();
|
||||
List<NutMap> ls = new ArrayList<>();
|
||||
for (Enum obj : objs) {
|
||||
String name = obj.name();
|
||||
NutMap nutMap = Lang.obj2nutmap(obj);
|
||||
nutMap.put("name", name);
|
||||
ls.add(nutMap);
|
||||
}
|
||||
return AjaxResult.success(ls);
|
||||
} catch (Exception e) {
|
||||
return AjaxResult.error();
|
||||
}
|
||||
}
|
||||
}
|
||||
+342
@@ -0,0 +1,342 @@
|
||||
package com.ruoyi.additional.controller.evaluate;
|
||||
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
||||
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
|
||||
import com.ruoyi.activity.api.domain.basic.ActivityUserScope;
|
||||
import com.ruoyi.additional.api.constant.honor.HonorAuditState;
|
||||
import com.ruoyi.additional.api.constant.reimbursement.ReimbursementState;
|
||||
import com.ruoyi.additional.api.domain.evaluate.Evaluate;
|
||||
import com.ruoyi.additional.api.domain.evaluate.EvaluateApply;
|
||||
import com.ruoyi.additional.constant.Ds;
|
||||
import com.ruoyi.additional.service.evaluate.EvaluateApplyService;
|
||||
import com.ruoyi.additional.util.ProModuleDS;
|
||||
import com.ruoyi.common.core.constant.Roles;
|
||||
import com.ruoyi.common.core.constant.SecurityConstants;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.domain.R;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.utils.DateUtils;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.jdh.api.domain.secondLevelJdh.UnionCadre;
|
||||
import com.ruoyi.system.api.RemoteDictService;
|
||||
import com.ruoyi.system.api.RemoteSysLocalProcessService;
|
||||
import com.ruoyi.system.api.domain.*;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.entity.Record;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.dao.util.Daos;
|
||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||
import org.nutz.ioc.aop.Aop;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/6
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/evaluate/applyEvaluate")
|
||||
public class EvaluateApplyController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private EvaluateApplyService evaluateApplyService;
|
||||
|
||||
@Autowired
|
||||
private RemoteSysLocalProcessService localProcessService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("additional:evaluate:applyEvaluate")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "year", required = false) String year,
|
||||
@RequestParam(value = "evaluateId", required = false) String evaluateId,
|
||||
@RequestParam(value = "honorType", required = false) String honorType) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("app.evaluateId", "=", evaluateId);
|
||||
cnd.andEX("year(applyTime)", "=", year);
|
||||
cnd.andEX("e.honorTypeId", "=", honorType);
|
||||
if (!AuthUtil.hasAnyRoles("admin") || (!AuthUtil.hasAnyRoles("admin") && AuthUtil.hasAnyRoles("H10"))) {
|
||||
cnd.and("app.userid", "=", SecurityUtils.getUserId());
|
||||
}
|
||||
Pagination pagination = evaluateApplyService.pageData(pageForm, cnd);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@PostMapping("saveForm")
|
||||
@RequiresPermissions("additional:evaluate:applyEvaluate")
|
||||
public AjaxResult saveForm(@RequestBody EvaluateApply evaluateApply) {
|
||||
|
||||
if (!"8a8b455b964a41f2bbf18a4896cbd83e".equals(evaluateApply.getHonorTypeId())) {
|
||||
DynamicDataSourceContextHolder.push("system");
|
||||
List<SysUnion> unionList = dao.query(SysUnion.class, Cnd.NEW());
|
||||
DynamicDataSourceContextHolder.clear();
|
||||
Map<String, String> collect = unionList.stream().collect(Collectors.toMap(SysUnion::getId, SysUnion::getUnionName));
|
||||
String s = collect.get(evaluateApply.getUnionId());
|
||||
evaluateApply.setApplyUnionName(StrUtil.isNotBlank(s) ? s : "");
|
||||
}
|
||||
if (Strings.isNotBlank(evaluateApply.getId())) {
|
||||
evaluateApplyService.updateIgnoreNull(evaluateApply);
|
||||
} else {
|
||||
//判断有没有申请过
|
||||
SqlExpressionGroup group = Cnd.exps("userId", "=", SecurityUtils.getUserId());
|
||||
int count = evaluateApplyService.count(Cnd.NEW().and("evaluateId", "=", evaluateApply.getEvaluateId()).and(group));
|
||||
if (count > 0) {
|
||||
return AjaxResult.error("抱歉,您已申请过此评优评先,无法提交");
|
||||
}
|
||||
evaluateApply.setApplyTime(DateUtil.today());
|
||||
evaluateApply.setStateId(1400);
|
||||
evaluateApplyService.insert(evaluateApply);
|
||||
}
|
||||
String processUniqueId = "EVALUATE_APPLY@" + evaluateApply.getId();
|
||||
// 创建实例
|
||||
localProcessService.initCreateInstance(
|
||||
processUniqueId,
|
||||
evaluateApply.getId(),
|
||||
"[评优评先申请]" + SecurityUtils.getNickName(),
|
||||
"/evaluate/applyEvaluate",
|
||||
null,
|
||||
SecurityConstants.INNER
|
||||
);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("doSubmit")
|
||||
@DSTransactional
|
||||
@RequiresPermissions("additional:evaluate:applyEvaluate")
|
||||
public AjaxResult doSubmit(@RequestBody EvaluateApply evaluateApply) {
|
||||
if (evaluateApply.getStateId() != null) {
|
||||
// 先完成当前节点的任务
|
||||
localProcessService.completeReturnTask("EVALUATE_APPLY@" + evaluateApply.getId(), SecurityConstants.INNER);
|
||||
}
|
||||
|
||||
String taskNodeName;
|
||||
String formUrl;
|
||||
Integer taskNodeKey;
|
||||
Long roleId;
|
||||
if ("8a8b455b964a41f2bbf18a4896cbd83e".equals(evaluateApply.getHonorTypeId())) {
|
||||
taskNodeName = "待单位审核";
|
||||
taskNodeKey = HonorAuditState.UNIT_READY;
|
||||
formUrl = "/evaluate/evaluateUnitAudit";
|
||||
roleId = Roles.UNIT_SJ;
|
||||
} else {
|
||||
taskNodeName = "待工会审核";
|
||||
taskNodeKey = HonorAuditState.UNION_READY;
|
||||
formUrl = "/evaluate/evaluateUnionAudit";
|
||||
roleId = Roles.FGH_ADMIN;
|
||||
}
|
||||
|
||||
evaluateApply.setUserId(SecurityUtils.getUserId());
|
||||
|
||||
if (!"8a8b455b964a41f2bbf18a4896cbd83e".equals(evaluateApply.getHonorTypeId())) {
|
||||
DynamicDataSourceContextHolder.push("system");
|
||||
List<SysUnion> unionList = dao.query(SysUnion.class, Cnd.NEW());
|
||||
DynamicDataSourceContextHolder.clear();
|
||||
Map<String, String> collect = unionList.stream().collect(Collectors.toMap(SysUnion::getId, SysUnion::getUnionName));
|
||||
String s = collect.get(evaluateApply.getUnionId());
|
||||
evaluateApply.setApplyUnionName(StrUtil.isNotBlank(s) ? s : "");
|
||||
}
|
||||
|
||||
if (Strings.isNotBlank(evaluateApply.getId())) {
|
||||
evaluateApply.setStateId("8a8b455b964a41f2bbf18a4896cbd83e".equals(evaluateApply.getHonorTypeId()) ? HonorAuditState.UNIT_READY : HonorAuditState.UNION_READY);
|
||||
evaluateApply.setUnitAuditId(null);
|
||||
evaluateApply.setUnionAuditId(null);
|
||||
evaluateApply.setPartyAuditId(null);
|
||||
evaluateApply.setSchoolAuditId(null);
|
||||
evaluateApplyService.update(evaluateApply);
|
||||
} else {
|
||||
//判断时间有没有过
|
||||
Evaluate eva = evaluateApplyService.dao().fetch(Evaluate.class, evaluateApply.getEvaluateId());
|
||||
DateTime currentTime = cn.hutool.core.date.DateUtil.date();
|
||||
DateTime targetTimeStr = cn.hutool.core.date.DateUtil.parse(eva.getEndTime());
|
||||
|
||||
if (cn.hutool.core.date.DateUtil.compare(currentTime, targetTimeStr) > 0) {
|
||||
return AjaxResult.error("抱歉,申请时间已过,无法提交");
|
||||
}
|
||||
//判断有没有申请过
|
||||
SqlExpressionGroup group = Cnd.exps("userId", "=", SecurityUtils.getUserId());
|
||||
int count = evaluateApplyService.count(Cnd.NEW().and("evaluateId", "=", evaluateApply.getEvaluateId()).and(group));
|
||||
if (count > 0) {
|
||||
return AjaxResult.error("抱歉,您已申请过此评优评先,无法提交");
|
||||
}
|
||||
|
||||
evaluateApply.setApplyTime(DateUtils.getDate());
|
||||
evaluateApply.setStateId("8a8b455b964a41f2bbf18a4896cbd83e".equals(evaluateApply.getHonorTypeId()) ? HonorAuditState.UNIT_READY : HonorAuditState.UNION_READY);
|
||||
evaluateApplyService.insert(evaluateApply);
|
||||
//TODO:发短信后续加上
|
||||
}
|
||||
|
||||
String processUniqueId = "EVALUATE_APPLY@" + evaluateApply.getId();
|
||||
// 创建实例
|
||||
localProcessService.initCreateInstance(
|
||||
processUniqueId,
|
||||
evaluateApply.getId(),
|
||||
"[评优评先申请]" + SecurityUtils.getNickName(),
|
||||
"/evaluate/applyEvaluate",
|
||||
null,
|
||||
SecurityConstants.INNER
|
||||
);
|
||||
|
||||
// 获取负责人
|
||||
R<List<String>> assignments = localProcessService.getAssignments(SecurityUtils.getUnionId(),
|
||||
null,
|
||||
roleId,
|
||||
SecurityConstants.INNER);
|
||||
List<String> loginNameList = assignments.getData();
|
||||
|
||||
localProcessService.initCreateTask(
|
||||
processUniqueId,
|
||||
String.valueOf(taskNodeKey),
|
||||
taskNodeName,
|
||||
loginNameList,
|
||||
formUrl,
|
||||
null,
|
||||
SecurityConstants.INNER
|
||||
);
|
||||
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@GetMapping("findOne/{id}")
|
||||
public AjaxResult findOne(@PathVariable String id) {
|
||||
if (StrUtil.isBlank(id)) {
|
||||
return AjaxResult.warn("参数错误");
|
||||
}
|
||||
return AjaxResult.success(evaluateApplyService.findOne(id));
|
||||
}
|
||||
|
||||
@PostMapping("doDelete/{id}")
|
||||
@DSTransactional
|
||||
@RequiresPermissions("additional:evaluate:applyEvaluate")
|
||||
public AjaxResult doDelete(@PathVariable String id) {
|
||||
if (StrUtil.isBlank(id)) {
|
||||
return AjaxResult.warn("参数错误");
|
||||
}
|
||||
localProcessService.deleteProcessInstance("EVALUATE_APPLY@" + id, SecurityConstants.INNER);
|
||||
return AjaxResult.success(evaluateApplyService.doDelete(id));
|
||||
}
|
||||
|
||||
@GetMapping("getHonor")
|
||||
public AjaxResult getHonor(String type, String userId) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
h.*,
|
||||
hbs.NAME as prizeName,
|
||||
bs.name as levelName
|
||||
FROM
|
||||
honor h
|
||||
LEFT JOIN honor_basic_settings hbs ON h.prize = hbs.id
|
||||
LEFT JOIN honor_basic_settings bs ON bs.id = hbs.`level`
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (StrUtil.isNotBlank(type) && "single".equals(type)) {
|
||||
cnd.and("h.honorType", "=", "8a8b455b964a41f2bbf18a4896cbd83e");
|
||||
cnd.and("h.userId", "=", StrUtil.isNotBlank(userId) ? userId : SecurityUtils.getUserId());
|
||||
}
|
||||
if (StrUtil.isNotBlank(type) && "list".equals(type)) {
|
||||
cnd.and("h.honorType", "=", "6b9e26a9467f49ae88fbd3951377e0f8");
|
||||
}
|
||||
|
||||
|
||||
cnd.desc("h.grantDate");
|
||||
sql.setCondition(cnd);
|
||||
return AjaxResult.success(evaluateApplyService.listMap(sql));
|
||||
}
|
||||
|
||||
@RequestMapping("verifyApply/{id}")
|
||||
public AjaxResult verifyApply(@PathVariable String id) {
|
||||
if (StrUtil.isBlank(id)) {
|
||||
return AjaxResult.warn("参数错误");
|
||||
}
|
||||
return evaluateApplyService.verifyApply(id);
|
||||
}
|
||||
|
||||
@RequestMapping("getActivityScope")
|
||||
public AjaxResult getActivityScope(String groupId) {
|
||||
if (StrUtil.isBlank(groupId)) {
|
||||
return AjaxResult.warn("参数错误");
|
||||
}
|
||||
int count = ProModuleDS.exec(Ds.ACTIVITY, () -> {
|
||||
return dao.count(ActivityUserScope.class, Cnd.where("groupId", "=", groupId).and("userId", "=", SecurityUtils.getUserId()));
|
||||
});
|
||||
return AjaxResult.success(count);
|
||||
}
|
||||
|
||||
@PostMapping("getUnionInfo/{id}")
|
||||
@RequiresPermissions("additional:evaluate:applyEvaluate")
|
||||
public AjaxResult getUnionInfo(@PathVariable String id) {
|
||||
if (StrUtil.isBlank(id)) {
|
||||
return AjaxResult.warn("参数错误");
|
||||
}
|
||||
|
||||
DynamicDataSourceContextHolder.push("system");
|
||||
List<Record> userList = dao.query("user", Cnd.where("unionId", "=", id));
|
||||
|
||||
//工会人数
|
||||
int unionPeoNum = userList.size();
|
||||
//会员人数
|
||||
long memberCount = userList.stream().filter(o -> o.getInt("member") == 1).count();
|
||||
//委员人数
|
||||
int leaderNumber = 0;
|
||||
Record unionCadre = dao.fetch("sys_union_cadre", Cnd.where("unionId", "=", id).and("joining", "=", 1)
|
||||
.limit(1).desc("session"));
|
||||
if (unionCadre != null) {
|
||||
leaderNumber = dao.count("sys_union_cadre", Cnd.where("unionId", "=", id).and("joining", "=", 1).and("session", "=", unionCadre.getString("session")));
|
||||
}
|
||||
//工会主席
|
||||
List<SysUserRole> userRoles = dao.query(SysUserRole.class, Cnd.where("roleId", "=", Roles.SLAVE_UNION_ZX));
|
||||
List<Long> list = userRoles.stream().map(SysUserRole::getUserId).collect(Collectors.toList());
|
||||
String leaderUserName = userList.stream().filter(o -> list.contains(o.getLong("userid"))).map(o -> o.getString("username")).collect(Collectors.joining(","));
|
||||
DynamicDataSourceContextHolder.clear();
|
||||
|
||||
return AjaxResult.success(Map.of("unionPeoNum", unionPeoNum, "memberNumber", memberCount, "leaderNumber", leaderNumber, "username", leaderUserName));
|
||||
}
|
||||
|
||||
@PostMapping("unionGroupsByUnionId/{id}")
|
||||
@RequiresPermissions("additional:evaluate:applyEvaluate")
|
||||
public AjaxResult unionGroupsByUnionId(@PathVariable String id) {
|
||||
if (StrUtil.isBlank(id)) {
|
||||
return AjaxResult.warn("参数错误");
|
||||
}
|
||||
DynamicDataSourceContextHolder.push("system");
|
||||
if (!AuthUtil.hasAnyRoles("admin,A06,flwyh01,H04")) {
|
||||
List<SysUserRole> userRole = dao.query(SysUserRole.class, Cnd.where("roleId", "=", Roles.UNION_GROUP_LEADER)
|
||||
.and("userId", "=", SecurityUtils.getUserId()));
|
||||
List<String> ids = userRole.stream().map(SysUserRole::getUnionGroupId).collect(Collectors.toList());
|
||||
if (Lang.isEmpty(ids)) {
|
||||
DynamicDataSourceContextHolder.clear();
|
||||
return null;
|
||||
}
|
||||
List<SysUnionGroup> list = dao.query(SysUnionGroup.class, Cnd.where("id", "in", ids).asc("groupCode"));
|
||||
DynamicDataSourceContextHolder.clear();
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
if (Strings.isNotBlank(id)) {
|
||||
List<SysUnionGroup> list = dao.query(SysUnionGroup.class, Cnd.where("unionId", "=", id).asc("groupCode"));
|
||||
DynamicDataSourceContextHolder.clear();
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
List<SysUnionGroup> list = dao.query(SysUnionGroup.class, Cnd.NEW().asc("groupCode"));
|
||||
DynamicDataSourceContextHolder.clear();
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
}
|
||||
+171
@@ -0,0 +1,171 @@
|
||||
package com.ruoyi.additional.controller.evaluate;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.additional.api.domain.evaluate.Evaluate;
|
||||
import com.ruoyi.additional.api.domain.evaluate.EvaluateApply;
|
||||
import com.ruoyi.additional.service.evaluate.EvaluateManageService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.Logical;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/6
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/evaluate/evaluateManage")
|
||||
public class EvaluateManageController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private EvaluateManageService evaluateManageService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions(value = {"additional:evaluate:addEvaluate"
|
||||
, "additional:evaluate:evaluateManage"}, logical = Logical.OR)
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "year", required = false) String year,
|
||||
@RequestParam(value = "evaluateId", required = false) String evaluateId) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("year(startTime)", "=", year);
|
||||
cnd.andEX("e.id", "=", evaluateId);
|
||||
if (!AuthUtil.hasAnyRoles("admin") || AuthUtil.hasAnyRoles("H10")) {
|
||||
cnd.and("e.userid", "=", SecurityUtils.getUserId());
|
||||
}
|
||||
cnd.groupBy("e.id");
|
||||
if (StrUtil.isNotBlank(pageForm.getPageOrderName()) && StrUtil.isNotBlank(pageForm.getPageOrderBy())) {
|
||||
cnd.orderBy(pageForm.getPageOrderName(), pageForm.getPageOrderBy());
|
||||
}
|
||||
Pagination pagination = evaluateManageService.pageData(pageForm, cnd);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@RequestMapping("getEvaluateList")
|
||||
@RequiresPermissions(value = {"additional:evaluate:addEvaluate"
|
||||
, "additional:evaluate:evaluateManage"
|
||||
, "additional:evaluate:applyEvaluate"}, logical = Logical.OR)
|
||||
public AjaxResult getEvaluateList(String userId) {
|
||||
return AjaxResult.success(evaluateManageService.getEvaluateList(userId));
|
||||
}
|
||||
|
||||
@PostMapping("doHandle")
|
||||
@RequiresPermissions(value = {"additional:evaluate:addEvaluate"
|
||||
, "additional:evaluate:evaluateManage"}, logical = Logical.OR)
|
||||
public AjaxResult doHandle(@RequestBody Evaluate evaluate) {
|
||||
evaluate.setUserid(SecurityUtils.getUserId());
|
||||
if (StrUtil.isBlank(evaluate.getId())) {
|
||||
evaluateManageService.add(evaluate);
|
||||
} else {
|
||||
evaluateManageService.edit(evaluate);
|
||||
}
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@GetMapping("findOne/{id}")
|
||||
@RequiresPermissions(value = {"additional:evaluate:addEvaluate"
|
||||
, "additional:evaluate:evaluateManage"}, logical = Logical.OR)
|
||||
public AjaxResult findOne(@PathVariable String id) {
|
||||
if (StrUtil.isBlank(id)) {
|
||||
return AjaxResult.warn("参数错误");
|
||||
}
|
||||
return AjaxResult.success(evaluateManageService.findOne(id));
|
||||
}
|
||||
|
||||
@PostMapping("doDelete/{id}")
|
||||
@RequiresPermissions(value = {"additional:evaluate:addEvaluate"
|
||||
, "additional:evaluate:evaluateManage"}, logical = Logical.OR)
|
||||
public AjaxResult doDelete(@PathVariable String id) {
|
||||
evaluateManageService.clear(Cnd.where("id", "=", id));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@GetMapping("getHonor")
|
||||
@RequiresPermissions(value = {"additional:evaluate:addEvaluate"
|
||||
, "additional:evaluate:evaluateManage"}, logical = Logical.OR)
|
||||
public AjaxResult getHonor() {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
h2.NAME AS parentName,
|
||||
h3.id as `value`,
|
||||
h3.parentId,
|
||||
h3.name as label
|
||||
FROM
|
||||
honor_basic_settings h1
|
||||
LEFT JOIN honor_basic_settings h2 ON h1.id = h2.parentId
|
||||
LEFT JOIN honor_basic_settings h3 ON h2.id = h3.parentId
|
||||
WHERE
|
||||
h1.CODE = 'H1000'
|
||||
$condition
|
||||
""");
|
||||
List<NutMap> list = evaluateManageService.listMap(sql.setCondition(Cnd.NEW().asc("h3.code")));
|
||||
List<NutMap> parentList = evaluateManageService.listMap(sql.setCondition(Cnd.NEW().groupBy("parentId").asc("h2.code")));
|
||||
|
||||
List<NutMap> result = new ArrayList<>();
|
||||
parentList.forEach(item -> {
|
||||
NutMap m = new NutMap();
|
||||
|
||||
m.put("value", item.getString("parentId"));
|
||||
m.put("label", item.getString("parentName"));
|
||||
|
||||
List<NutMap> collect = list.stream().filter(o -> o.getString("parentId").equals(item.getString("parentId"))).collect(Collectors.toList());
|
||||
m.put("children", collect);
|
||||
result.add(m);
|
||||
});
|
||||
return AjaxResult.success(result);
|
||||
}
|
||||
|
||||
@GetMapping("getApplyData")
|
||||
@RequiresPermissions(value = {"additional:evaluate:addEvaluate"
|
||||
, "additional:evaluate:evaluateManage"}, logical = Logical.OR)
|
||||
public AjaxResult getApplyData(String id) {
|
||||
List<EvaluateApply> list = evaluateManageService.dao().query(EvaluateApply.class, Cnd.where("evaluateId", "=", id));
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
//根据年份查询荣誉列表
|
||||
@GetMapping("getEvaluateByYear")
|
||||
public AjaxResult getEvaluateByYear(Integer year, String type) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
e.*,
|
||||
e.id AS evaluateId,
|
||||
e.NAME AS evaluateName,
|
||||
us.groupName,
|
||||
hb.NAME AS honorTypeName,
|
||||
bs.NAME AS honorName
|
||||
FROM
|
||||
evaluate e
|
||||
LEFT JOIN activity_user_scope us ON us.groupId = e.groupId
|
||||
LEFT JOIN honor_basic_settings hb ON hb.id = e.honorTypeId
|
||||
LEFT JOIN honor_basic_settings bs ON bs.id = e.honorId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("year(startTime)", "=", year);
|
||||
if (StrUtil.isNotBlank(type)) {
|
||||
cnd.and("honorTypeId", "=", type);
|
||||
}
|
||||
cnd.groupBy("e.id");
|
||||
cnd.desc("startTime");
|
||||
sql.setCondition(cnd);
|
||||
return AjaxResult.success(evaluateManageService.listMap(sql));
|
||||
}
|
||||
}
|
||||
+222
@@ -0,0 +1,222 @@
|
||||
package com.ruoyi.additional.controller.evaluate;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
||||
import com.ruoyi.additional.api.constant.honor.HonorAuditState;
|
||||
import com.ruoyi.additional.api.domain.Audit;
|
||||
import com.ruoyi.additional.api.domain.evaluate.EvaluateApply;
|
||||
import com.ruoyi.additional.service.evaluate.EvaluateManageService;
|
||||
import com.ruoyi.common.core.constant.Roles;
|
||||
import com.ruoyi.common.core.constant.SecurityConstants;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.domain.R;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.Logical;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.system.api.RemoteSysLocalProcessService;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.ioc.aop.Aop;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/6
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/evaluate/evaluatePartyAudit")
|
||||
public class EvaluatePartyAuditController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private EvaluateManageService evaluateManageService;
|
||||
|
||||
|
||||
@Autowired
|
||||
private RemoteSysLocalProcessService localProcessService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions(value = {"additional:evaluate:evaluatePartyAudit"}, logical = Logical.OR)
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "year", required = false) String year,
|
||||
@RequestParam(value = "honorType", required = false) String honorType,
|
||||
@RequestParam(value = "evaluateId", required = false) String evaluateId,
|
||||
@RequestParam(value = "isAudit", required = false) Boolean isAudit,
|
||||
@RequestParam(value = "unionId", required = false) String unionId,
|
||||
@RequestParam(value = "unitId", required = false) String unitId) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
us.userName,
|
||||
ha.*,
|
||||
state.stateName,
|
||||
state.stateColor,
|
||||
us.deptName as unitName,
|
||||
e.name as evaluateName
|
||||
FROM
|
||||
`evaluate_apply` ha
|
||||
LEFT JOIN evaluate e on e.id = ha.evaluateId
|
||||
LEFT JOIN `user` us ON us.userId = ha.userId
|
||||
LEFT JOIN audit_state state ON state.stateId=ha.stateId
|
||||
$condition
|
||||
""");
|
||||
if (!AuthUtil.hasRole("admin")) {
|
||||
cnd.and("ha.unitId", "=", SecurityUtils.getDeptId());
|
||||
}
|
||||
cnd.andEX("ha.evaluateId", "=", evaluateId);
|
||||
cnd.andEX("ha.unitId", "=", unitId);
|
||||
cnd.andEX("ha.unionId", "=", unionId);
|
||||
cnd.andEX("YEAR(ha.applyTime)", "=", year);
|
||||
cnd.andEX("ha.honorTypeId", "=", honorType);
|
||||
|
||||
/*if (isAudit == null) {
|
||||
cnd.and(Cnd.exps(Cnd.exps("partyAuditId", "is not", null).and("ha.stateId", ">", 1600)).or("ha.stateId", "=", 1700));
|
||||
} else if (isAudit) {
|
||||
cnd.and("partyAuditId", "is not", null).and("partyAuditId", "!=", "").and("ha.stateId", ">", 1400);
|
||||
} else {
|
||||
cnd.and("ha.stateId", "=", 1700);
|
||||
}*/
|
||||
if (isAudit == null) {
|
||||
cnd.and("ha.stateId", ">=", 1470);
|
||||
} else if (isAudit) {
|
||||
cnd.and("ha.stateId", ">", 1470);
|
||||
} else {
|
||||
cnd.and("ha.stateId", "=", 1470);
|
||||
}
|
||||
if (StrUtil.isNotBlank(pageForm.getPageOrderName()) && StrUtil.isNotBlank(pageForm.getPageOrderBy())) {
|
||||
cnd.orderBy(pageForm.getPageOrderName(), pageForm.getPageOrderBy());
|
||||
}
|
||||
if (Strings.isNotBlank(pageForm.getSearchName()) && Strings.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
cnd.where().andLike(pageForm.getSearchName(), pageForm.getSearchKeyword());
|
||||
}
|
||||
cnd.desc("ha.applyTime");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = evaluateManageService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@PostMapping("doReview")
|
||||
@DSTransactional
|
||||
@RequiresPermissions(value = {"additional:evaluate:evaluatePartyAudit"}, logical = Logical.OR)
|
||||
public AjaxResult doReview(@RequestBody Audit audit,
|
||||
@RequestParam(name = "id", required = false) String id,
|
||||
@RequestParam(name = "pass", required = false) Integer pass) {
|
||||
|
||||
audit.setAuditor(SecurityUtils.getUserId());
|
||||
audit.setLoginName(SecurityUtils.getUsername());
|
||||
audit.setUserName(SecurityUtils.getNickName());
|
||||
audit.setAuditTime(new Date());
|
||||
audit = dao.insert(audit);
|
||||
|
||||
String taskNodeName = "";
|
||||
EvaluateApply evaluateApply = dao.fetch(EvaluateApply.class, id);
|
||||
if (pass == 1) {
|
||||
taskNodeName="基层党组织审核拒绝";
|
||||
evaluateApply.setStateId(HonorAuditState.PARTY_REJECTED);
|
||||
} else if (pass == 2) {
|
||||
taskNodeName="基层党组织审核退回修改";
|
||||
evaluateApply.setStateId(HonorAuditState.PARTY_BACK_MODIFY);
|
||||
} else {
|
||||
taskNodeName="待校工会审核";
|
||||
evaluateApply.setStateId(HonorAuditState.SCHOOL_READY);
|
||||
}
|
||||
evaluateApply.setPartyAuditId(audit.getId());
|
||||
dao.updateIgnoreNull(evaluateApply);
|
||||
|
||||
String processUniqueId = "EVALUATE_APPLY@" + id;
|
||||
// 先完成当前节点的任务
|
||||
localProcessService.completeTask(processUniqueId, String.valueOf(HonorAuditState.PARTY_READY), taskNodeName, SecurityConstants.INNER);
|
||||
|
||||
if (pass == 1) {
|
||||
// 审核不通过,流程结束
|
||||
localProcessService.completeProcess(processUniqueId, true, SecurityConstants.INNER);
|
||||
} else if (pass==2){
|
||||
// 退回修改,流程继续
|
||||
Sql sql = Sqls.create("select loginName FROM `user` where userId=@userId").setParam("userId", evaluateApply.getUserId());
|
||||
sql.setCallback(Sqls.callback.map());
|
||||
dao.execute(sql);
|
||||
NutMap userMap = (NutMap) sql.getResult();
|
||||
localProcessService.initCreateTask(
|
||||
processUniqueId,
|
||||
String.valueOf(HonorAuditState.PARTY_BACK_MODIFY),
|
||||
taskNodeName,
|
||||
List.of(userMap.getString("loginName")),
|
||||
"/evaluate/applyEvaluate",
|
||||
null,
|
||||
SecurityConstants.INNER
|
||||
);
|
||||
}else if (pass == 3) {
|
||||
// 审核通过,往下走流程
|
||||
// 获取负责人
|
||||
R<List<String>> assignments = localProcessService.getAssignments(null, null, Roles.SCHOOL_ADMIN, SecurityConstants.INNER);
|
||||
List<String> loginNameList = assignments.getData();
|
||||
|
||||
localProcessService.initCreateTask(
|
||||
processUniqueId,
|
||||
String.valueOf(HonorAuditState.SCHOOL_READY),
|
||||
"待校工会审核",
|
||||
loginNameList,
|
||||
"/evaluate/evaluateSchoolAudit",
|
||||
null,
|
||||
SecurityConstants.INNER
|
||||
);
|
||||
}
|
||||
//TODO:后面审核发短信
|
||||
/*EvaluateApply evaluateApply = dao.fetch(EvaluateApply.class, id);
|
||||
Sys_user applyUser = dao.fetch(Sys_user.class, evaluateApply.getUserId());
|
||||
Evaluate evaluate = dao.fetch(Evaluate.class, evaluateApply.getEvaluateId());
|
||||
if (pass) {
|
||||
CndPlus cndPlus = CndPlus.create();
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
u.*
|
||||
FROM
|
||||
sys_user_role ur
|
||||
LEFT JOIN sys_user u ON ur.userid = u.id
|
||||
$condition
|
||||
""");
|
||||
cndPlus.andExcludeEmpty("ur.roleId", "=", Roles.XGHGLY);
|
||||
sql.setCondition(cndPlus);
|
||||
List<NutMap> userList = evaluateApplyViService.listMap(sql);
|
||||
for (NutMap map : userList) {
|
||||
String msg = "%s老师您好,%s老师于%s申请的【%s】评优评先需要您的审核!"
|
||||
.formatted(map.getString("username"), applyUser.getUsername(), evaluateApply.getApplyTime(), evaluate.getName());
|
||||
msgService.sendMessage(map.getString("loginname"), msg);
|
||||
}
|
||||
} else {
|
||||
String msg = "%s老师您好,您于%s申请的【%s】评优评先,在院级党组织审核时被驳回!"
|
||||
.formatted(applyUser.getUsername(), evaluateApply.getApplyTime(), evaluate.getName());
|
||||
msgService.sendMessage(applyUser.getLoginname(), msg);
|
||||
}*/
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("rollBack")
|
||||
@DSTransactional
|
||||
@RequiresPermissions(value = {"additional:evaluate:evaluatePartyAudit"}, logical = Logical.OR)
|
||||
public AjaxResult rollBack(String id, Boolean type) {
|
||||
EvaluateApply evaluateApply = dao.fetch(EvaluateApply.class, id);
|
||||
|
||||
dao.clear("audit", Cnd.NEW().and("id", "=", evaluateApply.getPartyAuditId()));
|
||||
dao.update(EvaluateApply.class, Chain.make("stateId", HonorAuditState.PARTY_READY).add("partyAuditId", null), Cnd.where("id", "=", id));
|
||||
localProcessService.revokeTask("EVALUATE_APPLY@" + id, String.valueOf(HonorAuditState.PARTY_READY), SecurityConstants.INNER);
|
||||
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
+354
@@ -0,0 +1,354 @@
|
||||
package com.ruoyi.additional.controller.evaluate;
|
||||
|
||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import cn.hutool.core.io.IoUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.core.util.ZipUtil;
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
||||
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
|
||||
import com.ruoyi.additional.api.constant.honor.HonorAuditState;
|
||||
import com.ruoyi.additional.api.constant.reimbursement.ReimbursementState;
|
||||
import com.ruoyi.additional.api.domain.Audit;
|
||||
import com.ruoyi.additional.api.domain.evaluate.EvaluateApply;
|
||||
import com.ruoyi.additional.service.evaluate.EvaluateManageService;
|
||||
import com.ruoyi.common.core.constant.SecurityConstants;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.domain.SysFile;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.Logical;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.jdh.api.domain.secondLevelJdh.MeetingState;
|
||||
import com.ruoyi.system.api.RemoteDictService;
|
||||
import com.ruoyi.system.api.RemoteSysLocalProcessService;
|
||||
import com.ruoyi.system.api.domain.SysDictData;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.entity.Record;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.ioc.aop.Aop;
|
||||
import org.nutz.lang.Files;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.ServletOutputStream;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.*;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Path;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/6
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/evaluate/evaluateSchoolAudit")
|
||||
public class EvaluateSchoolAuditController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private EvaluateManageService evaluateManageService;
|
||||
|
||||
@Autowired
|
||||
private RemoteDictService remoteDictService;
|
||||
@Autowired
|
||||
private RemoteSysLocalProcessService localProcessService;
|
||||
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions(value = {"additional:evaluate:evaluateSchoolAudit"}, logical = Logical.OR)
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "year", required = false) String year,
|
||||
@RequestParam(value = "honorType", required = false) String honorType,
|
||||
@RequestParam(value = "evaluateId", required = false) String evaluateId,
|
||||
@RequestParam(value = "isAudit", required = false) Boolean isAudit,
|
||||
@RequestParam(value = "unionId", required = false) String unionId,
|
||||
@RequestParam(value = "unitId", required = false) String unitId) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
us.userName,
|
||||
ha.*,
|
||||
state.stateName,
|
||||
state.stateColor,
|
||||
us.deptName as unitName,
|
||||
e.name as evaluateName
|
||||
FROM
|
||||
`evaluate_apply` ha
|
||||
LEFT JOIN evaluate e on e.id = ha.evaluateId
|
||||
LEFT JOIN `user` us ON us.userId = ha.userId
|
||||
LEFT JOIN audit_state state ON state.stateId=ha.stateId
|
||||
$condition
|
||||
""");
|
||||
/*if (!AuthUtil.hasRole("admin")) {
|
||||
cnd.and("ha.unitId", "=", SecurityUtils.getDeptId());
|
||||
}*/
|
||||
cnd.andEX("ha.evaluateId", "=", evaluateId);
|
||||
cnd.andEX("ha.unitId", "=", unitId);
|
||||
cnd.andEX("ha.unionId", "=", unionId);
|
||||
cnd.andEX("YEAR(ha.applyTime)", "=", year);
|
||||
cnd.andEX("ha.honorTypeId", "=", honorType);
|
||||
|
||||
/*if (isAudit == null) {
|
||||
cnd.and(Cnd.exps(Cnd.exps("schoolAuditId", "is not", null).and("ha.stateId", ">", 1700)).or("ha.stateId", "=", 1800));
|
||||
} else if (isAudit) {
|
||||
cnd.and("schoolAuditId", "is not", null).and("schoolAuditId", "!=", "").and("ha.stateId", ">", 1400);
|
||||
} else {
|
||||
cnd.and("ha.stateId", "=", 1800);
|
||||
}*/
|
||||
if (isAudit == null) {
|
||||
cnd.and("ha.stateId", ">=", 1500);
|
||||
} else if (isAudit) {
|
||||
cnd.and("ha.stateId", ">", 1500);
|
||||
} else {
|
||||
cnd.and("ha.stateId", "=", 1500);
|
||||
}
|
||||
if (StrUtil.isNotBlank(pageForm.getPageOrderName()) && StrUtil.isNotBlank(pageForm.getPageOrderBy())) {
|
||||
cnd.orderBy(pageForm.getPageOrderName(), pageForm.getPageOrderBy());
|
||||
}
|
||||
if (Strings.isNotBlank(pageForm.getSearchName()) && Strings.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
cnd.where().andLike(pageForm.getSearchName(), pageForm.getSearchKeyword());
|
||||
}
|
||||
cnd.desc("ha.applyTime");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = evaluateManageService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@PostMapping("doReview")
|
||||
@DSTransactional
|
||||
@RequiresPermissions(value = {"additional:evaluate:evaluateSchoolAudit"}, logical = Logical.OR)
|
||||
public AjaxResult doReview(@RequestBody Audit audit,
|
||||
@RequestParam(name = "id", required = false) String id,
|
||||
@RequestParam(name = "pass", required = false) Integer pass) {
|
||||
|
||||
audit.setAuditor(SecurityUtils.getUserId());
|
||||
audit.setLoginName(SecurityUtils.getUsername());
|
||||
audit.setUserName(SecurityUtils.getNickName());
|
||||
audit.setAuditTime(new Date());
|
||||
audit = dao.insert(audit);
|
||||
|
||||
String taskNodeName = "";
|
||||
EvaluateApply evaluateApply = dao.fetch(EvaluateApply.class, id);
|
||||
if (pass == 1) {
|
||||
taskNodeName = "校工会审核拒绝";
|
||||
evaluateApply.setStateId(HonorAuditState.SCHOOL_REJECTED);
|
||||
} else if (pass == 2) {
|
||||
taskNodeName = "校工会审核退回修改";
|
||||
evaluateApply.setStateId(HonorAuditState.SCHOOL_BACK_MODIFY);
|
||||
} else {
|
||||
taskNodeName = "校工会审核通过";
|
||||
evaluateApply.setStateId(HonorAuditState.SCHOOL_PASS);
|
||||
}
|
||||
evaluateApply.setSchoolAuditId(audit.getId());
|
||||
dao.updateIgnoreNull(evaluateApply);
|
||||
|
||||
String processUniqueId = "EVALUATE_APPLY@" + id;
|
||||
// 先完成当前节点的任务
|
||||
localProcessService.completeTask(processUniqueId, String.valueOf(HonorAuditState.SCHOOL_READY), taskNodeName, SecurityConstants.INNER);
|
||||
|
||||
if (pass != 2) {
|
||||
// 审核不通过,流程结束
|
||||
localProcessService.completeProcess(processUniqueId, true, SecurityConstants.INNER);
|
||||
} else if (pass == 2) {
|
||||
// 退回修改,流程继续
|
||||
Sql sql = Sqls.create("select loginName FROM `user` where userId=@userId").setParam("userId", evaluateApply.getUserId());
|
||||
sql.setCallback(Sqls.callback.map());
|
||||
dao.execute(sql);
|
||||
NutMap userMap = (NutMap) sql.getResult();
|
||||
localProcessService.initCreateTask(
|
||||
processUniqueId,
|
||||
String.valueOf(HonorAuditState.SCHOOL_BACK_MODIFY),
|
||||
taskNodeName,
|
||||
List.of(userMap.getString("loginName")),
|
||||
"/evaluate/applyEvaluate",
|
||||
null,
|
||||
SecurityConstants.INNER
|
||||
);
|
||||
}
|
||||
|
||||
//TODO:后面审核发短信
|
||||
/*EvaluateApply evaluateApply = dao.fetch(EvaluateApply.class, id);
|
||||
Sys_user applyUser = dao.fetch(Sys_user.class, evaluateApply.getUserId());
|
||||
Evaluate evaluate = dao.fetch(Evaluate.class, evaluateApply.getEvaluateId());
|
||||
String msg = "";
|
||||
if (pass) {
|
||||
msg = "%s老师您好,您于%s申请的【%s】评优评先已经审核通过!";
|
||||
} else {
|
||||
msg = "%s老师您好,您于%s申请的【%s】评优评先,在校工会审核时被驳回!";
|
||||
}
|
||||
msg.formatted(applyUser.getUsername(), evaluateApply.getApplyTime(), evaluate.getName());
|
||||
msgService.sendMessage(applyUser.getLoginname(), msg);*/
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("rollBack")
|
||||
@DSTransactional
|
||||
@RequiresPermissions(value = {"additional:evaluate:evaluateSchoolAudit"}, logical = Logical.OR)
|
||||
public AjaxResult rollBack(String id, Boolean type) {
|
||||
EvaluateApply evaluateApply = dao.fetch(EvaluateApply.class, id);
|
||||
|
||||
dao.clear("audit", Cnd.NEW().and("id", "=", evaluateApply.getSchoolAuditId()));
|
||||
dao.update(EvaluateApply.class, Chain.make("stateId", HonorAuditState.SCHOOL_READY).add("schoolAuditId", null), Cnd.where("id", "=", id));
|
||||
localProcessService.revokeTask("EVALUATE_APPLY@" + id, String.valueOf(HonorAuditState.SCHOOL_READY), SecurityConstants.INNER);
|
||||
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@RequestMapping("exportTableData")
|
||||
public void exportTableData(Boolean isAudit, String year, String unionId, String unitId, String honorType, Boolean honorTypeBoolean,
|
||||
HttpServletResponse response) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
us.userName,
|
||||
ha.*,
|
||||
state.stateName,
|
||||
state.stateColor,
|
||||
us.deptName as unitName,
|
||||
us.unionName
|
||||
FROM
|
||||
`evaluate_apply` ha
|
||||
LEFT JOIN `user` us ON us.userId = ha.userId
|
||||
LEFT JOIN audit_state state ON state.stateId=ha.stateId
|
||||
$condition
|
||||
""");
|
||||
cnd.andEX("us.unionId", "=", unionId);
|
||||
cnd.andEX("us.deptId", "=", unitId);
|
||||
cnd.andEX("YEAR(ha.applyTime)", "=", year);
|
||||
cnd.and("ha.honorTypeId", "=", honorType);
|
||||
|
||||
if (isAudit == null) {
|
||||
cnd.and(Cnd.exps("schoolAuditId", "is not", null).or("ha.stateId", "=", 1500));
|
||||
} else if (isAudit) {
|
||||
cnd.and("schoolAuditId", "is not", null);
|
||||
} else {
|
||||
cnd.and("ha.stateId", "=", 1500);
|
||||
}
|
||||
|
||||
cnd.desc("ha.applyTime");
|
||||
sql.setCondition(cnd);
|
||||
|
||||
List<NutMap> dataList = evaluateManageService.listMap(sql);
|
||||
|
||||
List<SysDictData> userSex = remoteDictService.dictType("sys_user_sex").getData();
|
||||
Map<String, String> sexMap = userSex.stream().collect(Collectors.toMap(SysDictData::getDictValue, SysDictData::getDictLabel));
|
||||
|
||||
DynamicDataSourceContextHolder.push("system");
|
||||
List<SysDictData> dictDataList = dao.query(SysDictData.class, Cnd.where("dict_type", "=", "political_status"));
|
||||
DynamicDataSourceContextHolder.clear();
|
||||
Map<String, String> dictMap = dictDataList.stream().collect(Collectors.toMap(SysDictData::getDictValue, SysDictData::getDictLabel));
|
||||
|
||||
dataList.forEach(item -> {
|
||||
item.put("userSex", sexMap.get(item.getString("userSex")));
|
||||
item.put("political", dictMap.get(item.getString("political")) != null ? dictMap.get(item.getString("political")) : "");
|
||||
});
|
||||
|
||||
List<ExcelExportEntity> entityList = new ArrayList<>();
|
||||
if (honorTypeBoolean) {
|
||||
entityList.add(new ExcelExportEntity("申请人姓名", "userName", 20));
|
||||
entityList.add(new ExcelExportEntity("工号", "loginname", 20));
|
||||
entityList.add(new ExcelExportEntity("性别", "userSex", 20));
|
||||
entityList.add(new ExcelExportEntity("政治面貌", "political", 20));
|
||||
entityList.add(new ExcelExportEntity("职称", "jobTitle", 20));
|
||||
entityList.add(new ExcelExportEntity("所属单位", "unitName", 20));
|
||||
entityList.add(new ExcelExportEntity("所属工会", "unionName", 20));
|
||||
} else {
|
||||
entityList.add(new ExcelExportEntity("申请单位", "unitName", 20));
|
||||
entityList.add(new ExcelExportEntity("负责人", "unitLeader", 20));
|
||||
entityList.add(new ExcelExportEntity("单位人数", "unitPeopleNum", 20));
|
||||
entityList.add(new ExcelExportEntity("单位女职工人数", "unitFemalePeopleNum", 20));
|
||||
entityList.add(new ExcelExportEntity("单位会员人数", "memberNum", 20));
|
||||
}
|
||||
|
||||
entityList.add(new ExcelExportEntity("申请时间", "applyTime", 20));
|
||||
entityList.add(new ExcelExportEntity("曾受何种奖励", "award", 40));
|
||||
entityList.add(new ExcelExportEntity("主要事迹", "deeds", 40));
|
||||
|
||||
try {
|
||||
|
||||
String disposition = "attachment;filename=" + URLEncoder.encode("评优评先汇总表.xlsx", "utf-8");
|
||||
response.setCharacterEncoding("utf-8");
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", disposition);
|
||||
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), entityList, dataList);
|
||||
workbook.write(response.getOutputStream());
|
||||
} catch (Exception e) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping("downloadAnnex")
|
||||
public void downloadAnnex(@RequestBody String[] ids, HttpServletResponse response) throws IOException {
|
||||
|
||||
ServletOutputStream outputStream = response.getOutputStream();
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", "attachment;filename=%s".formatted(URLEncoder.encode("评优评先附件汇总.zip", StandardCharsets.UTF_8)));
|
||||
|
||||
/**
|
||||
* 创建临时文件夹
|
||||
*/
|
||||
Path evaluateBatchExportTempDir = java.nio.file.Files.createTempDirectory("evaluateBatchExportTempDir");
|
||||
|
||||
for (String id : ids) {
|
||||
String fileName = "";
|
||||
|
||||
EvaluateApply evaluateApply = dao.fetch(EvaluateApply.class, id);
|
||||
Record user = dao.fetch("user", Cnd.where("userId", "=", evaluateApply.getUserId()));
|
||||
if (Strings.isNotBlank(user.getString("unionid"))) {
|
||||
fileName += user.getString("unionname") + "-";
|
||||
}
|
||||
fileName += user.getString("username");
|
||||
|
||||
File f = Files.createDirIfNoExists(evaluateBatchExportTempDir + "/" + fileName);
|
||||
|
||||
List<SysFile> files = evaluateApply.getFiles();
|
||||
|
||||
if (files != null) {
|
||||
for (SysFile file : files) {
|
||||
|
||||
InputStream inputStream = HttpUtil.createGet(file.getLink()).execute().bodyStream();
|
||||
File file1 = new File(f.getPath() + "/" + file.getName());
|
||||
FileOutputStream fileOutputStream = new FileOutputStream(file1);
|
||||
byte[] bytes = new byte[1024];
|
||||
int fileLength = 0;
|
||||
while ((fileLength = inputStream.read(bytes)) != -1) {
|
||||
fileOutputStream.write(bytes, 0, fileLength);
|
||||
}
|
||||
inputStream.close();
|
||||
fileOutputStream.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
File zipFile = ZipUtil.zip(evaluateBatchExportTempDir.toString());
|
||||
|
||||
FileInputStream zipFileInputStream = new FileInputStream(zipFile);
|
||||
IoUtil.copy(zipFileInputStream, outputStream);
|
||||
zipFileInputStream.close();
|
||||
outputStream.close();
|
||||
|
||||
FileUtil.del(evaluateBatchExportTempDir);
|
||||
}
|
||||
}
|
||||
+193
@@ -0,0 +1,193 @@
|
||||
package com.ruoyi.additional.controller.evaluate;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.deepoove.poi.XWPFTemplate;
|
||||
import com.deepoove.poi.config.Configure;
|
||||
import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
|
||||
import com.ruoyi.additional.service.evaluate.EvaluateManageService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.Logical;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/7
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/evaluate/evaluateSummary")
|
||||
public class EvaluateSummaryController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private EvaluateManageService evaluateManageService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions(value = {"additional:evaluate:evaluateSummary"}, logical = Logical.OR)
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "year", required = false) String year,
|
||||
@RequestParam(value = "honorType", required = false) String honorType,
|
||||
@RequestParam(value = "evaluateId", required = false) String evaluateId,
|
||||
@RequestParam(value = "unionId", required = false) String unionId,
|
||||
@RequestParam(value = "unitId", required = false) String unitId) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
ea.*,
|
||||
e.NAME AS evaluateName,
|
||||
us.deptName AS unitName,
|
||||
us.userName
|
||||
FROM
|
||||
evaluate_apply ea
|
||||
LEFT JOIN evaluate e ON e.id = ea.evaluateId
|
||||
LEFT JOIN `user` us ON us.userId = ea.userId
|
||||
$condition
|
||||
""");
|
||||
|
||||
cnd.andEX("ea.evaluateId", "=", evaluateId);
|
||||
cnd.andEX("YEAR(ea.applyTime)", "=", year);
|
||||
cnd.andEX("ea.unionid", "=", unionId);
|
||||
cnd.andEX("us.deptId", "=", unitId);
|
||||
cnd.andEX("ea.honorTypeId", "=", honorType);
|
||||
|
||||
if (!AuthUtil.hasAnyRoles("admin") || AuthUtil.hasAnyRoles("H10")) {
|
||||
cnd.and("e.userid", "=", SecurityUtils.getUserId());
|
||||
}
|
||||
|
||||
cnd.and("ea.stateId", "=", 1530);
|
||||
cnd.desc("ea.applyTime");
|
||||
sql.setCondition(cnd);
|
||||
|
||||
Pagination pagination = evaluateManageService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@RequestMapping("exportResult")
|
||||
public void exportResult(String year, HttpServletResponse response) throws IOException {
|
||||
|
||||
NutMap map = new NutMap();
|
||||
|
||||
map.put("year", year);
|
||||
|
||||
Sql countSql = Sqls.create("""
|
||||
SELECT
|
||||
e.NAME AS evaluateName,
|
||||
count(*) AS num
|
||||
FROM
|
||||
evaluate_apply ea
|
||||
LEFT JOIN evaluate e ON e.id = ea.evaluateId
|
||||
WHERE
|
||||
stateId = '1530'
|
||||
AND YEAR ( applyTime ) = @year
|
||||
GROUP BY
|
||||
ea.evaluateId
|
||||
""").setParam("year", year);
|
||||
List<NutMap> list = evaluateManageService.listMap(countSql);
|
||||
String evaluateStr = "";
|
||||
if (Lang.isNotEmpty(list)) {
|
||||
for (NutMap item : list) {
|
||||
evaluateStr += item.getString("num") + (item.getString("evaluateName").contains("家") ? "家" : "名")
|
||||
+ item.getString("evaluateName") + ",";
|
||||
}
|
||||
}
|
||||
map.put("evaluateStr", Lang.isNotEmpty(list) ? evaluateStr.substring(0, evaluateStr.length() - 1) : evaluateStr);
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
e.NAME AS evaluateName,
|
||||
GROUP_CONCAT( us.unionName, '、' ) AS evaluateUnit
|
||||
FROM
|
||||
evaluate_apply ea
|
||||
LEFT JOIN evaluate e ON e.id = ea.evaluateId
|
||||
LEFT JOIN `user` us ON us.userId = ea.userId
|
||||
WHERE
|
||||
stateId = '1530'
|
||||
AND YEAR ( applyTime ) = @year
|
||||
AND ea.honorTypeId = '6b9e26a9467f49ae88fbd3951377e0f8'
|
||||
GROUP BY
|
||||
ea.evaluateId
|
||||
""").setParam("year", year);
|
||||
|
||||
List<NutMap> list1 = evaluateManageService.listMap(sql);
|
||||
list1.forEach(item -> item.put("evaluateUnit", item.getString("evaluateUnit").substring(0, item.getString("evaluateUnit").length() - 1)));
|
||||
map.put("evaluateList", list1);
|
||||
|
||||
Sql singleSql = Sqls.create("""
|
||||
SELECT
|
||||
e.NAME AS evaluateName,
|
||||
GROUP_CONCAT( us.deptName, ':', us.userName ) AS evaluateUserList
|
||||
FROM
|
||||
evaluate_apply ea
|
||||
LEFT JOIN evaluate e ON e.id = ea.evaluateId
|
||||
LEFT JOIN `user` us ON us.userId = ea.userId
|
||||
WHERE
|
||||
stateId = '1530'
|
||||
AND YEAR ( applyTime ) = @year
|
||||
AND ea.honorTypeId = '8a8b455b964a41f2bbf18a4896cbd83e'
|
||||
GROUP BY
|
||||
ea.evaluateId
|
||||
""").setParam("year", year);
|
||||
|
||||
List<NutMap> singleList = evaluateManageService.listMap(singleSql);
|
||||
|
||||
List<NutMap> evaluateSingleList = new ArrayList<>();
|
||||
for (NutMap item : singleList) {
|
||||
NutMap m = NutMap.NEW();
|
||||
String evaluateName = item.getString("evaluateName");
|
||||
String evaluateUserList = item.getString("evaluateUserList");
|
||||
if (StrUtil.isNotBlank(evaluateUserList)) {
|
||||
String[] split = evaluateUserList.split(",");
|
||||
List<NutMap> l = new ArrayList<>();
|
||||
for (String s : split) {
|
||||
l.add(NutMap.NEW().addv("user", s));
|
||||
m.put("evaluateUserList", l);
|
||||
}
|
||||
} else {
|
||||
m.put("evaluateUserList", new ArrayList<>());
|
||||
}
|
||||
m.put("evaluateName", evaluateName);
|
||||
evaluateSingleList.add(m);
|
||||
}
|
||||
|
||||
map.put("evaluateSingleList", evaluateSingleList);
|
||||
|
||||
LoopRowTableRenderPolicy policy = new LoopRowTableRenderPolicy();
|
||||
Configure config = Configure.builder().bind("evaluateSingleList", policy).bind("evaluateList", policy)
|
||||
.bind("evaluateUserList", policy).build();
|
||||
|
||||
String fileName = "评优评先公示结果";
|
||||
|
||||
String disposition = "attachment;filename=" + URLEncoder.encode(fileName + ".docx", StandardCharsets.UTF_8);
|
||||
response.setCharacterEncoding("utf-8");
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", disposition);
|
||||
|
||||
InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("templates/evaluate/evaluate.docx");
|
||||
assert inputStream != null;
|
||||
XWPFTemplate.compile(inputStream, config).render(map, response.getOutputStream());
|
||||
inputStream.close();
|
||||
}
|
||||
}
|
||||
+226
@@ -0,0 +1,226 @@
|
||||
package com.ruoyi.additional.controller.evaluate;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
||||
import com.ruoyi.additional.api.constant.honor.HonorAuditState;
|
||||
import com.ruoyi.additional.api.domain.Audit;
|
||||
import com.ruoyi.additional.api.domain.evaluate.EvaluateApply;
|
||||
import com.ruoyi.additional.service.evaluate.EvaluateManageService;
|
||||
import com.ruoyi.common.core.constant.Roles;
|
||||
import com.ruoyi.common.core.constant.SecurityConstants;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.domain.R;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.Logical;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.system.api.RemoteSysLocalProcessService;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.ioc.aop.Aop;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/6
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/evaluate/evaluateUnionAudit")
|
||||
public class EvaluateUnionAuditController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private EvaluateManageService evaluateManageService;
|
||||
|
||||
|
||||
@Autowired
|
||||
private RemoteSysLocalProcessService localProcessService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions(value = {"additional:evaluate:evaluateUnionAudit"}, logical = Logical.OR)
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "year", required = false) String year,
|
||||
@RequestParam(value = "honorType", required = false) String honorType,
|
||||
@RequestParam(value = "evaluateId", required = false) String evaluateId,
|
||||
@RequestParam(value = "isAudit", required = false) Boolean isAudit,
|
||||
@RequestParam(value = "unionId", required = false) String unionId,
|
||||
@RequestParam(value = "unitId", required = false) String unitId) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
us.userName,
|
||||
ha.*,
|
||||
state.stateName,
|
||||
state.stateColor,
|
||||
us.deptName as unitName,
|
||||
e.name as evaluateName
|
||||
FROM
|
||||
`evaluate_apply` ha
|
||||
LEFT JOIN evaluate e on e.id = ha.evaluateId
|
||||
LEFT JOIN `user` us ON us.userId = ha.userId
|
||||
LEFT JOIN audit_state state ON state.stateId=ha.stateId
|
||||
$condition
|
||||
""");
|
||||
if (!AuthUtil.hasRole("admin")) {
|
||||
cnd.and("ha.unionId", "=", SecurityUtils.getUnionId());
|
||||
}
|
||||
cnd.andEX("ha.evaluateId", "=", evaluateId);
|
||||
cnd.andEX("ha.unitId", "=", unitId);
|
||||
cnd.andEX("ha.unionId", "=", unionId);
|
||||
cnd.andEX("YEAR(ha.applyTime)", "=", year);
|
||||
cnd.andEX("ha.honorTypeId", "=", honorType);
|
||||
|
||||
/*if (isAudit == null) {
|
||||
cnd.and(Cnd.exps(Cnd.exps("unionAuditId", "is not", null).and("ha.stateId", ">", 1500)).or("ha.stateId", "=", 1600));
|
||||
} else if (isAudit) {
|
||||
cnd.and("unionAuditId", "is not", null).and("unionAuditId", "!=", "").and("ha.stateId", ">", 1400);
|
||||
} else {
|
||||
cnd.and("ha.stateId", "=", 1600);
|
||||
}*/
|
||||
if (isAudit == null) {
|
||||
cnd.and("ha.stateId", ">=", 1440);
|
||||
} else if (isAudit) {
|
||||
cnd.and("ha.stateId", ">", 1440);
|
||||
} else {
|
||||
cnd.and("ha.stateId", "=", 1440);
|
||||
}
|
||||
if (StrUtil.isNotBlank(pageForm.getPageOrderName()) && StrUtil.isNotBlank(pageForm.getPageOrderBy())) {
|
||||
cnd.orderBy(pageForm.getPageOrderName(), pageForm.getPageOrderBy());
|
||||
}
|
||||
if (Strings.isNotBlank(pageForm.getSearchName()) && Strings.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
cnd.where().andLike(pageForm.getSearchName(), pageForm.getSearchKeyword());
|
||||
}
|
||||
cnd.desc("ha.applyTime");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = evaluateManageService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@PostMapping("doReview")
|
||||
@DSTransactional
|
||||
@RequiresPermissions(value = {"additional:evaluate:evaluateUnionAudit"}, logical = Logical.OR)
|
||||
public AjaxResult doReview(@RequestBody Audit audit,
|
||||
@RequestParam(name = "id", required = false) String id,
|
||||
@RequestParam(name = "pass", required = false) Integer pass) {
|
||||
|
||||
audit.setAuditor(SecurityUtils.getUserId());
|
||||
audit.setLoginName(SecurityUtils.getUsername());
|
||||
audit.setUserName(SecurityUtils.getNickName());
|
||||
audit.setAuditTime(new Date());
|
||||
audit = dao.insert(audit);
|
||||
|
||||
String taskNodeName = "";
|
||||
EvaluateApply evaluateApply = dao.fetch(EvaluateApply.class, id);
|
||||
if (pass == 1) {
|
||||
taskNodeName="分工会审核拒绝";
|
||||
evaluateApply.setStateId(HonorAuditState.UNION_REJECTED);
|
||||
} else if (pass == 2) {
|
||||
taskNodeName="分工会审核退回修改";
|
||||
evaluateApply.setStateId(HonorAuditState.UNION_BACK_MODIFY);
|
||||
} else {
|
||||
taskNodeName="基层党组织待审核";
|
||||
evaluateApply.setStateId(HonorAuditState.PARTY_READY);
|
||||
}
|
||||
evaluateApply.setUnionAuditId(audit.getId());
|
||||
dao.updateIgnoreNull(evaluateApply);
|
||||
|
||||
String processUniqueId = "EVALUATE_APPLY@" + id;
|
||||
// 先完成当前节点的任务
|
||||
localProcessService.completeTask(processUniqueId, String.valueOf(HonorAuditState.UNION_READY), taskNodeName, SecurityConstants.INNER);
|
||||
|
||||
if (pass == 1) {
|
||||
// 审核不通过,流程结束
|
||||
localProcessService.completeProcess(processUniqueId, true, SecurityConstants.INNER);
|
||||
}else if (pass==2){
|
||||
// 退回修改,流程继续
|
||||
Sql sql = Sqls.create("select loginName FROM `user` where userId=@userId").setParam("userId", evaluateApply.getUserId());
|
||||
sql.setCallback(Sqls.callback.map());
|
||||
dao.execute(sql);
|
||||
NutMap userMap = (NutMap) sql.getResult();
|
||||
localProcessService.initCreateTask(
|
||||
processUniqueId,
|
||||
String.valueOf(HonorAuditState.UNION_BACK_MODIFY),
|
||||
taskNodeName,
|
||||
List.of(userMap.getString("loginName")),
|
||||
"/evaluate/applyEvaluate",
|
||||
null,
|
||||
SecurityConstants.INNER
|
||||
);
|
||||
} else if (pass == 3) {
|
||||
// 审核通过,往下走流程
|
||||
// 获取负责人
|
||||
R<List<String>> assignments = localProcessService.getAssignments(SecurityUtils.getUnionId(),
|
||||
null,
|
||||
Roles.UNIT_SJ,
|
||||
SecurityConstants.INNER);
|
||||
List<String> loginNameList = assignments.getData();
|
||||
|
||||
localProcessService.initCreateTask(
|
||||
processUniqueId,
|
||||
String.valueOf(HonorAuditState.PARTY_READY),
|
||||
"待基层党组织审核",
|
||||
loginNameList,
|
||||
"/evaluate/evaluatePartyAudit",
|
||||
null,
|
||||
SecurityConstants.INNER
|
||||
);
|
||||
}
|
||||
//TODO:后面审核发短信
|
||||
/*EvaluateApply evaluateApply = dao.fetch(EvaluateApply.class, id);
|
||||
Sys_user applyUser = dao.fetch(Sys_user.class, evaluateApply.getUserId());
|
||||
Evaluate evaluate = dao.fetch(Evaluate.class, evaluateApply.getEvaluateId());
|
||||
if (pass) {
|
||||
CndPlus cndPlus = CndPlus.create();
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
u.*
|
||||
FROM
|
||||
sys_user_role ur
|
||||
LEFT JOIN sys_user u ON ur.userid = u.id
|
||||
$condition
|
||||
""");
|
||||
cndPlus.andExcludeEmpty("ur.roleId", "=", Roles.GH03);
|
||||
cndPlus.andExcludeEmpty("ur.unionId", "=", ((Sys_union) io.v.nutz.web.commons.utils.ShiroUtil.getPrincipalProperty("union")).getId());
|
||||
sql.setCondition(cndPlus);
|
||||
List<NutMap> userList = evaluateApplyViService.listMap(sql);
|
||||
for (NutMap map : userList) {
|
||||
String msg = "%s老师您好,%s老师于%s申请的【%s】评优评先需要您的审核!"
|
||||
.formatted(map.getString("username"), applyUser.getUsername(), evaluateApply.getApplyTime(), evaluate.getName());
|
||||
msgService.sendMessage(map.getString("loginname"), msg);
|
||||
}
|
||||
} else {
|
||||
String msg = "%s老师您好,您于%s申请的【%s】评优评先,在院级工会审核时被驳回!"
|
||||
.formatted(applyUser.getUsername(), evaluateApply.getApplyTime(), evaluate.getName());
|
||||
msgService.sendMessage(applyUser.getLoginname(), msg);
|
||||
}*/
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("rollBack")
|
||||
@DSTransactional
|
||||
@RequiresPermissions(value = {"additional:evaluate:evaluateUnionAudit"}, logical = Logical.OR)
|
||||
public AjaxResult rollBack(String id, Boolean type) {
|
||||
EvaluateApply evaluateApply = dao.fetch(EvaluateApply.class, id);
|
||||
|
||||
dao.clear("audit", Cnd.NEW().and("id", "=", evaluateApply.getUnionAuditId()));
|
||||
dao.update(EvaluateApply.class, Chain.make("stateId", HonorAuditState.UNION_READY).add("unionAuditId", null), Cnd.where("id", "=", id));
|
||||
localProcessService.revokeTask("EVALUATE_APPLY@" + id, String.valueOf(HonorAuditState.UNION_READY), SecurityConstants.INNER);
|
||||
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
+217
@@ -0,0 +1,217 @@
|
||||
package com.ruoyi.additional.controller.evaluate;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
||||
import com.ruoyi.additional.api.constant.honor.HonorAuditState;
|
||||
import com.ruoyi.additional.api.constant.reimbursement.ReimbursementState;
|
||||
import com.ruoyi.additional.api.domain.Audit;
|
||||
import com.ruoyi.additional.api.domain.evaluate.EvaluateApply;
|
||||
import com.ruoyi.additional.service.evaluate.EvaluateManageService;
|
||||
import com.ruoyi.common.core.constant.Roles;
|
||||
import com.ruoyi.common.core.constant.SecurityConstants;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.domain.R;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.Logical;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.system.api.RemoteSysLocalProcessService;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.ioc.aop.Aop;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/6
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/evaluate/evaluateUnitAudit")
|
||||
public class EvaluateUnitAuditController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private EvaluateManageService evaluateManageService;
|
||||
|
||||
@Autowired
|
||||
private RemoteSysLocalProcessService localProcessService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions(value = {"additional:evaluate:evaluateUnitAudit"}, logical = Logical.OR)
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "year", required = false) String year,
|
||||
@RequestParam(value = "evaluateId", required = false) String evaluateId,
|
||||
@RequestParam(value = "isAudit", required = false) Boolean isAudit,
|
||||
@RequestParam(value = "unionId", required = false) String unionId,
|
||||
@RequestParam(value = "unitId", required = false) String unitId) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
us.userName,
|
||||
ha.*,
|
||||
state.stateName,
|
||||
state.stateColor,
|
||||
us.deptName as unitName,
|
||||
e.name as evaluateName
|
||||
FROM
|
||||
`evaluate_apply` ha
|
||||
LEFT JOIN evaluate e on e.id = ha.evaluateId
|
||||
LEFT JOIN `user` us ON us.userId = ha.userId
|
||||
LEFT JOIN audit_state state ON state.stateId=ha.stateId
|
||||
$condition
|
||||
""");
|
||||
if (!AuthUtil.hasRole("admin")) {
|
||||
cnd.and("ha.unitId", "=", SecurityUtils.getDeptId());
|
||||
}
|
||||
cnd.andEX("ha.evaluateId", "=", evaluateId);
|
||||
cnd.andEX("ha.unitId", "=", unitId);
|
||||
cnd.andEX("ha.unionId", "=", unionId);
|
||||
cnd.andEX("YEAR(ha.applyTime)", "=", year);
|
||||
|
||||
if (isAudit == null) {
|
||||
cnd.and("ha.stateId", ">=", 1410).and("ha.honorTypeId", "=", "8a8b455b964a41f2bbf18a4896cbd83e");
|
||||
} else if (isAudit) {
|
||||
cnd.and("ha.stateId", ">", 1410).and("ha.honorTypeId", "=", "8a8b455b964a41f2bbf18a4896cbd83e");
|
||||
} else {
|
||||
cnd.and("ha.stateId", "=", 1410).and("ha.honorTypeId", "=", "8a8b455b964a41f2bbf18a4896cbd83e");
|
||||
}
|
||||
if (StrUtil.isNotBlank(pageForm.getPageOrderName()) && StrUtil.isNotBlank(pageForm.getPageOrderBy())) {
|
||||
cnd.orderBy(pageForm.getPageOrderName(), pageForm.getPageOrderBy());
|
||||
}
|
||||
if (Strings.isNotBlank(pageForm.getSearchName()) && Strings.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
cnd.where().andLike(pageForm.getSearchName(), pageForm.getSearchKeyword());
|
||||
}
|
||||
cnd.desc("ha.applyTime");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = evaluateManageService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@PostMapping("doReview")
|
||||
@DSTransactional
|
||||
@RequiresPermissions(value = {"additional:evaluate:evaluateUnitAudit"}, logical = Logical.OR)
|
||||
public AjaxResult doReview(@RequestBody Audit audit,
|
||||
@RequestParam(name = "id", required = false) String id,
|
||||
@RequestParam(name = "pass", required = false) Integer pass) {
|
||||
audit.setAuditor(SecurityUtils.getUserId());
|
||||
audit.setLoginName(SecurityUtils.getUsername());
|
||||
audit.setUserName(SecurityUtils.getNickName());
|
||||
audit.setAuditTime(new Date());
|
||||
audit = dao.insert(audit);
|
||||
|
||||
String taskNodeName = "";
|
||||
EvaluateApply evaluateApply = dao.fetch(EvaluateApply.class, id);
|
||||
if (pass == 1) {
|
||||
taskNodeName="单位审核拒绝";
|
||||
evaluateApply.setStateId(HonorAuditState.UNIT_REJECTED);
|
||||
} else if (pass == 2) {
|
||||
taskNodeName="单位审核退回修改";
|
||||
evaluateApply.setStateId(HonorAuditState.UNIT_BACK_MODIFY);
|
||||
} else {
|
||||
taskNodeName="待分工会审核";
|
||||
evaluateApply.setStateId(HonorAuditState.UNION_READY);
|
||||
}
|
||||
evaluateApply.setUnitAuditId(audit.getId());
|
||||
dao.updateIgnoreNull(evaluateApply);
|
||||
|
||||
String processUniqueId = "EVALUATE_APPLY@" + id;
|
||||
// 先完成当前节点的任务
|
||||
localProcessService.completeTask(processUniqueId, String.valueOf(HonorAuditState.UNIT_READY), taskNodeName, SecurityConstants.INNER);
|
||||
|
||||
if (pass == 1) {
|
||||
// 审核不通过,流程结束
|
||||
localProcessService.completeProcess(processUniqueId, true, SecurityConstants.INNER);
|
||||
}else if (pass==2){
|
||||
// 退回修改,流程继续
|
||||
Sql sql = Sqls.create("select loginName FROM `user` where userId=@userId").setParam("userId", evaluateApply.getUserId());
|
||||
sql.setCallback(Sqls.callback.map());
|
||||
dao.execute(sql);
|
||||
NutMap userMap = (NutMap) sql.getResult();
|
||||
localProcessService.initCreateTask(
|
||||
processUniqueId,
|
||||
String.valueOf(HonorAuditState.UNIT_BACK_MODIFY),
|
||||
taskNodeName,
|
||||
List.of(userMap.getString("loginName")),
|
||||
"/evaluate/applyEvaluate",
|
||||
null,
|
||||
SecurityConstants.INNER
|
||||
);
|
||||
} else if (pass == 3) {
|
||||
// 审核通过,往下走流程
|
||||
// 获取负责人
|
||||
R<List<String>> assignments = localProcessService.getAssignments(SecurityUtils.getUnionId(),
|
||||
null,
|
||||
Roles.FGH_ADMIN,
|
||||
SecurityConstants.INNER);
|
||||
List<String> loginNameList = assignments.getData();
|
||||
|
||||
localProcessService.initCreateTask(
|
||||
processUniqueId,
|
||||
String.valueOf(HonorAuditState.UNION_READY),
|
||||
"待分工会审核",
|
||||
loginNameList,
|
||||
"/evaluate/evaluateUnionAudit",
|
||||
null,
|
||||
SecurityConstants.INNER
|
||||
);
|
||||
}
|
||||
//TODO:后面审核发短信
|
||||
/*EvaluateApply evaluateApply = dao.fetch(EvaluateApply.class, id);
|
||||
Sys_user applyUser = dao.fetch(Sys_user.class, evaluateApply.getUserId());
|
||||
Evaluate evaluate = dao.fetch(Evaluate.class, evaluateApply.getEvaluateId());
|
||||
if (pass) {
|
||||
CndPlus cndPlus = CndPlus.create();
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
u.*
|
||||
FROM
|
||||
sys_user_role ur
|
||||
LEFT JOIN sys_user u ON ur.userid = u.id
|
||||
$condition
|
||||
""");
|
||||
cndPlus.andExcludeEmpty("ur.roleId", "=", Roles.UNION_MANGER);
|
||||
cndPlus.andExcludeEmpty("ur.unionId", "=", ((Sys_union) io.v.nutz.web.commons.utils.ShiroUtil.getPrincipalProperty("union")).getId());
|
||||
sql.setCondition(cndPlus);
|
||||
List<NutMap> userList = evaluateApplyViService.listMap(sql);
|
||||
for (NutMap map : userList) {
|
||||
String msg = "%s老师您好,%s老师于%s申请的【%s】评优评先需要您的审核!"
|
||||
.formatted(map.getString("username"), applyUser.getUsername(), evaluateApply.getApplyTime(), evaluate.getName());
|
||||
msgService.sendMessage(map.getString("loginname"), msg);
|
||||
}
|
||||
} else {
|
||||
String msg = "%s老师您好,您于%s申请的【%s】评优评先,在单位审核时被驳回!"
|
||||
.formatted(applyUser.getUsername(), evaluateApply.getApplyTime(), evaluate.getName());
|
||||
msgService.sendMessage(applyUser.getLoginname(), msg);
|
||||
}*/
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("rollBack")
|
||||
@DSTransactional
|
||||
@RequiresPermissions(value = {"additional:evaluate:evaluateUnitAudit"}, logical = Logical.OR)
|
||||
public AjaxResult rollBack(String id, Boolean type) {
|
||||
EvaluateApply evaluateApply = dao.fetch(EvaluateApply.class, id);
|
||||
|
||||
dao.clear("audit", Cnd.NEW().and("id", "=", evaluateApply.getUnitAuditId()));
|
||||
dao.update(EvaluateApply.class, Chain.make("stateId", type ? HonorAuditState.UNIT_READY : HonorAuditState.UNION_READY).add("unitAuditId", null), Cnd.where("id", "=", id));
|
||||
|
||||
localProcessService.revokeTask("EVALUATE_APPLY@" + id, String.valueOf(HonorAuditState.UNIT_READY), SecurityConstants.INNER);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
}
|
||||
+265
@@ -0,0 +1,265 @@
|
||||
package com.ruoyi.additional.controller.fund;
|
||||
|
||||
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.ImportParams;
|
||||
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
|
||||
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.additional.api.domain.fund.CostSet;
|
||||
import com.ruoyi.additional.api.domain.fund.FundClub;
|
||||
import com.ruoyi.additional.constant.Ds;
|
||||
import com.ruoyi.additional.service.fund.ClubBudgetManageService;
|
||||
import com.ruoyi.additional.util.ProModuleDS;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.system.api.domain.club.Sys_club;
|
||||
import org.apache.poi.ss.usermodel.*;
|
||||
import org.apache.poi.ss.util.CellRangeAddressList;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.entity.Record;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/10
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/clubBudget/clubBudgetAllot")
|
||||
public class ClubBudgetAllotController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private ClubBudgetManageService clubBudgetManageService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("additional:fund:clubBudget:clubBudgetAllot")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "year", required = false) Integer year,
|
||||
@RequestParam(value = "clubId", required = false) String clubId) {
|
||||
Sql sql = Sqls.create("""
|
||||
select
|
||||
jf.*,
|
||||
club.name,
|
||||
club.code,
|
||||
club.id as cid,
|
||||
club.cynum
|
||||
from
|
||||
`club` club
|
||||
LEFT JOIN jf_club jf ON jf.club_id = club.id AND jf.`year` = @year
|
||||
$condition
|
||||
""").setParam("year", year);
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (StrUtil.isNotBlank(pageForm.getPageOrderName()) && StrUtil.isNotBlank(pageForm.getPageOrderBy())) {
|
||||
cnd.orderBy(pageForm.getPageOrderName(), pageForm.getPageOrderBy());
|
||||
} else {
|
||||
cnd.asc("club.`code`");
|
||||
}
|
||||
if (Strings.isNotBlank(clubId)) {
|
||||
cnd.and("jf.club_id", "=", clubId);
|
||||
}
|
||||
cnd.and("jf.state", "=", 1);
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = clubBudgetManageService.listPage(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@GetMapping("isSetClubAvg")
|
||||
@RequiresPermissions("additional:fund:clubBudget:clubBudgetAllot")
|
||||
public AjaxResult isSetClubAvg() {
|
||||
int count = clubBudgetManageService.count(Cnd.where("year", "=", Calendar.getInstance().get(Calendar.YEAR)));
|
||||
return AjaxResult.success(count);
|
||||
}
|
||||
|
||||
@PostMapping("reset")
|
||||
@RequiresPermissions("additional:fund:clubBudget:clubBudgetAllot")
|
||||
public AjaxResult reset() {
|
||||
clubBudgetManageService.update(Chain.make("state", 0),
|
||||
Cnd.where("year", "=", Calendar.getInstance().get(Calendar.YEAR)).and("state", "=", 1));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@GetMapping("isSet")
|
||||
@RequiresPermissions("additional:fund:clubBudget:clubBudgetAllot")
|
||||
public AjaxResult isSet() {
|
||||
int count = clubBudgetManageService.count(Cnd.where("state", "=", 1).and("year", "=", Calendar.getInstance().get(Calendar.YEAR)));
|
||||
return AjaxResult.success(count);
|
||||
}
|
||||
|
||||
@PostMapping("issue")
|
||||
@RequiresPermissions("additional:fund:clubBudget:clubBudgetAllot")
|
||||
public AjaxResult issue() {
|
||||
|
||||
return clubBudgetManageService.issue();
|
||||
}
|
||||
|
||||
@PostMapping("doAdd")
|
||||
@RequiresPermissions("additional:fund:clubBudget:clubBudgetAllot")
|
||||
public AjaxResult doAdd(@RequestBody FundClub club) {
|
||||
|
||||
return clubBudgetManageService.doAdd(club);
|
||||
}
|
||||
|
||||
@PostMapping("changeYs")
|
||||
@RequiresPermissions("additional:fund:unionBudget:unionBudgetAllot")
|
||||
public AjaxResult changeYs(String clubId, Integer year, Float totalQuota) {
|
||||
totalQuota = totalQuota == null ? 0 : totalQuota;
|
||||
FundClub fundClub = dao.fetch(FundClub.class, Cnd.where("club_id", "=", clubId).and("year", "=", year));
|
||||
if (fundClub != null) {
|
||||
fundClub.setTotal_quota(totalQuota);
|
||||
dao.updateIgnoreNull(fundClub);
|
||||
} else {
|
||||
fundClub = new FundClub();
|
||||
fundClub.setClub_id(clubId);
|
||||
fundClub.setYear(year);
|
||||
fundClub.setTotal_quota(totalQuota);
|
||||
dao.insert(fundClub);
|
||||
}
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@RequestMapping("downloadTemplate")
|
||||
public void downloadTemplate(HttpServletResponse response) throws IOException {
|
||||
|
||||
String fileName = "批量导入协会预算分配" + ".xlsx";
|
||||
try {
|
||||
|
||||
//获取所有协会
|
||||
List<Sys_club> clubList = ProModuleDS.exec(Ds.SYSTEM, () -> {
|
||||
return dao.query(Sys_club.class, Cnd.where("state", "=", 5050).asc("code"));
|
||||
});
|
||||
List<String> clubNames = clubList.stream().map(Sys_club::getName).collect(Collectors.toList());
|
||||
|
||||
List<ExcelExportEntity> exportEntities = new ArrayList<>();
|
||||
exportEntities.add(new ExcelExportEntity("序号", "index", 20));
|
||||
exportEntities.add(new ExcelExportEntity("年度", "year", 20));
|
||||
exportEntities.add(new ExcelExportEntity("协会名称", "clubName", 20));
|
||||
exportEntities.add(new ExcelExportEntity("协会人数", "clubPersonCount", 20));
|
||||
exportEntities.add(new ExcelExportEntity("标准", "avg", 20));
|
||||
exportEntities.add(new ExcelExportEntity("总额度", "totalMoney", 20));
|
||||
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, exportEntities, new ArrayList<>());
|
||||
|
||||
String[] array = clubNames.size() > 0 ? Lang.collection2array(clubNames) : new String[]{};
|
||||
selectLargeList(workbook, 2, 2, 1, array);
|
||||
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
|
||||
response.setHeader("content-Type", "application/vnd.ms-excel");
|
||||
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
|
||||
workbook.write(response.getOutputStream());
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public static void selectLargeList(Workbook workbook, int firstCol, int lastCol, int sheetIndex, String[] selectList) {
|
||||
Sheet sheet = workbook.getSheetAt(0);
|
||||
//将下拉框数据放到新的sheet里,然后excle通过新的sheet数据加载下拉框数据
|
||||
String sheetName = "sheetName" + String.valueOf(sheetIndex);
|
||||
Sheet hidden = workbook.createSheet(sheetName);
|
||||
//创建单元格对象
|
||||
Cell cell = null;
|
||||
//遍历我们上面的数组,将数据取出来放到新sheet的单元格中
|
||||
for (int i = 0, length = selectList.length; i < length; i++) {
|
||||
//取出数组中的每个元素
|
||||
String name = selectList[i];
|
||||
//根据i创建相应的行对象(说明我们将会把每个元素单独放一行)
|
||||
Row row = hidden.createRow(i);
|
||||
//创建每一行中的第一个单元格
|
||||
cell = row.createCell(0);
|
||||
//然后将数组中的元素赋值给这个单元格
|
||||
cell.setCellValue(name);
|
||||
}
|
||||
// 创建名称,可被其他单元格引用
|
||||
String refers = sheetName + "!$A$1:$A$" + selectList.length;
|
||||
//这个3代表我的下拉数据从第三行开始生效,前面1,2行不显示下拉,你们根据自己情况修改。
|
||||
CellRangeAddressList cellRangeAddressList = new CellRangeAddressList(1, 1000, firstCol, lastCol);
|
||||
DataValidationHelper helper = sheet.getDataValidationHelper();
|
||||
DataValidationConstraint constraint = helper.createFormulaListConstraint(refers);
|
||||
DataValidation dataValidation = helper.createValidation(constraint, cellRangeAddressList);
|
||||
//将第sheetIndex个sheet设置为隐藏
|
||||
workbook.setSheetHidden(sheetIndex, true);
|
||||
sheet.addValidationData(dataValidation);
|
||||
}
|
||||
|
||||
@RequestMapping("readExcel")
|
||||
public AjaxResult readExcel(@RequestParam(name = "file") MultipartFile multipartFile) {
|
||||
int count = 0;
|
||||
int success_count = 0;
|
||||
try {
|
||||
// 查出现在已交社团表中的已交社团
|
||||
List<FundClub> jf_clubs = clubBudgetManageService.query();
|
||||
// 查出所有系统社团
|
||||
List<Sys_club> sysClubs = ProModuleDS.exec(Ds.SYSTEM, () -> {
|
||||
return dao.query(Sys_club.class, Cnd.where("state", "=", "5050").asc("code"));
|
||||
});
|
||||
Map<String, String> collect = sysClubs.stream().collect(Collectors.toMap(Sys_club::getName, Sys_club::getId));
|
||||
//获得excel表格中的数据并封装成一个个对象
|
||||
List<FundClub> list = ExcelImportUtil.importExcel(multipartFile.getInputStream(), FundClub.class, new ImportParams());
|
||||
count = list.size();
|
||||
|
||||
//遍历excel表格中的一个个对象
|
||||
for (FundClub obj : list) {
|
||||
try {
|
||||
//状态设为1,默认为下发状态
|
||||
obj.setState(1);
|
||||
|
||||
obj.setClub_id(collect.get(obj.getHistory_clubname()));
|
||||
|
||||
FundClub yj_club = jf_clubs.stream().filter(v -> v.getYear().equals(obj.getYear()) && v.getClub_id().equals(obj.getClub_id())).findFirst().orElse(null);
|
||||
|
||||
// 遍历所有的已交社团
|
||||
boolean has = jf_clubs.stream().anyMatch(v -> v.getYear().equals(obj.getYear()) && v.getClub_id().equals(obj.getClub_id()));
|
||||
if (has) {
|
||||
assert yj_club != null;
|
||||
yj_club.setClub_id(obj.getClub_id()); //社团id
|
||||
yj_club.setState(1); //状态1
|
||||
yj_club.setHistory_member(obj.getHistory_member()); //历史会员人数
|
||||
yj_club.setHistory_club_avg(obj.getHistory_club_avg()); //历史品均值
|
||||
yj_club.setTotal_quota(obj.getTotal_quota()); // 总金额
|
||||
dao.update(yj_club); // 直接跟新这个对象,自动根据id修改
|
||||
// 返回给前台的显示向数据库成功添加了几条数据的数量
|
||||
} else {
|
||||
// 向已交工会表中添加一条记录
|
||||
dao.insert(obj);
|
||||
// 返回给前台的显示向数据库成功添加了几条数据的数量
|
||||
}
|
||||
success_count++;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
NutMap result = NutMap.NEW().setv("count", count).setv("success_count", success_count);
|
||||
return AjaxResult.success(result);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
+151
@@ -0,0 +1,151 @@
|
||||
package com.ruoyi.additional.controller.fund;
|
||||
|
||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
|
||||
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||
import com.ruoyi.additional.constant.Ds;
|
||||
import com.ruoyi.additional.service.fund.ClubBudgetManageService;
|
||||
import com.ruoyi.additional.util.ProModuleDS;
|
||||
import com.ruoyi.common.core.constant.Roles;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.system.api.domain.SysUserRole;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.entity.Record;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/10
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/clubBudget/clubBudgetUsage")
|
||||
public class ClubBudgetUsageController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private ClubBudgetManageService clubBudgetManageService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("additional:fund:clubBudget:clubBudgetUsage")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "year", required = false) Integer year) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
jf.*,
|
||||
club.`name`,
|
||||
club.`code`,
|
||||
club.id as cid
|
||||
FROM
|
||||
`club` club
|
||||
LEFT JOIN jf_club jf ON jf.club_id = club.id AND jf.`year` = @year
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (AuthUtil.hasRole("admin") || AuthUtil.hasRole("A06")) {
|
||||
|
||||
} else if (AuthUtil.hasRole("H02")) {
|
||||
//协会管理员
|
||||
List<String> clubIds = ProModuleDS.exec(Ds.SYSTEM, () -> {
|
||||
List<SysUserRole> userRoles = dao.query(SysUserRole.class, Cnd.where("userId", "=", SecurityUtils.getUserId())
|
||||
.and("roleId", "=", Roles.CLUB_FZR));
|
||||
return userRoles.stream().map(SysUserRole::getStid).collect(Collectors.toList());
|
||||
});
|
||||
cnd.and("club.id", "in", clubIds);
|
||||
}
|
||||
cnd.and("jf.total_quota", "IS NOT", null);
|
||||
if (Strings.isNotBlank(pageForm.getPageOrderName()) && Strings.isNotBlank(pageForm.getPageOrderBy())) {
|
||||
cnd.orderBy(pageForm.getPageOrderName(), pageForm.getPageOrderBy());
|
||||
} else {
|
||||
cnd.asc("club.`code`");
|
||||
}
|
||||
sql.setParam("year", year);
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = clubBudgetManageService.listPage(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@RequestMapping("exportExcel")
|
||||
public void exportExcel(Integer year, HttpServletResponse response) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
jf.*,
|
||||
club.`name`,
|
||||
club.id cid
|
||||
FROM
|
||||
`club` club
|
||||
LEFT JOIN jf_club jf ON jf.club_id = club.id AND jf.`year` = @year
|
||||
$condition
|
||||
""");
|
||||
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (AuthUtil.hasRole("admin") || AuthUtil.hasRole("A06")) {
|
||||
|
||||
} else if (AuthUtil.hasRole("H02")) {
|
||||
//协会管理员
|
||||
List<String> clubIds = ProModuleDS.exec(Ds.SYSTEM, () -> {
|
||||
List<SysUserRole> userRoles = dao.query(SysUserRole.class, Cnd.where("userId", "=", SecurityUtils.getUserId())
|
||||
.and("roleId", "=", Roles.CLUB_FZR));
|
||||
return userRoles.stream().map(SysUserRole::getStid).collect(Collectors.toList());
|
||||
});
|
||||
cnd.and("club.id", "in", clubIds);
|
||||
}
|
||||
cnd.asc("club.code");
|
||||
sql.setParam("year", year);
|
||||
sql.setCondition(cnd);
|
||||
List<Record> list = clubBudgetManageService.list(sql);
|
||||
|
||||
list.forEach(item -> {
|
||||
Float zed = Strings.isBlank(item.getString("total_quota")) ? 0 : Float.parseFloat(item.getString("total_quota"));
|
||||
Float ysyed = Strings.isBlank(item.getString("used_quota")) ? 0 : Float.parseFloat(item.getString("used_quota"));
|
||||
item.put("no_used_quota", String.valueOf(zed - ysyed));
|
||||
});
|
||||
|
||||
List<ExcelExportEntity> entityList = new ArrayList<>();
|
||||
entityList.add(new ExcelExportEntity("年度", "year", 40));
|
||||
entityList.add(new ExcelExportEntity("协会名称", "name", 40));
|
||||
entityList.add(new ExcelExportEntity("分配总额度(元)", "total_quota", 40));
|
||||
entityList.add(new ExcelExportEntity("已使用额度(元)", "used_quota", 40));
|
||||
entityList.add(new ExcelExportEntity("剩余额度(元)", "no_used_quota", 40));
|
||||
|
||||
//excel文件名
|
||||
String fileName = year + "年协会经费使用情况表.xlsx";
|
||||
|
||||
try {
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, list);
|
||||
|
||||
String disposition = "attachment;filename=" + URLEncoder.encode(fileName, "utf-8");
|
||||
response.setCharacterEncoding("utf-8");
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", disposition);
|
||||
|
||||
workbook.write(response.getOutputStream());
|
||||
workbook.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
+119
@@ -0,0 +1,119 @@
|
||||
package com.ruoyi.additional.controller.fund;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.additional.api.domain.fund.FundClub;
|
||||
import com.ruoyi.additional.api.domain.fund.FundUnion;
|
||||
import com.ruoyi.additional.api.domain.fund.FundUse;
|
||||
import com.ruoyi.additional.service.fund.UnionBudgetManageService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.utils.DateUtils;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/9
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/fund/fundAdjust")
|
||||
public class FundAdjustController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private UnionBudgetManageService unionBudgetManageService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "year", required = false) Integer year,
|
||||
@RequestParam(value = "adjustId", required = false) String adjustId) {
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
ju.*,
|
||||
re.userId,
|
||||
re.activity_number,
|
||||
su.userName as username,
|
||||
YEAR(re.applyTime) `year`,
|
||||
us.unionName as unionname
|
||||
FROM
|
||||
`jf_use` ju
|
||||
LEFT JOIN jf_yjgh jf ON ju.adjust_id = jf.id
|
||||
LEFT JOIN `user` su ON su.userId = ju.adjust_person
|
||||
LEFT JOIN reimbursement_new re ON re.id = ju.apply_id
|
||||
LEFT JOIN `user` us ON us.userId = re.userId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (StrUtil.isNotBlank(pageForm.getPageOrderName()) && StrUtil.isNotBlank(pageForm.getPageOrderBy())) {
|
||||
cnd.orderBy(pageForm.getPageOrderName(), pageForm.getPageOrderBy());
|
||||
} else {
|
||||
cnd.desc("ju.adjust_time");
|
||||
}
|
||||
cnd.and("adjust_id", "=", adjustId);
|
||||
cnd.and("adjust_time", "like", year + "%");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = unionBudgetManageService.listPage(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@PostMapping("addUse")
|
||||
public AjaxResult addUse(@RequestBody FundUse fundUse,
|
||||
@RequestParam(name = "isClub", required = false) Boolean isClub) {
|
||||
fundUse.setAdjust_time(DateUtils.getDate());
|
||||
fundUse.setAdjust_person(SecurityUtils.getUserId());
|
||||
dao.insert(fundUse); // 向经费使用表中添加一条记录
|
||||
if (isClub) {
|
||||
FundClub fundClub = dao.fetch(FundClub.class, fundUse.getAdjust_id()); //根据调整经费id查询
|
||||
fundClub.setUsed_quota(fundClub.getUsed_quota() + fundUse.getAdjust_money());
|
||||
dao.update(fundClub);
|
||||
} else {
|
||||
FundUnion fundUnion = dao.fetch(FundUnion.class, fundUse.getAdjust_id());
|
||||
fundUnion.setUsedQuota(fundUnion.getUsedQuota() + fundUse.getAdjust_money());
|
||||
dao.update(fundUnion);
|
||||
}
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("doEdit")
|
||||
public AjaxResult doEdit(@RequestBody FundUse fundUse,
|
||||
@RequestParam(name = "isClub", required = false) Boolean isClub) {
|
||||
dao.update(fundUse);
|
||||
flushMoney(fundUse.getAdjust_id(), isClub);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("delUse")
|
||||
public AjaxResult delUse(@RequestParam(name = "id", required = false) String id,
|
||||
@RequestParam(name = "isClub", required = false) Boolean isClub) {
|
||||
FundUse use = dao.fetch(FundUse.class, id);
|
||||
dao.delete(FundUse.class, id);
|
||||
flushMoney(use.getAdjust_id(), isClub);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
private void flushMoney(String id, boolean isClub) {
|
||||
Sql sql = Sqls.create("SELECT IFNULL(SUM(u.adjust_money),0) money from jf_use u WHERE u.adjust_id = @id").setParam("id", id);
|
||||
int money = unionBudgetManageService.list(sql).get(0).getInt("money");
|
||||
|
||||
if (!isClub) {
|
||||
FundUnion yjgh = dao.fetch(FundUnion.class, id);
|
||||
yjgh.setUsedQuota(money);
|
||||
dao.update(yjgh);
|
||||
} else {
|
||||
FundClub club = dao.fetch(FundClub.class, id);
|
||||
club.setUsed_quota(money);
|
||||
dao.update(club);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
package com.ruoyi.additional.controller.fund;
|
||||
|
||||
import com.ruoyi.additional.api.domain.fund.CostSet;
|
||||
import com.ruoyi.additional.api.domain.fund.FundSchool;
|
||||
import com.ruoyi.additional.service.fund.SchoolBudgetListService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Calendar;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/9
|
||||
* @Description 校工会预算
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/schoolBudget/schoolBudgetList")
|
||||
public class SchoolBudgetListController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private SchoolBudgetListService schoolBudgetListService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("additional:fund:schoolBudget:schoolBudgetList")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "year", required = false) Integer year) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT * FROM `jf_school` $condition
|
||||
""");
|
||||
cnd.andEX("year", "=", year);
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = schoolBudgetListService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@PostMapping("doChangeYs")
|
||||
@RequiresPermissions("additional:fund:schoolBudget:schoolBudgetList")
|
||||
public AjaxResult doChangeYs(Float totalQuota, String id) {
|
||||
FundSchool fundSchool = dao.fetch(FundSchool.class, id);
|
||||
fundSchool.setTotalQuota(totalQuota);
|
||||
dao.updateIgnoreNull(fundSchool);
|
||||
dao.update(CostSet.class, Chain.make("schoolMoney", totalQuota), Cnd.where("year", "=", Calendar.getInstance().get(Calendar.YEAR)));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
package com.ruoyi.additional.controller.fund;
|
||||
|
||||
import com.ruoyi.additional.service.fund.SchoolBudgetListService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/9
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/schoolBudget/schoolBudgetUsage")
|
||||
public class SchoolBudgetUsageController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private SchoolBudgetListService schoolBudgetListService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("additional:fund:schoolBudget:schoolBudgetUsage")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "year", required = false) Integer year,
|
||||
@RequestParam(value = "activity_name", required = false) String activity_name) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
YEAR(rei.applyTime) year,
|
||||
rei.*
|
||||
FROM
|
||||
`school_use` suse
|
||||
LEFT JOIN reimbursement_new rei ON rei.id = suse.reimbursementId
|
||||
$condition
|
||||
""");
|
||||
cnd.andEX("YEAR ( rei.applyTime )", "=", year);
|
||||
if (Strings.isNotBlank(activity_name)) {
|
||||
cnd.where().andLike("rei.activity_name", activity_name);
|
||||
}
|
||||
cnd.desc("rei.applyTime");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = schoolBudgetListService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
}
|
||||
+253
@@ -0,0 +1,253 @@
|
||||
package com.ruoyi.additional.controller.fund;
|
||||
|
||||
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.ImportParams;
|
||||
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
|
||||
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||
import com.ruoyi.additional.api.domain.fund.CostSet;
|
||||
import com.ruoyi.additional.api.domain.fund.FundUnion;
|
||||
import com.ruoyi.additional.constant.Ds;
|
||||
import com.ruoyi.additional.service.fund.UnionBudgetManageService;
|
||||
import com.ruoyi.additional.util.ProModuleDS;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.system.api.domain.SysUnion;
|
||||
import org.apache.poi.ss.usermodel.*;
|
||||
import org.apache.poi.ss.util.CellRangeAddressList;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.entity.Record;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/9
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/unionBudget/unionBudgetAllot")
|
||||
public class UnionBudgetAllotController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private UnionBudgetManageService unionBudgetManageService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("additional:fund:unionBudget:unionBudgetAllot")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "year", required = false) Integer year,
|
||||
@RequestParam(value = "unionId", required = false) String unionId) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
jf.*,
|
||||
un.id unid,
|
||||
un.unionName as unionname,
|
||||
un.unionCode as unioncode
|
||||
FROM
|
||||
`union` un
|
||||
LEFT JOIN jf_yjgh jf ON jf.unionId = un.id
|
||||
$condition
|
||||
"""
|
||||
);
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (Strings.isNotBlank(unionId)) {
|
||||
cnd.and("jf.unionId", "=", unionId);
|
||||
}
|
||||
cnd.and("jf.year", "=", year);
|
||||
cnd.and("jf.state", "=", 1);
|
||||
cnd.asc("un.unionCode");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = unionBudgetManageService.listPage(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@GetMapping("isSetUnionAvg")
|
||||
@RequiresPermissions("additional:fund:unionBudget:unionBudgetAllot")
|
||||
public AjaxResult isSetUnionAvg() {
|
||||
int count = unionBudgetManageService.count(Cnd.where("year", "=", Calendar.getInstance().get(Calendar.YEAR)));
|
||||
return AjaxResult.success(count);
|
||||
}
|
||||
|
||||
@PostMapping("reset")
|
||||
@RequiresPermissions("additional:fund:unionBudget:unionBudgetAllot")
|
||||
public AjaxResult reset() {
|
||||
unionBudgetManageService.update(Chain.make("state", 0),
|
||||
Cnd.where("year", "=", Calendar.getInstance().get(Calendar.YEAR)).and("state", "=", 1));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@GetMapping("isSet")
|
||||
@RequiresPermissions("additional:fund:unionBudget:unionBudgetAllot")
|
||||
public AjaxResult isSet() {
|
||||
int count = unionBudgetManageService.count(Cnd.where("state", "=", 1).and("year", "=", Calendar.getInstance().get(Calendar.YEAR)));
|
||||
return AjaxResult.success(count);
|
||||
}
|
||||
|
||||
@PostMapping("issue")
|
||||
@RequiresPermissions("additional:fund:unionBudget:unionBudgetAllot")
|
||||
public AjaxResult issue() {
|
||||
return unionBudgetManageService.issue();
|
||||
}
|
||||
|
||||
@PostMapping("changeYs")
|
||||
@RequiresPermissions("additional:fund:unionBudget:unionBudgetAllot")
|
||||
public AjaxResult changeYs(String unionId, Integer year, Float totalQuota) {
|
||||
totalQuota = totalQuota == null ? 0 : totalQuota;
|
||||
FundUnion ghys = dao.fetch(FundUnion.class, Cnd.where("unionId", "=", unionId).and("year", "=", year));
|
||||
if (ghys != null) {
|
||||
ghys.setTotalQuota(totalQuota);
|
||||
dao.updateIgnoreNull(ghys);
|
||||
} else {
|
||||
ghys = new FundUnion();
|
||||
ghys.setUnionId(unionId);
|
||||
ghys.setYear(year);
|
||||
ghys.setTotalQuota(totalQuota);
|
||||
dao.insert(ghys);
|
||||
}
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@RequestMapping("downloadTemplate")
|
||||
public void downloadTemplate(HttpServletResponse response) throws IOException {
|
||||
|
||||
String fileName = "批量导入工会预算分配" + ".xlsx";
|
||||
try {
|
||||
|
||||
//获取所有工会
|
||||
List<SysUnion> unionList = ProModuleDS.exec(Ds.SYSTEM, () -> {
|
||||
return dao.query(SysUnion.class, Cnd.NEW().asc("unionCode"));
|
||||
});
|
||||
List<String> unionNames = unionList.stream().map(SysUnion::getUnionName).collect(Collectors.toList());
|
||||
|
||||
List<ExcelExportEntity> exportEntities = new ArrayList<>();
|
||||
exportEntities.add(new ExcelExportEntity("序号", "index", 20));
|
||||
exportEntities.add(new ExcelExportEntity("年度", "year", 20));
|
||||
exportEntities.add(new ExcelExportEntity("院级工会名称", "unionName", 20));
|
||||
exportEntities.add(new ExcelExportEntity("会员人数", "memberCount", 20));
|
||||
exportEntities.add(new ExcelExportEntity("标准", "avg", 20));
|
||||
exportEntities.add(new ExcelExportEntity("总额度", "totalMoney", 20));
|
||||
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, exportEntities, new ArrayList<>());
|
||||
|
||||
selectLargeList(workbook, 2, 2, 1, Lang.collection2array(unionNames));
|
||||
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
|
||||
response.setHeader("content-Type", "application/vnd.ms-excel");
|
||||
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
|
||||
workbook.write(response.getOutputStream());
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public static void selectLargeList(Workbook workbook, int firstCol, int lastCol, int sheetIndex, String[] selectList) {
|
||||
Sheet sheet = workbook.getSheetAt(0);
|
||||
//将下拉框数据放到新的sheet里,然后excle通过新的sheet数据加载下拉框数据
|
||||
String sheetName = "sheetName" + String.valueOf(sheetIndex);
|
||||
Sheet hidden = workbook.createSheet(sheetName);
|
||||
//创建单元格对象
|
||||
Cell cell = null;
|
||||
//遍历我们上面的数组,将数据取出来放到新sheet的单元格中
|
||||
for (int i = 0, length = selectList.length; i < length; i++) {
|
||||
//取出数组中的每个元素
|
||||
String name = selectList[i];
|
||||
//根据i创建相应的行对象(说明我们将会把每个元素单独放一行)
|
||||
Row row = hidden.createRow(i);
|
||||
//创建每一行中的第一个单元格
|
||||
cell = row.createCell(0);
|
||||
//然后将数组中的元素赋值给这个单元格
|
||||
cell.setCellValue(name);
|
||||
}
|
||||
// 创建名称,可被其他单元格引用
|
||||
String refers = sheetName + "!$A$1:$A$" + selectList.length;
|
||||
//这个3代表我的下拉数据从第三行开始生效,前面1,2行不显示下拉,你们根据自己情况修改。
|
||||
CellRangeAddressList cellRangeAddressList = new CellRangeAddressList(1, 1000, firstCol, lastCol);
|
||||
DataValidationHelper helper = sheet.getDataValidationHelper();
|
||||
DataValidationConstraint constraint = helper.createFormulaListConstraint(refers);
|
||||
DataValidation dataValidation = helper.createValidation(constraint, cellRangeAddressList);
|
||||
//将第sheetIndex个sheet设置为隐藏
|
||||
workbook.setSheetHidden(sheetIndex, true);
|
||||
sheet.addValidationData(dataValidation);
|
||||
}
|
||||
|
||||
@RequestMapping("readExcel")
|
||||
public AjaxResult readExcel(@RequestParam(name = "file") MultipartFile multipartFile) {
|
||||
int count = 0;
|
||||
int success_count = 0;
|
||||
try {
|
||||
// 查出现在已交工会表中的已交工会
|
||||
List<FundUnion> jf_yjghs = unionBudgetManageService.query();
|
||||
// 查出所有的系统工会
|
||||
List<SysUnion> sysUnions = ProModuleDS.exec(Ds.SYSTEM, () -> {
|
||||
return dao.query(SysUnion.class, Cnd.orderBy().asc("unionCode"));
|
||||
});
|
||||
Map<String, String> collect = sysUnions.stream().collect(Collectors.toMap(SysUnion::getUnionName, SysUnion::getId));
|
||||
|
||||
//获得excel表格中的数据并封装成一个个对象
|
||||
List<FundUnion> list = ExcelImportUtil.importExcel(multipartFile.getInputStream(), FundUnion.class, new ImportParams());
|
||||
count = list.size();
|
||||
|
||||
//遍历excel表格中的一个个对象
|
||||
for (FundUnion obj : list) {
|
||||
try {
|
||||
//状态设为1,默认为下发状态
|
||||
obj.setState(1);
|
||||
|
||||
obj.setUnionId(collect.get(obj.getHistory_unionname()));
|
||||
|
||||
FundUnion yjgh = jf_yjghs.stream().filter(v -> v.getYear().equals(obj.getYear()) && v.getUnionId().equals(obj.getUnionId())).findFirst().orElse(null);
|
||||
|
||||
// 遍历所有的已交工会
|
||||
boolean has = jf_yjghs.stream().anyMatch(v -> v.getYear().equals(obj.getYear()) && v.getUnionId().equals(obj.getUnionId()));
|
||||
if (has) {
|
||||
assert yjgh != null;
|
||||
yjgh.setUnionId(obj.getUnionId()); //工会id
|
||||
yjgh.setState(1); //状态1
|
||||
yjgh.setHistory_member(obj.getHistory_member()); //历史会员人数
|
||||
yjgh.setHistory_union_avg(obj.getHistory_union_avg()); //历史品均值
|
||||
yjgh.setTotalQuota(obj.getTotalQuota()); // 总金额
|
||||
dao.update(yjgh); // 直接跟新这个对象,自动根据id修改
|
||||
// 返回给前台的显示向数据库成功添加了几条数据的数量
|
||||
} else {
|
||||
// 向已交工会表中添加一条记录
|
||||
dao.insert(obj);
|
||||
// 返回给前台的显示向数据库成功添加了几条数据的数量
|
||||
}
|
||||
success_count++;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
NutMap result = NutMap.NEW().setv("count", count).setv("success_count", success_count);
|
||||
return AjaxResult.success(result);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
+150
@@ -0,0 +1,150 @@
|
||||
package com.ruoyi.additional.controller.fund;
|
||||
|
||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
|
||||
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||
import com.ruoyi.additional.constant.Ds;
|
||||
import com.ruoyi.additional.service.fund.UnionBudgetManageService;
|
||||
import com.ruoyi.additional.util.ProModuleDS;
|
||||
import com.ruoyi.common.core.constant.Roles;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.system.api.domain.SysUserRole;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.entity.Record;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/9
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/unionBudget/unionBudgetUsage")
|
||||
public class UnionBudgetUsageController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private UnionBudgetManageService unionBudgetManageService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("additional:fund:unionBudget:unionBudgetUsage")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "year", required = false) Integer year,
|
||||
@RequestParam(value = "unionId", required = false) String unionId) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
jf.*,
|
||||
un.id unid,
|
||||
un.unionName as unionname,
|
||||
un.unionCode as unioncode
|
||||
FROM
|
||||
`union` un
|
||||
LEFT JOIN jf_yjgh jf ON jf.unionId = un.id
|
||||
AND jf.`year` = @year
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (AuthUtil.hasRole("admin") || AuthUtil.hasRole("A06")) {
|
||||
cnd.andEX("un.id", "=", unionId);
|
||||
} else if (AuthUtil.hasRole("H04")) {
|
||||
List<String> unionIds = ProModuleDS.exec(Ds.SYSTEM, () -> {
|
||||
List<SysUserRole> userRoles = dao.query(SysUserRole.class, Cnd.where("userId", "=", SecurityUtils.getUserId())
|
||||
.and("roleId", "=", Roles.FGH_ADMIN));
|
||||
return userRoles.stream().map(SysUserRole::getUnionId).collect(Collectors.toList());
|
||||
});
|
||||
//基层工会管理员
|
||||
cnd.and("un.id", "in", unionIds);
|
||||
}
|
||||
cnd.and("jf.totalQuota", "IS NOT", null);
|
||||
if (Strings.isNotBlank(pageForm.getPageOrderName()) && Strings.isNotBlank(pageForm.getPageOrderBy())) {
|
||||
cnd.orderBy(pageForm.getPageOrderName(), pageForm.getPageOrderBy());
|
||||
} else {
|
||||
cnd.asc("un.unionCode");
|
||||
}
|
||||
sql.setParam("year", year);
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = unionBudgetManageService.listPage(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@RequestMapping("exportExcel")
|
||||
public void exportExcel(Integer year, HttpServletResponse response) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
jf.*,
|
||||
un.id unid,
|
||||
un.unionName as unionname
|
||||
FROM `union` un
|
||||
LEFT JOIN jf_yjgh jf ON jf.unionId = un.id AND jf.`year` = @year
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (AuthUtil.hasRole("admin") || AuthUtil.hasRole("A06")) {
|
||||
|
||||
} else if (AuthUtil.hasRole("H04")) {
|
||||
List<SysUserRole> userRoles = ProModuleDS.exec(Ds.SYSTEM, () -> {
|
||||
return dao.query(SysUserRole.class, Cnd.where("userId", "=", SecurityUtils.getUserId()).and("roleId", "=", Roles.FGH_ADMIN));
|
||||
});
|
||||
List<String> unionIds = userRoles.stream().map(SysUserRole::getUnionId).collect(Collectors.toList());
|
||||
//基层工会管理员
|
||||
cnd.and("un.id", "in", unionIds);
|
||||
}
|
||||
cnd.asc("un.unionCode");
|
||||
sql.setParam("year", year);
|
||||
sql.setCondition(cnd);
|
||||
List<Record> list = unionBudgetManageService.list(sql);
|
||||
|
||||
list.forEach(item -> {
|
||||
Float zed = Strings.isBlank(item.getString("totalquota")) ? 0 : Float.parseFloat(item.getString("totalquota"));
|
||||
Float ysyed = Strings.isBlank(item.getString("usedquota")) ? 0 : Float.parseFloat(item.getString("usedquota"));
|
||||
item.put("nousedquota", String.valueOf(zed - ysyed));
|
||||
});
|
||||
|
||||
List<ExcelExportEntity> entityList = new ArrayList<>();
|
||||
entityList.add(new ExcelExportEntity("年度", "year", 40));
|
||||
entityList.add(new ExcelExportEntity("院级工会名称", "unionname", 40));
|
||||
entityList.add(new ExcelExportEntity("分配总额度(元)", "totalquota", 40));
|
||||
entityList.add(new ExcelExportEntity("已使用额度(元)", "usedquota", 40));
|
||||
entityList.add(new ExcelExportEntity("剩余额度(元)", "nousedquota", 40));
|
||||
|
||||
//excel文件名
|
||||
String fileName = year + "年院级工会经费使用情况表.xlsx";
|
||||
|
||||
try {
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, list);
|
||||
|
||||
String disposition = "attachment;filename=" + URLEncoder.encode(fileName, "utf-8");
|
||||
response.setCharacterEncoding("utf-8");
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", disposition);
|
||||
|
||||
workbook.write(response.getOutputStream());
|
||||
workbook.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
package com.ruoyi.additional.controller.fund;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.ruoyi.additional.api.domain.fund.CostSet;
|
||||
import com.ruoyi.additional.service.fund.YearCostSetService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/9
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/costSet/yearCostSet")
|
||||
public class YearCostSetController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private YearCostSetService yearCostSetService;
|
||||
|
||||
@PostMapping("set")
|
||||
@RequiresPermissions("additional:fund:costSet:yearCostSet")
|
||||
public AjaxResult set(@RequestBody CostSet costsSet) {
|
||||
yearCostSetService.set(costsSet);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@GetMapping("echo")
|
||||
@RequiresPermissions("additional:fund:costSet:yearCostSet")
|
||||
public AjaxResult echo() {
|
||||
CostSet costSet = yearCostSetService.fetch(Cnd.where("year", "=", DateUtil.thisYear()));
|
||||
return AjaxResult.success(costSet);
|
||||
}
|
||||
}
|
||||
+128
@@ -0,0 +1,128 @@
|
||||
package com.ruoyi.additional.controller.honor;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.additional.api.domain.evaluate.EvaluateApply;
|
||||
import com.ruoyi.additional.api.domain.honor.HonorApply;
|
||||
import com.ruoyi.additional.api.domain.honor.HonorBasicSettings;
|
||||
import com.ruoyi.additional.service.honor.HonorBasicSettingsService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/3
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/honor/basicSetting")
|
||||
public class HonorBasicSettingsController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private HonorBasicSettingsService honorBasicSettingsService;
|
||||
|
||||
@GetMapping("getTree")
|
||||
@RequiresPermissions("additional:honor:basicDataManage")
|
||||
public AjaxResult getTree() {
|
||||
ArrayList<HonorBasicSettings> list = new ArrayList<>();
|
||||
HonorBasicSettings parent = honorBasicSettingsService.fetch(Cnd.where("parentId", "is", null));
|
||||
if (parent != null) {
|
||||
parent.setChildren(child(parent.getId()));
|
||||
list.add(parent);
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@PostMapping("doSubmit")
|
||||
@RequiresPermissions("additional:honor:basicDataManage")
|
||||
public AjaxResult doSubmit(@RequestBody HonorBasicSettings honorBasicSettings) {
|
||||
if (StrUtil.isBlank(honorBasicSettings.getId())) {
|
||||
int count = honorBasicSettingsService.count(Cnd.where("name", "=", honorBasicSettings.getName()));
|
||||
if (count > 0) {
|
||||
return AjaxResult.warn("名称已存在,请勿重复添加!");
|
||||
} else {
|
||||
honorBasicSettingsService.insert(honorBasicSettings);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
} else {
|
||||
honorBasicSettingsService.updateIgnoreNull(honorBasicSettings);
|
||||
}
|
||||
honorBasicSettingsService.update(Chain.make("hasChildren", true), Cnd.where("id", "=", honorBasicSettings.getParentId()));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@GetMapping("getData")
|
||||
public AjaxResult getData(String parentId) {
|
||||
List<HonorBasicSettings> list = honorBasicSettingsService.query(Cnd.where("parentId", "=", parentId).asc("code"));
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
@GetMapping("getHonorNum")
|
||||
public AjaxResult getHonorNum(String stateId) {
|
||||
int gr = dao.count(HonorApply.class, Cnd.where("stateId", "=", stateId).and("honorType", "=", "8a8b455b964a41f2bbf18a4896cbd83e"));
|
||||
int jt = dao.count(HonorApply.class, Cnd.where("stateId", "=", stateId).and("honorType", "=", "6b9e26a9467f49ae88fbd3951377e0f8"));
|
||||
Map<String, Integer> map = Map.of("gr", gr, "jt", jt);
|
||||
return AjaxResult.success(map);
|
||||
}
|
||||
|
||||
@GetMapping("getEvaluateNum")
|
||||
public AjaxResult getEvaluateNum(String stateId) {
|
||||
Cnd cndGr = Cnd.NEW();
|
||||
cndGr.and("stateId", "=", stateId).and("honorTypeId", "=", "8a8b455b964a41f2bbf18a4896cbd83e");
|
||||
Cnd cndJt = Cnd.NEW();
|
||||
cndJt.and("stateId", "=", stateId).and("honorTypeId", "=", "6b9e26a9467f49ae88fbd3951377e0f8");
|
||||
if ("1440".equals(stateId) && !AuthUtil.hasAnyRoles("admin")) {
|
||||
cndGr.and("unionId", "=", SecurityUtils.getUnionId());
|
||||
cndJt.and("unionId", "=", SecurityUtils.getUnionId());
|
||||
}
|
||||
if ("1470".equals(stateId) && !AuthUtil.hasAnyRoles("admin")) {
|
||||
cndGr.and("unitId", "=", SecurityUtils.getDeptId());
|
||||
cndJt.and("unitId", "=", SecurityUtils.getDeptId());
|
||||
}
|
||||
int gr = dao.count(EvaluateApply.class, cndGr);
|
||||
int jt = dao.count(EvaluateApply.class, cndJt);
|
||||
Map<String, Integer> map = Map.of("gr", gr, "jt", jt);
|
||||
return AjaxResult.success(map);
|
||||
}
|
||||
|
||||
@PostMapping("doDelete/{id}")
|
||||
@RequiresPermissions("additional:honor:basicDataManage")
|
||||
public AjaxResult doDelete(@PathVariable String id) {
|
||||
List<String> allChildIds = getAllChildIds(id, new ArrayList<>());
|
||||
allChildIds.add(id);
|
||||
honorBasicSettingsService.clear(Cnd.where("id", "in", allChildIds));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
private List<HonorBasicSettings> child(String parentId) {
|
||||
List<HonorBasicSettings> basicSettings = honorBasicSettingsService.query(Cnd.where("parentId", "=", parentId).asc("code"));
|
||||
basicSettings.forEach(setting -> {
|
||||
setting.setChildren(child(setting.getId()));
|
||||
});
|
||||
return basicSettings;
|
||||
}
|
||||
|
||||
private List<String> getAllChildIds(String parentId, List<String> ids) {
|
||||
List<String> idList = ids;
|
||||
List<HonorBasicSettings> basicSettings = honorBasicSettingsService.query(Cnd.where("parentId", "=", parentId));
|
||||
basicSettings.forEach(v -> {
|
||||
idList.add(v.getId());
|
||||
getAllChildIds(v.getId(), ids);
|
||||
});
|
||||
return idList;
|
||||
}
|
||||
}
|
||||
+175
@@ -0,0 +1,175 @@
|
||||
package com.ruoyi.additional.controller.honor;
|
||||
|
||||
import cn.afterturn.easypoi.excel.ExcelImportUtil;
|
||||
import cn.afterturn.easypoi.excel.entity.ImportParams;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
|
||||
import com.ruoyi.additional.api.domain.honor.Honor;
|
||||
import com.ruoyi.additional.api.domain.honor.HonorBasicSettings;
|
||||
import com.ruoyi.additional.service.honor.HonorBasicSettingsService;
|
||||
import com.ruoyi.additional.service.honor.HonorBatchRegisterService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.system.api.domain.SysDictData;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.InputStream;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/3
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/honor/batchRegister")
|
||||
public class HonorBatchRegisterController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private HonorBatchRegisterService honorBatchRegisterService;
|
||||
|
||||
@Autowired
|
||||
private HonorBasicSettingsService honorBasicSettingsViService;
|
||||
|
||||
private static final String HonorLevelId = "3c1058afc91b4e69be46c585b1a48191";
|
||||
|
||||
private static final String HONORSINGLEID = "8a8b455b964a41f2bbf18a4896cbd83e";
|
||||
|
||||
private static final String HONORLISTID = "6b9e26a9467f49ae88fbd3951377e0f8";
|
||||
|
||||
private static final String HONORWORKROOMID = "103a47ed06e54dab8195f52741d1df07";
|
||||
|
||||
private static final String HONORAWARDID = "afd9dc97cd7e46c3b9cee5893386d202";
|
||||
|
||||
@RequestMapping(value = "/downLoadExcelTemplate")
|
||||
public void downLoadExcelTemplate(String lx, HttpServletResponse response) {
|
||||
String fileName = "";
|
||||
String filePath = "";
|
||||
if ("1".equals(lx)) {
|
||||
fileName = "个人荣誉模板.xlsx";
|
||||
filePath = "honor/personal_honor.xlsx";
|
||||
} else if("2".equals(lx)) {
|
||||
fileName = "集体荣誉模板.xlsx";
|
||||
filePath = "honor/collective_honor.xlsx";
|
||||
} else {
|
||||
fileName = "创新工作室模板.xlsx";
|
||||
filePath = "honor/workRoom_honor.xlsx";
|
||||
}
|
||||
try {
|
||||
response.setHeader("Content-Disposition", "attachment;filename="
|
||||
.concat(String.valueOf(URLEncoder.encode(fileName, "UTF-8"))));
|
||||
InputStream fin = Thread.currentThread().getContextClassLoader().getResourceAsStream("templates/" + filePath);
|
||||
assert fin != null;
|
||||
IOUtils.copy(fin, response.getOutputStream());
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@PostMapping("/readExcel")
|
||||
public AjaxResult readExcel(@RequestParam(name = "file") MultipartFile multipartFile,
|
||||
@RequestParam(name = "lx") String lx) {
|
||||
try {
|
||||
ImportParams importParams = new ImportParams();
|
||||
List<Honor> list = ExcelImportUtil.importExcel(multipartFile.getInputStream(), Honor.class, importParams);
|
||||
return AjaxResult.success(honorBatchRegisterService.checkData(list, lx));
|
||||
} catch (Exception e) {
|
||||
return AjaxResult.warn(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@PostMapping("/importData")
|
||||
public AjaxResult importData(@RequestBody List<Honor> honorList,
|
||||
@RequestParam(value = "lx", required = false) String lx) {
|
||||
|
||||
DynamicDataSourceContextHolder.push("system");
|
||||
List<SysDictData> dictDataList = dao.query(SysDictData.class, Cnd.where("dict_type", "=", "user_state"));
|
||||
DynamicDataSourceContextHolder.clear();
|
||||
Map<String, String> dictMap = dictDataList.stream().collect(Collectors.toMap(SysDictData::getDictLabel, SysDictData::getDictValue));
|
||||
|
||||
honorList.forEach(v -> {
|
||||
|
||||
if(StrUtil.isNotBlank(v.getJobStatus())) {
|
||||
v.setJobStatus(dictMap.get(v.getJobStatus()) != null ? dictMap.get(v.getJobStatus()) : "");
|
||||
}
|
||||
|
||||
if ("1".equals(lx)) {
|
||||
v.setHonorType(getBasicIdByName("个人荣誉"));
|
||||
} else if("2".equals(lx)) {
|
||||
v.setHonorType(getBasicIdByName("集体荣誉"));
|
||||
} else {
|
||||
v.setHonorType(getBasicIdByName("创新工作室"));
|
||||
}
|
||||
|
||||
v.setUserSex("男".equals(v.getUserSex()) ? "0" : "1");
|
||||
|
||||
//荣誉等级
|
||||
String levelId = getBasicIdByName(v.getHonorLevel());
|
||||
if (StrUtil.isNotBlank(v.getHonorLevel())) {
|
||||
if (StrUtil.isBlank(levelId)) {
|
||||
HonorBasicSettings hbs = new HonorBasicSettings();
|
||||
hbs.setName(v.getHonorLevel());
|
||||
hbs.setParentId(HonorLevelId);
|
||||
v.setHonorLevel(insertBasic(hbs));
|
||||
} else {
|
||||
v.setHonorLevel(levelId);
|
||||
}
|
||||
}
|
||||
|
||||
//奖项
|
||||
String prizeId = getBasicIdByName(v.getPrize());
|
||||
if (StrUtil.isNotBlank(v.getPrize())) {
|
||||
if (StrUtil.isBlank(prizeId)) {
|
||||
HonorBasicSettings hbs = new HonorBasicSettings();
|
||||
hbs.setName(v.getPrize());
|
||||
if("1".equals(lx)) {
|
||||
hbs.setParentId(HONORSINGLEID);
|
||||
} else if("2".equals(lx)) {
|
||||
hbs.setParentId(HONORLISTID);
|
||||
} else {
|
||||
hbs.setParentId(HONORWORKROOMID);
|
||||
}
|
||||
v.setPrize(insertBasic(hbs));
|
||||
} else {
|
||||
v.setPrize(prizeId);
|
||||
}
|
||||
}
|
||||
|
||||
//获奖材料
|
||||
List<String> awardMaterialsInsert = new ArrayList<>();
|
||||
String awardMaterialsExcel = v.getAwardMaterialsExcel();
|
||||
if (StrUtil.isNotBlank(awardMaterialsExcel)) {
|
||||
String[] awardMaterialsExcelArray = awardMaterialsExcel.split("、");
|
||||
for (String s : awardMaterialsExcelArray) {
|
||||
awardMaterialsInsert.add(getBasicIdByName(s));
|
||||
}
|
||||
v.setAwardMaterials(awardMaterialsInsert);
|
||||
}
|
||||
dao.insert(v);
|
||||
});
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
private String insertBasic(HonorBasicSettings honorBasicSettings) {
|
||||
return honorBasicSettingsViService.insert(honorBasicSettings).getId();
|
||||
}
|
||||
|
||||
private String getBasicIdByName(String name) {
|
||||
List<HonorBasicSettings> query = honorBasicSettingsViService.query();
|
||||
Optional<HonorBasicSettings> hbs = query.stream().filter(x -> x.getName().equals(name)).findFirst();
|
||||
return hbs.map(HonorBasicSettings::getId).orElse(null);
|
||||
}
|
||||
}
|
||||
+94
@@ -0,0 +1,94 @@
|
||||
package com.ruoyi.additional.controller.honor;
|
||||
|
||||
import com.ruoyi.additional.service.honor.HonorManageService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.Calendar;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/3
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/honor/dataBoard")
|
||||
public class HonorDataBoardController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private HonorManageService honorManageService;
|
||||
|
||||
@GetMapping("getHonorTypeByYear")
|
||||
@RequiresPermissions("additional:honor:dataBoard")
|
||||
public AjaxResult getHonorTypeByYear() {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT YEAR
|
||||
( h.grantDate ) as year,
|
||||
hbs.`name`,
|
||||
count( 1 ) as num
|
||||
FROM
|
||||
honor h
|
||||
left join honor_basic_settings hbs on hbs.id = h.honorType
|
||||
WHERE YEAR (h.grantDate) <= @currentYear
|
||||
GROUP BY
|
||||
YEAR (h.grantDate)
|
||||
ORDER BY
|
||||
h.grantDate
|
||||
""");
|
||||
sql.setParam("currentYear", Calendar.getInstance().get(Calendar.YEAR));
|
||||
return AjaxResult.success(honorManageService.list(sql));
|
||||
}
|
||||
|
||||
@GetMapping("getSingleHonorByYear")
|
||||
@RequiresPermissions("additional:honor:dataBoard")
|
||||
public AjaxResult getSingleHonorByYear() {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
hbs.`name`,
|
||||
count( 1 ) AS num,
|
||||
YEAR ( h.grantDate ) as year
|
||||
FROM
|
||||
honor h
|
||||
LEFT JOIN honor_basic_settings hbs ON hbs.id = h.prize
|
||||
WHERE
|
||||
h.honorType = '8a8b455b964a41f2bbf18a4896cbd83e'
|
||||
AND YEAR (h.grantDate) <= @currentYear
|
||||
GROUP BY
|
||||
h.prize
|
||||
""");
|
||||
sql.setParam("currentYear", Calendar.getInstance().get(Calendar.YEAR));
|
||||
return AjaxResult.success(honorManageService.list(sql));
|
||||
}
|
||||
|
||||
@GetMapping("getSingleLevelByYear")
|
||||
@RequiresPermissions("additional:honor:dataBoard")
|
||||
public AjaxResult getSingleLevelByYear() {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
hbs.`name`,
|
||||
count( 1 ) AS num,
|
||||
YEAR ( h.grantDate ) AS YEAR
|
||||
FROM
|
||||
honor h
|
||||
LEFT JOIN honor_basic_settings hbs ON hbs.id = h.honorLevel
|
||||
WHERE
|
||||
h.honorLevel IS NOT NULL
|
||||
AND h.honorType = '8a8b455b964a41f2bbf18a4896cbd83e'
|
||||
AND YEAR ( h.grantDate ) <= @currentYear
|
||||
GROUP BY
|
||||
h.honorLevel
|
||||
""");
|
||||
sql.setParam("currentYear", Calendar.getInstance().get(Calendar.YEAR));
|
||||
return AjaxResult.success(honorManageService.list(sql));
|
||||
}
|
||||
}
|
||||
+227
@@ -0,0 +1,227 @@
|
||||
package com.ruoyi.additional.controller.honor;
|
||||
|
||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||
import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.http.HtmlUtil;
|
||||
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
|
||||
import com.ruoyi.additional.api.domain.honor.Honor;
|
||||
import com.ruoyi.additional.api.domain.honor.HonorBasicSettings;
|
||||
import com.ruoyi.additional.service.honor.HonorBasicSettingsService;
|
||||
import com.ruoyi.additional.service.honor.HonorManageService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.system.api.domain.SysDictData;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.json.Json;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/3
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/honor/honorLedger")
|
||||
public class HonorLedgerController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private HonorManageService honorManageService;
|
||||
|
||||
@Autowired
|
||||
private HonorBasicSettingsService honorBasicSettingsService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("additional:honor:honorLedger")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "year", required = false) Integer year,
|
||||
@RequestParam(value = "honorType", required = false) String honorType,
|
||||
@RequestParam(value = "prize", required = false) String prize,
|
||||
@RequestParam(value = "honorLevel", required = false) String honorLevel,
|
||||
@RequestParam(value = "userName", required = false) String userName,
|
||||
@RequestParam(value = "unitName", required = false) String unitName) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
h.*,
|
||||
prize.`name` AS prizeName,
|
||||
type.`name` AS typeName,
|
||||
`level`.`name` AS levelName,
|
||||
award.`name` AS awardName
|
||||
FROM
|
||||
`honor` h
|
||||
LEFT JOIN honor_basic_settings prize ON prize.id = h.prize
|
||||
LEFT JOIN honor_basic_settings type ON type.id = h.honorType
|
||||
LEFT JOIN honor_basic_settings `level` ON `level`.id = h.honorLevel
|
||||
LEFT JOIN honor_basic_settings `award` ON `award`.id = h.awardType
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("YEAR(h.grantDate)", "=", year);
|
||||
cnd.andEX("h.honorType", "=", honorType);
|
||||
cnd.andEX("h.prize", "=", prize);
|
||||
cnd.andEX("h.honorLevel", "=", honorLevel);
|
||||
if (Strings.isNotBlank(userName)) {
|
||||
cnd.andEX("h.userName", "like", "%" + userName + "%");
|
||||
}
|
||||
if (Strings.isNotBlank(unitName)) {
|
||||
cnd.andEX("h.unitName", "like", "%" + unitName + "%");
|
||||
}
|
||||
if (StrUtil.isNotBlank(pageForm.getPageOrderName()) && StrUtil.isNotBlank(pageForm.getPageOrderBy())) {
|
||||
cnd.orderBy(pageForm.getPageOrderName(), pageForm.getPageOrderBy());
|
||||
}
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = honorManageService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
List<NutMap> list = pagination.getList();
|
||||
list.forEach(v -> {
|
||||
if (StrUtil.isNotBlank(v.getString("awardMaterials"))) {
|
||||
v.setv("awardMaterialsExcel", getBasicNameById(v.getString("awardMaterials")).toString());
|
||||
}
|
||||
});
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@PostMapping("doDelete/{id}")
|
||||
@RequiresPermissions("additional:honor:honorLedger")
|
||||
public AjaxResult doDelete(@PathVariable String id) {
|
||||
honorManageService.delete(id);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@RequestMapping("doExport")
|
||||
public void doExport(@RequestParam(value = "year", required = false) Integer year,
|
||||
@RequestParam(value = "honorType", required = false) String honorType,
|
||||
@RequestParam(value = "prize", required = false) String prize,
|
||||
@RequestParam(value = "honorLevel", required = false) String honorLevel,
|
||||
@RequestParam(value = "userName", required = false) String userName,
|
||||
@RequestParam(value = "unitName", required = false) String unitName,
|
||||
HttpServletResponse response) throws IOException {
|
||||
Map<String, Object> map = new HashMap<String, Object>();
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
h.*,
|
||||
prize.`name` AS prizeName,
|
||||
type.`name` AS typeName,
|
||||
`level`.`name` AS levelName,
|
||||
award.`name` AS awardName
|
||||
FROM
|
||||
`honor` h
|
||||
LEFT JOIN honor_basic_settings prize ON prize.id = h.prize
|
||||
LEFT JOIN honor_basic_settings type ON type.id = h.honorType
|
||||
LEFT JOIN honor_basic_settings `level` ON `level`.id = h.honorLevel
|
||||
LEFT JOIN honor_basic_settings `award` ON `award`.id = h.awardType
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("YEAR(h.grantDate)", "=", year);
|
||||
cnd.andEX("h.honorType", "=", honorType);
|
||||
cnd.andEX("h.prize", "=", prize);
|
||||
cnd.andEX("h.honorLevel", "=", honorLevel);
|
||||
if (Strings.isNotBlank(userName)) {
|
||||
cnd.andEX("h.userName", "like", "%" + userName + "%");
|
||||
}
|
||||
if (Strings.isNotBlank(unitName)) {
|
||||
cnd.andEX("h.unitName", "like", "%" + unitName + "%");
|
||||
}
|
||||
sql.setCondition(cnd);
|
||||
List<Honor> honors = honorManageService.listEntity(sql);
|
||||
|
||||
DynamicDataSourceContextHolder.push("system");
|
||||
List<SysDictData> dictDataList = dao.query(SysDictData.class, Cnd.where("dict_type", "=", "user_state"));
|
||||
List<SysDictData> sexDicts = dao.query(SysDictData.class, Cnd.where("dict_type", "=", "sys_user_sex"));
|
||||
DynamicDataSourceContextHolder.clear();
|
||||
Map<String, String> dictMap = dictDataList.stream().collect(Collectors.toMap(SysDictData::getDictValue, SysDictData::getDictLabel));
|
||||
Map<String, String> sexMap = sexDicts.stream().collect(Collectors.toMap(SysDictData::getDictValue, SysDictData::getDictLabel));
|
||||
|
||||
honors.forEach(v -> {
|
||||
if (v.getAwardMaterials() != null && v.getAwardMaterials().size() > 0) {
|
||||
List<String> basicNameById = getBasicNameById(Json.toJson(v.getAwardMaterials()));
|
||||
v.setAwardMaterialsExcel(basicNameById.toString());
|
||||
}
|
||||
if(StrUtil.isNotBlank(v.getJobStatus())) {
|
||||
v.setJobStatus(dictMap.get(v.getJobStatus()) != null ? dictMap.get(v.getJobStatus()) : "");
|
||||
}
|
||||
if(StrUtil.isNotBlank(v.getWorkRoomDesc())) {
|
||||
v.setWorkRoomDesc(HtmlUtil.cleanHtmlTag(v.getWorkRoomDesc()));
|
||||
}
|
||||
if(StrUtil.isNotBlank(v.getUserSex())){
|
||||
v.setUserSex(sexMap.get(v.getUserSex()) != null ? sexMap.get(v.getUserSex()) : "");
|
||||
}
|
||||
});
|
||||
|
||||
List<HonorBasicSettings> query = honorBasicSettingsService.query();
|
||||
|
||||
Optional<HonorBasicSettings> singleHonor = query.stream().filter(x -> x.getId().equals(honorType)).findFirst();
|
||||
String filename = "";
|
||||
TemplateExportParams params;
|
||||
if ("个人荣誉".equals(singleHonor.get().getName())) {
|
||||
filename = "个人荣誉";
|
||||
params = new TemplateExportParams(
|
||||
"templates/honor/personal_export.xlsx");
|
||||
} else if("集体荣誉".equals(singleHonor.get().getName())) {
|
||||
filename = "集体荣誉";
|
||||
params = new TemplateExportParams(
|
||||
"templates/honor/collective_export.xlsx");
|
||||
} else {
|
||||
filename = "创新工作室";
|
||||
params = new TemplateExportParams(
|
||||
"templates/honor/workRoom_export.xlsx");
|
||||
}
|
||||
|
||||
honors.forEach(v -> {
|
||||
if (v.getHonorLevel() != null) {
|
||||
Optional<HonorBasicSettings> Level = query.stream().filter(x -> x.getId().equals(v.getHonorLevel())).findFirst();
|
||||
v.setHonorLevel(Level.get().getName());
|
||||
}
|
||||
if (v.getAwardType() != null) {
|
||||
Optional<HonorBasicSettings> Type = query.stream().filter(x -> x.getId().equals(v.getAwardType())).findFirst();
|
||||
v.setAwardType(Type.get().getName());
|
||||
}
|
||||
if (v.getPrize() != null) {
|
||||
Optional<HonorBasicSettings> prize1 = query.stream().filter(x -> x.getId().equals(v.getPrize())).findFirst();
|
||||
v.setPrize(prize1.get().getName());
|
||||
|
||||
}
|
||||
v.setHonorType(singleHonor.get().getName());
|
||||
});
|
||||
|
||||
map.put("maplist", honors);
|
||||
|
||||
String disposition = "attachment;filename=" + URLEncoder.encode(filename + "名单.xlsx", "utf-8");
|
||||
response.setCharacterEncoding("utf-8");
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", disposition);
|
||||
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(params, map);
|
||||
workbook.write(response.getOutputStream());
|
||||
workbook.close();
|
||||
}
|
||||
|
||||
private List<String> getBasicNameById(String awardMaterials) {
|
||||
List<String> awardMaterialList = Json.fromJsonAsList(String.class, awardMaterials);
|
||||
List<HonorBasicSettings> list = dao.query(HonorBasicSettings.class, Cnd.where("id", "in", awardMaterialList));
|
||||
return list.stream().map(HonorBasicSettings::getName).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
}
|
||||
+75
@@ -0,0 +1,75 @@
|
||||
package com.ruoyi.additional.controller.honor;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
|
||||
import com.ruoyi.additional.api.domain.honor.Honor;
|
||||
import com.ruoyi.additional.constant.Ds;
|
||||
import com.ruoyi.additional.util.ProModuleDS;
|
||||
import com.ruoyi.common.core.constant.Roles;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.system.api.domain.SysUnion;
|
||||
import com.ruoyi.system.api.domain.SysUser;
|
||||
import com.ruoyi.system.api.domain.SysUserRole;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.entity.Record;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/3
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/honor/register")
|
||||
public class HonorRegisterController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@PostMapping("doSubmit")
|
||||
@RequiresPermissions("additional:honor:register")
|
||||
public AjaxResult doSubmit(@RequestBody Honor honor) {
|
||||
if (!StrUtil.isBlank(honor.getUserName())) {
|
||||
Record record = dao.fetch("user", Cnd.NEW().and("userId", "=", honor.getUserId()));
|
||||
honor.setUserName(record.getString("username"));
|
||||
}
|
||||
if (StrUtil.isNotBlank(honor.getUnionId())) {
|
||||
SysUnion union = ProModuleDS.exec(Ds.SYSTEM, () -> {
|
||||
return dao.fetch(SysUnion.class, honor.getUnionId());
|
||||
});
|
||||
honor.setUnionName(union.getUnionName());
|
||||
}
|
||||
dao.insertOrUpdate(honor);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("findData/{id}")
|
||||
@RequiresPermissions("additional:honor:register")
|
||||
public AjaxResult findData(@PathVariable String id) {
|
||||
Honor honor = dao.fetch(Honor.class, id);
|
||||
return AjaxResult.success(honor);
|
||||
}
|
||||
|
||||
@PostMapping("getUnitPersonCount")
|
||||
@RequiresPermissions("additional:honor:register")
|
||||
public AjaxResult getUnitPersonCount(@RequestParam(name = "id", required = false) String id) {
|
||||
|
||||
DynamicDataSourceContextHolder.push("system");
|
||||
List<SysUserRole> userRoles = dao.query(SysUserRole.class, Cnd.where("roleId", "=", Roles.UNIT_PRINCIPAL));
|
||||
List<Long> idList = userRoles.stream().map(SysUserRole::getUserId).collect(Collectors.toList());
|
||||
List<SysUser> users = dao.query(SysUser.class, Cnd.where("deptId", "=", id));
|
||||
String unitLeader = users.stream().filter(o -> idList.contains(o.getUserId())).map(SysUser::getNickName).collect(Collectors.joining(","));
|
||||
|
||||
long count = users.stream().filter(o -> "1".equals(o.getSex())).count();
|
||||
DynamicDataSourceContextHolder.clear();
|
||||
return AjaxResult.success(Map.of("unitLeader", unitLeader, "totalCount", users.size(), "womenCount", count));
|
||||
}
|
||||
}
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
package com.ruoyi.additional.controller.honor;
|
||||
|
||||
import com.ruoyi.additional.service.honor.HonorManageService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/3
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/honor/honorSummary")
|
||||
public class HonorSummaryController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private HonorManageService honorManageService;
|
||||
|
||||
private static final String HONORSINGLEID = "8a8b455b964a41f2bbf18a4896cbd83e";
|
||||
private static final String HONORLISTID = "6b9e26a9467f49ae88fbd3951377e0f8";
|
||||
private static final String HONORWORKROOMID = "103a47ed06e54dab8195f52741d1df07";
|
||||
private static final String nationalLevel = "21a118f4c771400aa8b911a0cd203289";
|
||||
private static final String provincial = "e13ce814a6db48ad8b8491985c1da964";
|
||||
private static final String schoolLevel = "65772a664e034121bb245eeff66ea1b5";
|
||||
|
||||
|
||||
@PostMapping("unionData")
|
||||
@RequiresPermissions("additional:honor:summary:unionSummary")
|
||||
public AjaxResult unionData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "year", required = false) Integer year,
|
||||
@RequestParam(value = "unionId", required = false) String unionId) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
id,
|
||||
unionName as unionname,
|
||||
( SELECT COUNT( 1 ) FROM honor h WHERE h.honorType = @personalHonor AND h.unionId = un.id $cnd) personalHonorNum,
|
||||
( SELECT COUNT( 1 ) FROM honor h WHERE h.honorType = @collectiveHonor AND h.unionId = un.id $cnd) collectiveHonorNum,
|
||||
( SELECT COUNT( 1 ) FROM honor h WHERE h.honorType = @workRoomHonor AND h.unionId = un.id $cnd) workRoomHonorNum
|
||||
FROM
|
||||
`union` un $condition
|
||||
""")
|
||||
.setParam("personalHonor", HONORSINGLEID)
|
||||
.setParam("collectiveHonor", HONORLISTID)
|
||||
.setParam("workRoomHonor", HONORWORKROOMID);
|
||||
cnd.andEX("id", "=", unionId);
|
||||
if (year != null) {
|
||||
sql.setVar("cnd", "and YEAR(grantDate)=" + year);
|
||||
}
|
||||
cnd.desc("unionname");
|
||||
sql.setCondition(cnd);
|
||||
return AjaxResult.success(honorManageService.listMap(sql));
|
||||
}
|
||||
|
||||
@PostMapping("honorLevelData")
|
||||
@RequiresPermissions("additional:honor:summary:unionSummary")
|
||||
public AjaxResult honorLevelData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "year", required = false) Integer year,
|
||||
@RequestParam(value = "unionId", required = false) String unionId) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
id,
|
||||
unionName as unionname,
|
||||
( SELECT COUNT( 1 ) FROM honor h WHERE h.honorLevel = @nationalLevel AND h.unionId = un.id $cnd) nationalLevelNum,
|
||||
( SELECT COUNT( 1 ) FROM honor h WHERE h.honorLevel = @provincial AND h.unionId = un.id $cnd) provincialNum ,
|
||||
( SELECT COUNT( 1 ) FROM honor h WHERE h.honorLevel = @schoolLevel AND h.unionId = un.id $cnd) schoolLevelNum
|
||||
FROM
|
||||
`union` un $condition
|
||||
""").setParam("nationalLevel", nationalLevel).setParam("provincial", provincial).setParam("schoolLevel", schoolLevel);
|
||||
cnd.andEX("id", "=", unionId);
|
||||
if (year != null) {
|
||||
sql.setVar("cnd", "and YEAR(grantDate)=" + year);
|
||||
}
|
||||
cnd.desc("unionname");
|
||||
sql.setCondition(cnd);
|
||||
return AjaxResult.success(honorManageService.listMap(sql));
|
||||
}
|
||||
}
|
||||
+144
@@ -0,0 +1,144 @@
|
||||
package com.ruoyi.additional.controller.medical;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.additional.api.constant.medical.MedicalAuditState;
|
||||
import com.ruoyi.additional.api.constant.medical.MedicalPageForm;
|
||||
import com.ruoyi.additional.api.domain.Audit;
|
||||
import com.ruoyi.additional.api.domain.medical.MedicalAid;
|
||||
import com.ruoyi.additional.service.medical.MedicalAidOrdinaryApplyService;
|
||||
import com.ruoyi.common.core.constant.AuditConstants;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/medicalAid/branchUnionAudit")
|
||||
public class MedicalAidBranchUnionAuditController {
|
||||
|
||||
@Autowired
|
||||
private MedicalAidOrdinaryApplyService ordinaryApplyService;
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
/**
|
||||
* 页面数据
|
||||
*
|
||||
* @param pageForm 页面形式
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@RequestMapping("pageData")
|
||||
@RequiresPermissions("medical:branchUnionAudit")
|
||||
public AjaxResult pageData(@RequestBody MedicalPageForm pageForm) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
m.id,
|
||||
m.loginName,
|
||||
m.userName,
|
||||
m.applyTime,
|
||||
m.diseaseDiagnosis,
|
||||
m.hospital,
|
||||
m.diseaseTypeId,
|
||||
m.type,
|
||||
m.stateId,
|
||||
state.stateName,
|
||||
t.typeName as diseaseTypeName
|
||||
FROM
|
||||
medical_aid m
|
||||
LEFT JOIN audit_state state ON state.stateId = m.stateId
|
||||
LEFT JOIN medical_aid_disease_type t on t.id = m.diseaseTypeId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (!AuthUtil.hasAnyRoles("admin")) {
|
||||
cnd.and("m.unionId", "=", SecurityUtils.getUnionId());
|
||||
}
|
||||
|
||||
cnd.andEX("m.type", "=", pageForm.getType());
|
||||
cnd.andEX("m.year", "=", pageForm.getYear());
|
||||
|
||||
if (pageForm.getIsAudit() == null) {
|
||||
cnd.and("m.stateId", ">=", MedicalAuditState.BRANCH_UNION_READY);
|
||||
} else if (pageForm.getIsAudit()) {
|
||||
cnd.and("m.stateId", ">", MedicalAuditState.BRANCH_UNION_READY);
|
||||
} else {
|
||||
cnd.and("m.stateId", "=", MedicalAuditState.BRANCH_UNION_READY);
|
||||
}
|
||||
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.orLike("m.userName", pageForm.getSearchKeyword());
|
||||
seg.orLike("m.loginName", pageForm.getSearchKeyword());
|
||||
cnd.and(seg);
|
||||
}
|
||||
|
||||
cnd.desc("m.applyTime");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = ordinaryApplyService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
/**
|
||||
* 做撤销
|
||||
*
|
||||
* @param id id
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@RequestMapping("doRevoke")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@RequiresPermissions("medical:branchUnionAudit")
|
||||
public AjaxResult doRevoke(@RequestParam String id) {
|
||||
MedicalAid medicalAid = dao.fetch(MedicalAid.class, id);
|
||||
String branchUnionAuditId = medicalAid.getBranchUnionAuditId();
|
||||
dao.delete(Audit.class, branchUnionAuditId);
|
||||
Chain chain = Chain.make("branchUnionAuditId", null);
|
||||
chain.add("stateId", MedicalAuditState.BRANCH_UNION_READY);
|
||||
dao.update(MedicalAid.class, chain, Cnd.where("id", "=", id));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 做审核
|
||||
*
|
||||
* @param audit 审计
|
||||
* @param ids id
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@PostMapping("/doSubmit")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@RequiresPermissions("medical:branchUnionAudit")
|
||||
public AjaxResult doSubmit(@RequestBody Audit audit, @RequestParam(name = "ids[]") String[] ids) {
|
||||
dao.insert(audit);
|
||||
List<MedicalAid> medicalAids = dao.query(MedicalAid.class, Cnd.where("id", "in", ids));
|
||||
for (MedicalAid medicalAid : medicalAids) {
|
||||
medicalAid.setBranchUnionAuditId(audit.getId());
|
||||
List<String> unionAuditIds = Optional.ofNullable(medicalAid.getBranchUnionAuditIds()).orElse(new ArrayList<>());
|
||||
unionAuditIds.add(audit.getId());
|
||||
medicalAid.setBranchUnionAuditIds(unionAuditIds);
|
||||
|
||||
switch (audit.getAuditResult()) {
|
||||
case AuditConstants.PASS -> medicalAid.setStateId(MedicalAuditState.SCHOOL_HOSPITAL_READY);
|
||||
case AuditConstants.REJECT -> medicalAid.setStateId(MedicalAuditState.BRANCH_UNION_REJECTED);
|
||||
case AuditConstants.BACK -> medicalAid.setStateId(MedicalAuditState.BRANCH_UNION_BACK_MODIFY);
|
||||
}
|
||||
}
|
||||
dao.updateIgnoreNull(medicalAids);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
}
|
||||
+184
@@ -0,0 +1,184 @@
|
||||
package com.ruoyi.additional.controller.medical;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.ruoyi.additional.api.constant.aidFundMember.AidFundMemberMode;
|
||||
import com.ruoyi.additional.api.constant.medical.MedicalAuditState;
|
||||
import com.ruoyi.additional.service.medical.MedicalAidOrdinaryApplyService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.utils.DictUtils;
|
||||
import com.ruoyi.system.api.domain.SysDictData;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.dao.util.Daos;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/medical/dashBoard")
|
||||
public class MedicalAidDashBoardController {
|
||||
|
||||
@Autowired
|
||||
private MedicalAidOrdinaryApplyService aidOrdinaryApplyService;
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
/**
|
||||
* 各工会会员数
|
||||
*/
|
||||
@RequestMapping("unionMember")
|
||||
@RequiresPermissions("medical:dashBoard")
|
||||
public AjaxResult unionMember() {
|
||||
String str = """
|
||||
SELECT
|
||||
un.unionName,
|
||||
un.unionCode,
|
||||
( SELECT count( 1 ) FROM `user` WHERE unionId = un.id and aidFundMember = @code ) `value`
|
||||
FROM
|
||||
`union` un
|
||||
ORDER BY
|
||||
$order
|
||||
""";
|
||||
List<NutMap> chartData = aidOrdinaryApplyService.listMap(Sqls.create(str).setParam("code", AidFundMemberMode.NORMAL.getCode()).setVar("order", "un.unionCode"));
|
||||
List<NutMap> tableData = aidOrdinaryApplyService.listMap(Sqls.create(str).setParam("code", AidFundMemberMode.NORMAL.getCode()).setVar("order", "un.unionCode"));
|
||||
return AjaxResult.success(Map.of("chartData", chartData, "tableData", tableData));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据在职状态查找会员数
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("userStateMember")
|
||||
@RequiresPermissions("medical:dashBoard")
|
||||
public Object userStateMember() {
|
||||
List<SysDictData> userStateDicts = Optional.ofNullable(DictUtils.getDictCache("user_state")).orElse(Collections.emptyList());
|
||||
StringBuilder userStateSqlStr = new StringBuilder();
|
||||
for (int i = 0; i < userStateDicts.size(); i++) {
|
||||
userStateSqlStr.append("(SELECT COUNT(1) FROM `user` WHERE aidFundMember = %d AND userState = '%s') as '%s'".formatted(AidFundMemberMode.NORMAL.getCode(), userStateDicts.get(i).getDictValue(), userStateDicts.get(i).getDictLabel()));
|
||||
if (i < userStateDicts.size() - 1) {
|
||||
userStateSqlStr.append(",");
|
||||
}
|
||||
}
|
||||
|
||||
Sql sql = Sqls.create("SELECT $userStateSql ");
|
||||
sql.setVar("userStateSql", userStateSqlStr.toString());
|
||||
NutMap nutMap = aidOrdinaryApplyService.fetch(sql);
|
||||
|
||||
List<NutMap> list = userStateDicts.stream().map(v -> NutMap.NEW().addv("name", v.getDictLabel())
|
||||
.addv("type", v.getDictValue())
|
||||
.addv("value", nutMap.getInt(v.getDictLabel(), 0))).collect(Collectors.toList());
|
||||
|
||||
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据人员类型查找会员数
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("personTypeMember")
|
||||
@RequiresPermissions("medical:dashBoard")
|
||||
public Object personTypeMember() {
|
||||
List<SysDictData> userStateDicts = Optional.ofNullable(DictUtils.getDictCache("user_type")).orElse(Collections.emptyList());
|
||||
StringBuilder userStateSqlStr = new StringBuilder();
|
||||
for (int i = 0; i < userStateDicts.size(); i++) {
|
||||
userStateSqlStr.append("(SELECT COUNT(1) FROM `user` WHERE aidFundMember = %d AND personType = '%s') as '%s'".formatted(AidFundMemberMode.NORMAL.getCode(), userStateDicts.get(i).getDictValue(), userStateDicts.get(i).getDictLabel()));
|
||||
if (i < userStateDicts.size() - 1) {
|
||||
userStateSqlStr.append(",");
|
||||
}
|
||||
}
|
||||
|
||||
Sql sql = Sqls.create("SELECT $userStateSql ");
|
||||
sql.setVar("userStateSql", userStateSqlStr.toString());
|
||||
NutMap nutMap = aidOrdinaryApplyService.fetch(sql);
|
||||
|
||||
List<NutMap> list = userStateDicts.stream().map(v -> NutMap.NEW().addv("name", v.getDictLabel())
|
||||
.addv("label", v.getDictLabel())
|
||||
.addv("value", nutMap.getInt(v.getDictLabel(), 0))).collect(Collectors.toList());
|
||||
|
||||
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询基金会员总数
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
|
||||
@RequestMapping("getAidFundMember")
|
||||
@RequiresPermissions("medical:dashBoard")
|
||||
public Object getAidFundMember() {
|
||||
int count = dao.count("user", Cnd.where("aidFundMember", "=", AidFundMemberMode.NORMAL.getCode()));
|
||||
return AjaxResult.success(count);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询本年加入的基金会员
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
|
||||
@RequestMapping("getAidFundMemberYear")
|
||||
@RequiresPermissions("medical:dashBoard")
|
||||
public Object getAidFundMemberYear() {
|
||||
int count = dao.count("user", Cnd.where("aidFundMember", "=", AidFundMemberMode.NORMAL.getCode()).and("YEAR(aidFundMemberJoinTime)", "=", DateUtil.thisYear()));
|
||||
return AjaxResult.success(count);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询med医疗补助和weightMed重疾补助
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
|
||||
@RequestMapping("getAidMedical")
|
||||
@RequiresPermissions("medical:dashBoard")
|
||||
public AjaxResult getAidMedical() {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
sum( CASE WHEN type = '1' THEN 1 ELSE 0 END ) AS med,
|
||||
sum( CASE WHEN type = '2' THEN 1 ELSE 0 END ) AS weightMed
|
||||
FROM
|
||||
medical_aid
|
||||
""");
|
||||
return AjaxResult.success(aidOrdinaryApplyService.fetch(sql));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询全部补助金额
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
|
||||
@RequestMapping("getAidMedicalMoney")
|
||||
@RequiresPermissions("medical:dashBoard")
|
||||
public AjaxResult getAidMedicalMoney() {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
sum( ordinarySubsidiesAmount ) + sum( seriousSubsidiesAmount )\s
|
||||
FROM
|
||||
medical_aid
|
||||
WHERE stateId = @PASS
|
||||
""");
|
||||
sql.setParam("PASS", MedicalAuditState.PASS);
|
||||
double money = (double) Daos.query(dao, sql.toString(), Sqls.callback.doubleValue());
|
||||
return AjaxResult.success(money);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
package com.ruoyi.additional.controller.medical;
|
||||
|
||||
import com.ruoyi.additional.api.domain.medical.MedicalAidDiseaseType;
|
||||
import com.ruoyi.additional.service.medical.MedicalAidDiseaseTypeService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/medicalAid/diseaseType")
|
||||
public class MedicalAidDiseaseTypeController {
|
||||
|
||||
@Autowired
|
||||
private MedicalAidDiseaseTypeService diseaseTypeService;
|
||||
|
||||
@RequestMapping("/pageData")
|
||||
@RequiresPermissions("medical:diseaseType")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.orLike("typeCode", pageForm.getSearchKeyword());
|
||||
seg.orLike("typeName", pageForm.getSearchKeyword());
|
||||
cnd.and(seg);
|
||||
cnd.asc("typeCode");
|
||||
Pagination pagination = diseaseTypeService.listPage(pageForm.getPageNumber(), pageForm.getPageSize(), cnd);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@RequestMapping("/addAndModify")
|
||||
@RequiresPermissions("medical:diseaseType")
|
||||
public Object addAndModify(@RequestBody MedicalAidDiseaseType data) {
|
||||
diseaseTypeService.insertOrUpdate(data);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@RequestMapping("/doDelete")
|
||||
@RequiresPermissions("medical:diseaseType")
|
||||
public AjaxResult doDelete(@RequestParam String id) {
|
||||
diseaseTypeService.delete(id);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
}
|
||||
+187
@@ -0,0 +1,187 @@
|
||||
package com.ruoyi.additional.controller.medical;
|
||||
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.additional.api.constant.medical.MedicalAuditState;
|
||||
import com.ruoyi.additional.api.constant.medical.MedicalPageForm;
|
||||
import com.ruoyi.additional.api.constant.medical.MedicalType;
|
||||
import com.ruoyi.additional.api.domain.Audit;
|
||||
import com.ruoyi.additional.api.domain.medical.MedicalAid;
|
||||
import com.ruoyi.additional.service.medical.MedicalAidOrdinaryApplyService;
|
||||
import com.ruoyi.common.core.constant.AuditConstants;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 财务出纳
|
||||
*
|
||||
* @author jug
|
||||
* @date 2023/02/21
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/medicalAid/financialCashierAudit")
|
||||
public class MedicalAidFinancialCashierAuditController {
|
||||
|
||||
@Autowired
|
||||
private MedicalAidOrdinaryApplyService ordinaryApplyService;
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
/**
|
||||
* 页面数据
|
||||
*
|
||||
* @param pageForm 页面形式
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@RequestMapping("pageData")
|
||||
@RequiresPermissions("medical:financialCashierAudit")
|
||||
public AjaxResult pageData(@RequestBody MedicalPageForm pageForm) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
m.id,
|
||||
m.loginName,
|
||||
m.userName,
|
||||
m.unionName,
|
||||
m.unitName,
|
||||
m.applyTime,
|
||||
m.diseaseDiagnosis,
|
||||
m.bankName,
|
||||
m.bankAccount,
|
||||
m.subsidiesAmount,
|
||||
m.hospital,
|
||||
m.diseaseTypeId,
|
||||
m.type,
|
||||
m.stateId,
|
||||
state.stateName,
|
||||
t.typeName as diseaseTypeName
|
||||
FROM
|
||||
medical_aid m
|
||||
LEFT JOIN audit_state state ON state.stateId = m.stateId
|
||||
LEFT JOIN medical_aid_disease_type t on t.id = m.diseaseTypeId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("m.type", "=", pageForm.getType());
|
||||
cnd.andEX("m.year", "=", pageForm.getYear());
|
||||
cnd.andEX("m.unionId", "=", pageForm.getUnionId());
|
||||
cnd.andEX("m.unitId", "=", pageForm.getUnitId());
|
||||
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.orLike("m.userName", pageForm.getSearchKeyword());
|
||||
seg.orLike("m.loginName", pageForm.getSearchKeyword());
|
||||
cnd.and(seg);
|
||||
}
|
||||
|
||||
if (pageForm.getIsMajorDisease() != null) {
|
||||
if (pageForm.getIsMajorDisease()) {
|
||||
cnd.and("t.typeCode", "!=", "A");
|
||||
} else {
|
||||
cnd.and("t.typeCode", "=", "A");
|
||||
}
|
||||
}
|
||||
|
||||
if (pageForm.getIsAudit() == null) {
|
||||
cnd.and("m.stateId", ">=", MedicalAuditState.FINANCIAL_CASHIER_READY);
|
||||
} else if (pageForm.getIsAudit()) {
|
||||
cnd.and("m.stateId", ">", MedicalAuditState.FINANCIAL_CASHIER_READY);
|
||||
} else {
|
||||
cnd.and("m.stateId", "=", MedicalAuditState.FINANCIAL_CASHIER_READY);
|
||||
}
|
||||
|
||||
cnd.desc("m.applyTime");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = ordinaryApplyService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
/**
|
||||
* 做撤销
|
||||
*
|
||||
* @param id id
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@RequestMapping("doRevoke")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@RequiresPermissions("medical:financialCashierAudit")
|
||||
public AjaxResult doRevoke(@RequestParam String id) {
|
||||
MedicalAid medicalAid = dao.fetch(MedicalAid.class, id);
|
||||
String financialCashierAuditId = medicalAid.getFinancialCashierAuditId();
|
||||
dao.delete(Audit.class, financialCashierAuditId);
|
||||
Chain chain = Chain.make("financialCashierAuditId", null);
|
||||
chain.add("stateId", MedicalAuditState.FINANCIAL_CASHIER_READY);
|
||||
dao.update(MedicalAid.class, chain, Cnd.where("id", "=", id));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 做审核
|
||||
*
|
||||
* @param audit 审计
|
||||
* @param ids ids
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@PostMapping("/doSubmit")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@RequiresPermissions("medical:financialCashierAudit")
|
||||
public AjaxResult doSubmit(@RequestBody Audit audit, @RequestParam(name = "ids[]") String[] ids) {
|
||||
dao.insert(audit);
|
||||
List<MedicalAid> medicalAids = dao.query(MedicalAid.class, Cnd.where("id", "in", ids));
|
||||
for (MedicalAid medicalAid : medicalAids) {
|
||||
medicalAid.setFinancialCashierAuditId(audit.getId());
|
||||
List<String> financialCashierAuditIds = Optional.ofNullable(medicalAid.getFinancialCashierAuditIds()).orElse(new ArrayList<>());
|
||||
financialCashierAuditIds.add(audit.getId());
|
||||
medicalAid.setFinancialCashierAuditIds(financialCashierAuditIds);
|
||||
switch (audit.getAuditResult()) {
|
||||
case AuditConstants.PASS -> medicalAid.setStateId(MedicalAuditState.PASS);
|
||||
case AuditConstants.REJECT -> medicalAid.setStateId(MedicalAuditState.FINANCIAL_CASHIER_REJECTED);
|
||||
case AuditConstants.BACK -> medicalAid.setStateId(MedicalAuditState.FINANCIAL_CASHIER_BACK_MODIFY);
|
||||
}
|
||||
}
|
||||
dao.updateIgnoreNull(medicalAids);
|
||||
|
||||
//医疗互助 个人实际支付部分金额 = selfPayMoney - subsidiesAmount 大于10000元 生成重疾记录
|
||||
List<MedicalAid> seriousMedicals = medicalAids.stream().filter(v -> v.getType().equals(MedicalType.ORDINARY.getCode()) && (NumberUtil.sub(v.getSelfPayMoney(), v.getOrdinarySubsidiesAmount())) >= 10000).collect(Collectors.toList());
|
||||
|
||||
for (MedicalAid seriousMedical : seriousMedicals) {
|
||||
seriousMedical.setId(null);
|
||||
seriousMedical.setType(MedicalType.SERIOUS.getCode());
|
||||
seriousMedical.setStateId(MedicalAuditState.NOT_SUBMIT);
|
||||
seriousMedical.setApplyTime(null);
|
||||
seriousMedical.setBranchUnionAuditId(null);
|
||||
seriousMedical.setBranchUnionAuditIds(Collections.emptyList());
|
||||
seriousMedical.setRetireAuditId(null);
|
||||
seriousMedical.setRetireAuditIds(Collections.emptyList());
|
||||
seriousMedical.setSchoolHospitalAuditId(null);
|
||||
seriousMedical.setSchoolHospitalAuditIds(Collections.emptyList());
|
||||
seriousMedical.setSchoolAccountingAuditId(null);
|
||||
seriousMedical.setSchoolAccountingAuditIds(Collections.emptyList());
|
||||
seriousMedical.setSchoolViceChairmanAuditId(null);
|
||||
seriousMedical.setSchoolViceChairmanAuditIds(Collections.emptyList());
|
||||
seriousMedical.setSchoolChairmanAuditId(null);
|
||||
seriousMedical.setSchoolChairmanAuditIds(Collections.emptyList());
|
||||
seriousMedical.setFinancialCashierAuditId(null);
|
||||
seriousMedical.setFinancialCashierAuditIds(Collections.emptyList());
|
||||
}
|
||||
dao.insert(seriousMedicals);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
}
|
||||
+137
@@ -0,0 +1,137 @@
|
||||
package com.ruoyi.additional.controller.medical;
|
||||
|
||||
import com.deepoove.poi.XWPFTemplate;
|
||||
import com.deepoove.poi.config.Configure;
|
||||
import com.ruoyi.additional.api.constant.medical.MedicalPageForm;
|
||||
import com.ruoyi.additional.api.domain.Audit;
|
||||
import com.ruoyi.additional.api.domain.medical.MedicalAid;
|
||||
import com.ruoyi.additional.service.medical.MedicalAidOrdinaryApplyService;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresLogin;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.ServletOutputStream;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.InputStream;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/medicalAid/ordinaryApply")
|
||||
@Slf4j
|
||||
public class MedicalAidOrdinaryApplyController {
|
||||
|
||||
@Autowired
|
||||
private MedicalAidOrdinaryApplyService ordinaryApplyService;
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@RequestMapping("pageData")
|
||||
@RequiresPermissions("medical:ordinaryApply")
|
||||
public AjaxResult pageData(@RequestBody MedicalPageForm pageForm) {
|
||||
Pagination pagination = ordinaryApplyService.pageData(pageForm);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@RequestMapping("queryUsers")
|
||||
@RequiresPermissions("medical:ordinaryApply")
|
||||
public AjaxResult queryUsers(@RequestParam String query) {
|
||||
List<NutMap> list = ordinaryApplyService.queryUsers(query);
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
@RequestMapping("/doSave")
|
||||
@RequiresPermissions("medical:ordinaryApply")
|
||||
public AjaxResult doSave(@RequestBody MedicalAid medicalAid) {
|
||||
ordinaryApplyService.doSave(medicalAid);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@RequestMapping("/doSubmit")
|
||||
@RequiresPermissions("medical:ordinaryApply")
|
||||
public AjaxResult doSubmit(@RequestBody MedicalAid medicalAid) {
|
||||
ordinaryApplyService.doSubmit(medicalAid);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@RequestMapping("/doDelete")
|
||||
@RequiresPermissions("medical:ordinaryApply")
|
||||
public AjaxResult doDelete(@RequestParam String id) {
|
||||
ordinaryApplyService.delete(id);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@RequestMapping("/findOne")
|
||||
@RequiresPermissions("medical:ordinaryApply")
|
||||
public AjaxResult findOne(@RequestParam String id) {
|
||||
MedicalAid medicalAid = ordinaryApplyService.fetch(id);
|
||||
return AjaxResult.success(medicalAid);
|
||||
}
|
||||
|
||||
@RequestMapping("/fullInfo")
|
||||
@RequiresLogin
|
||||
public AjaxResult fullInfo(@RequestParam String id) {
|
||||
MedicalAid medicalAid = ordinaryApplyService.fetch(id);
|
||||
if (Lang.isEmpty(medicalAid.getBranchUnionAuditIds())) {
|
||||
medicalAid.setBranchUnionAuditIds(Collections.emptyList());
|
||||
}
|
||||
if (Lang.isEmpty(medicalAid.getRetireAuditIds())) {
|
||||
medicalAid.setRetireAuditIds(Collections.emptyList());
|
||||
}
|
||||
if (Lang.isEmpty(medicalAid.getSchoolHospitalAuditIds())) {
|
||||
medicalAid.setSchoolHospitalAuditIds(Collections.emptyList());
|
||||
}
|
||||
if (Lang.isEmpty(medicalAid.getSchoolAccountingAuditIds())) {
|
||||
medicalAid.setSchoolAccountingAuditIds(Collections.emptyList());
|
||||
}
|
||||
if (Lang.isEmpty(medicalAid.getSchoolViceChairmanAuditIds())) {
|
||||
medicalAid.setSchoolViceChairmanAuditIds(Collections.emptyList());
|
||||
}
|
||||
if (Lang.isEmpty(medicalAid.getSchoolChairmanAuditIds())) {
|
||||
medicalAid.setSchoolChairmanAuditIds(Collections.emptyList());
|
||||
}
|
||||
if (Lang.isEmpty(medicalAid.getFinancialCashierAuditIds())) {
|
||||
medicalAid.setFinancialCashierAuditIds(Collections.emptyList());
|
||||
}
|
||||
|
||||
medicalAid.setBranchUnionAudits(dao.query(Audit.class, Cnd.where("id", "in", medicalAid.getBranchUnionAuditIds()).desc("auditTime")));
|
||||
medicalAid.setRetireAudits(dao.query(Audit.class, Cnd.where("id", "in", medicalAid.getRetireAuditIds()).desc("auditTime")));
|
||||
medicalAid.setSchoolHospitalAudits(dao.query(Audit.class, Cnd.where("id", "in", medicalAid.getSchoolHospitalAuditIds()).desc("auditTime")));
|
||||
medicalAid.setSchoolAccountingAudits(dao.query(Audit.class, Cnd.where("id", "in", medicalAid.getSchoolAccountingAuditIds()).desc("auditTime")));
|
||||
medicalAid.setSchoolViceChairmanAudits(dao.query(Audit.class, Cnd.where("id", "in", medicalAid.getSchoolViceChairmanAuditIds()).desc("auditTime")));
|
||||
medicalAid.setSchoolChairmanAudits(dao.query(Audit.class, Cnd.where("id", "in", medicalAid.getSchoolChairmanAuditIds()).desc("auditTime")));
|
||||
medicalAid.setFinancialCashierAudits(dao.query(Audit.class, Cnd.where("id", "in", medicalAid.getFinancialCashierAuditIds()).desc("auditTime")));
|
||||
return AjaxResult.success(medicalAid);
|
||||
}
|
||||
|
||||
@PostMapping("exportOrdinary")
|
||||
@RequiresPermissions("medical:ordinaryApply")
|
||||
public void exportOrdinary(@RequestParam String id, HttpServletResponse response) {
|
||||
try (ServletOutputStream outputStream = response.getOutputStream();
|
||||
InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("templates/medical/ordinaryApply.docx");
|
||||
) {
|
||||
NutMap renderMap = ordinaryApplyService.exportOrdinaryData(id);
|
||||
String userName = renderMap.getString("userName");
|
||||
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", "attachment;filename=%s".formatted(URLEncoder.encode(userName + "-医疗互助申请表.docx", StandardCharsets.UTF_8)));
|
||||
Configure config = Configure.builder().build();
|
||||
assert inputStream != null;
|
||||
XWPFTemplate.compile(inputStream, config).render(renderMap, outputStream);
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+152
@@ -0,0 +1,152 @@
|
||||
package com.ruoyi.additional.controller.medical;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.additional.api.constant.medical.MedicalAuditState;
|
||||
import com.ruoyi.additional.api.constant.medical.MedicalPageForm;
|
||||
import com.ruoyi.additional.api.domain.Audit;
|
||||
import com.ruoyi.additional.api.domain.medical.MedicalAid;
|
||||
import com.ruoyi.additional.service.medical.MedicalAidOrdinaryApplyService;
|
||||
import com.ruoyi.common.core.constant.AuditConstants;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.system.api.RemoteConfigService;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* 离退休工作处审核
|
||||
*
|
||||
* @author jug
|
||||
* @date 2023/02/21
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/medicalAid/retireAudit")
|
||||
public class MedicalAidRetireAuditController {
|
||||
|
||||
@Autowired
|
||||
private MedicalAidOrdinaryApplyService ordinaryApplyService;
|
||||
|
||||
@Autowired
|
||||
private RemoteConfigService remoteConfigService;
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
/**
|
||||
* 页面数据
|
||||
*
|
||||
* @param pageForm 页面形式
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@RequestMapping("pageData")
|
||||
@RequiresPermissions("medical:retireAudit")
|
||||
public AjaxResult pageData(@RequestBody MedicalPageForm pageForm) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
m.id,
|
||||
m.loginName,
|
||||
m.userName,
|
||||
m.applyTime,
|
||||
m.diseaseDiagnosis,
|
||||
m.hospital,
|
||||
m.diseaseTypeId,
|
||||
m.type,
|
||||
m.stateId,
|
||||
state.stateName,
|
||||
t.typeName as diseaseTypeName
|
||||
FROM
|
||||
medical_aid m
|
||||
LEFT JOIN audit_state state ON state.stateId = m.stateId
|
||||
LEFT JOIN medical_aid_disease_type t on t.id = m.diseaseTypeId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
|
||||
String retirementOfficeDeptId = remoteConfigService.selectConfigByKey("sys.retirementOfficeDeptId").getMsg();
|
||||
cnd.and("m.unitId", "=", retirementOfficeDeptId);
|
||||
|
||||
cnd.andEX("m.type", "=", pageForm.getType());
|
||||
cnd.andEX("m.year", "=", pageForm.getYear());
|
||||
|
||||
if (pageForm.getIsAudit() == null) {
|
||||
cnd.and("m.stateId", ">=", MedicalAuditState.RETIRED_READY);
|
||||
} else if (pageForm.getIsAudit()) {
|
||||
cnd.and("m.stateId", ">", MedicalAuditState.RETIRED_READY);
|
||||
} else {
|
||||
cnd.and("m.stateId", "=", MedicalAuditState.RETIRED_READY);
|
||||
}
|
||||
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.orLike("m.userName", pageForm.getSearchKeyword());
|
||||
seg.orLike("m.loginName", pageForm.getSearchKeyword());
|
||||
cnd.and(seg);
|
||||
}
|
||||
|
||||
cnd.desc("m.applyTime");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = ordinaryApplyService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
/**
|
||||
* 做撤销
|
||||
*
|
||||
* @param id id
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@RequestMapping("doRevoke")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@RequiresPermissions("medical:retireAudit")
|
||||
public AjaxResult doRevoke(@RequestParam String id) {
|
||||
MedicalAid medicalAid = dao.fetch(MedicalAid.class, id);
|
||||
String retireAuditId = medicalAid.getRetireAuditId();
|
||||
dao.delete(Audit.class, retireAuditId);
|
||||
Chain chain = Chain.make("retireAuditId", null);
|
||||
chain.add("stateId", MedicalAuditState.RETIRED_READY);
|
||||
dao.update(MedicalAid.class, chain, Cnd.where("id", "=", id));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 做审核
|
||||
*
|
||||
* @param audit 审计
|
||||
* @param ids ids
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@PostMapping("/doSubmit")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@RequiresPermissions("medical:retireAudit")
|
||||
public AjaxResult doSubmit(@RequestBody Audit audit, @RequestParam(name = "ids[]") String[] ids) {
|
||||
dao.insert(audit);
|
||||
List<MedicalAid> medicalAids = dao.query(MedicalAid.class, Cnd.where("id", "in", ids));
|
||||
for (MedicalAid medicalAid : medicalAids) {
|
||||
medicalAid.setRetireAuditId(audit.getId());
|
||||
List<String> retireAuditIds = Optional.ofNullable(medicalAid.getRetireAuditIds()).orElse(new ArrayList<>());
|
||||
retireAuditIds.add(audit.getId());
|
||||
medicalAid.setRetireAuditIds(retireAuditIds);
|
||||
|
||||
switch (audit.getAuditResult()) {
|
||||
case AuditConstants.PASS -> medicalAid.setStateId(MedicalAuditState.SCHOOL_HOSPITAL_READY);
|
||||
case AuditConstants.REJECT -> medicalAid.setStateId(MedicalAuditState.RETIRED_REJECTED);
|
||||
case AuditConstants.BACK -> medicalAid.setStateId(MedicalAuditState.RETIRED_BACK_MODIFY);
|
||||
}
|
||||
}
|
||||
dao.updateIgnoreNull(medicalAids);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
}
|
||||
+177
@@ -0,0 +1,177 @@
|
||||
package com.ruoyi.additional.controller.medical;
|
||||
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.additional.api.constant.medical.MedicalAuditState;
|
||||
import com.ruoyi.additional.api.constant.medical.MedicalPageForm;
|
||||
import com.ruoyi.additional.api.constant.medical.MedicalType;
|
||||
import com.ruoyi.additional.api.domain.Audit;
|
||||
import com.ruoyi.additional.api.domain.medical.MedicalAid;
|
||||
import com.ruoyi.additional.service.medical.MedicalAidOrdinaryApplyService;
|
||||
import com.ruoyi.additional.service.medical.MedicalCalcMoney;
|
||||
import com.ruoyi.common.core.constant.AuditConstants;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* 工会会计审核
|
||||
*
|
||||
* @author jug
|
||||
* @date 2023/02/21
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/medicalAid/schoolAccountingAudit")
|
||||
public class MedicalAidSchoolAccountingAuditController {
|
||||
|
||||
@Autowired
|
||||
private MedicalAidOrdinaryApplyService ordinaryApplyService;
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
/**
|
||||
* 页面数据
|
||||
*
|
||||
* @param pageForm 页面形式
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@RequestMapping("pageData")
|
||||
@RequiresPermissions("medical:schoolAccountingAudit")
|
||||
public AjaxResult pageData(@RequestBody MedicalPageForm pageForm) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
m.id,
|
||||
m.loginName,
|
||||
m.userName,
|
||||
m.unionName,
|
||||
m.unitName,
|
||||
m.applyTime,
|
||||
m.diseaseDiagnosis,
|
||||
m.hospital,
|
||||
m.diseaseTypeId,
|
||||
m.type,
|
||||
m.stateId,
|
||||
state.stateName,
|
||||
t.typeName as diseaseTypeName
|
||||
FROM
|
||||
medical_aid m
|
||||
LEFT JOIN audit_state state ON state.stateId = m.stateId
|
||||
LEFT JOIN medical_aid_disease_type t on t.id = m.diseaseTypeId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("m.type", "=", pageForm.getType());
|
||||
cnd.andEX("m.year", "=", pageForm.getYear());
|
||||
cnd.andEX("m.unionId", "=", pageForm.getUnionId());
|
||||
cnd.andEX("m.unitId", "=", pageForm.getUnitId());
|
||||
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.orLike("m.userName", pageForm.getSearchKeyword());
|
||||
seg.orLike("m.loginName", pageForm.getSearchKeyword());
|
||||
cnd.and(seg);
|
||||
}
|
||||
|
||||
if (pageForm.getIsAudit() == null) {
|
||||
cnd.and("m.stateId", ">=", MedicalAuditState.SCHOOL_ACCOUNTING_READY);
|
||||
} else if (pageForm.getIsAudit()) {
|
||||
cnd.and("m.stateId", ">", MedicalAuditState.SCHOOL_ACCOUNTING_READY);
|
||||
} else {
|
||||
cnd.and("m.stateId", "=", MedicalAuditState.SCHOOL_ACCOUNTING_READY);
|
||||
}
|
||||
|
||||
cnd.desc("m.applyTime");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = ordinaryApplyService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
/**
|
||||
* 做撤销
|
||||
*
|
||||
* @param id id
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@RequestMapping("doRevoke")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@RequiresPermissions("medical:schoolAccountingAudit")
|
||||
public AjaxResult doRevoke(@RequestParam String id) {
|
||||
MedicalAid medicalAid = dao.fetch(MedicalAid.class, id);
|
||||
String schoolAccountingAuditId = medicalAid.getSchoolAccountingAuditId();
|
||||
dao.delete(Audit.class, schoolAccountingAuditId);
|
||||
Chain chain = Chain.make("schoolAccountingAuditId", null);
|
||||
chain.add("stateId", MedicalAuditState.SCHOOL_ACCOUNTING_READY);
|
||||
dao.update(MedicalAid.class, chain, Cnd.where("id", "=", id));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 做审核
|
||||
*
|
||||
* @param audit 审计
|
||||
* @param id id
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@PostMapping("/doSubmit")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@RequiresPermissions("medical:schoolAccountingAudit")
|
||||
public AjaxResult doSubmit(@RequestBody Audit audit, @RequestParam String id, @RequestParam double subsidiesAmount) {
|
||||
dao.insert(audit);
|
||||
MedicalAid medicalAid = dao.fetch(MedicalAid.class, id);
|
||||
medicalAid.setSchoolAccountingAuditId(audit.getId());
|
||||
if (medicalAid.getType().equals(MedicalType.ORDINARY.getCode())) {
|
||||
medicalAid.setOrdinarySubsidiesAmount(subsidiesAmount);
|
||||
} else {
|
||||
medicalAid.setSeriousSubsidiesAmount(subsidiesAmount);
|
||||
}
|
||||
|
||||
List<String> schoolAccountingAuditIds = Optional.ofNullable(medicalAid.getSchoolAccountingAuditIds()).orElse(new ArrayList<>());
|
||||
schoolAccountingAuditIds.add(audit.getId());
|
||||
medicalAid.setSchoolAccountingAuditIds(schoolAccountingAuditIds);
|
||||
|
||||
switch (audit.getAuditResult()) {
|
||||
case AuditConstants.PASS -> medicalAid.setStateId(MedicalAuditState.SCHOOL_VICE_CHAIRMAN_READY);
|
||||
case AuditConstants.REJECT -> medicalAid.setStateId(MedicalAuditState.SCHOOL_ACCOUNTING_REJECTED);
|
||||
case AuditConstants.BACK -> medicalAid.setStateId(MedicalAuditState.SCHOOL_ACCOUNTING_BACK_MODIFY);
|
||||
}
|
||||
dao.updateIgnoreNull(medicalAid);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算补贴金额
|
||||
*
|
||||
* @param id id
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@RequestMapping("calcSubsidiesAmount")
|
||||
@RequiresPermissions("medical:schoolAccountingAudit")
|
||||
public AjaxResult calcSubsidiesAmount(@RequestParam String id) {
|
||||
MedicalAid medicalAid = ordinaryApplyService.fetch(id);
|
||||
if (medicalAid.getType().equals(MedicalType.ORDINARY.getCode())) {
|
||||
double subsidiesAmount = NumberUtil.mul(medicalAid.getSelfPayMoney(), Double.valueOf(0.5));
|
||||
subsidiesAmount = Math.max(subsidiesAmount, 200);
|
||||
return AjaxResult.success("操作成功", NumberUtil.decimalFormat("0.00", subsidiesAmount));
|
||||
} else {
|
||||
//个人实际支付部分合计
|
||||
double selfPartPayMoney = NumberUtil.sub(medicalAid.getSelfPayMoney(), medicalAid.getOrdinarySubsidiesAmount());
|
||||
double totalGrant = MedicalCalcMoney.calc(selfPartPayMoney);
|
||||
return AjaxResult.success("操作成功", NumberUtil.decimalFormat("0.00", totalGrant));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+148
@@ -0,0 +1,148 @@
|
||||
package com.ruoyi.additional.controller.medical;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.additional.api.constant.medical.MedicalAuditState;
|
||||
import com.ruoyi.additional.api.constant.medical.MedicalPageForm;
|
||||
import com.ruoyi.additional.api.domain.Audit;
|
||||
import com.ruoyi.additional.api.domain.medical.MedicalAid;
|
||||
import com.ruoyi.additional.service.medical.MedicalAidOrdinaryApplyService;
|
||||
import com.ruoyi.common.core.constant.AuditConstants;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* 工会主席审核
|
||||
*
|
||||
* @author jug
|
||||
* @date 2023/02/21
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/medicalAid/schoolChairmanAudit")
|
||||
public class MedicalAidSchoolChairmanAuditController {
|
||||
|
||||
@Autowired
|
||||
private MedicalAidOrdinaryApplyService ordinaryApplyService;
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
/**
|
||||
* 页面数据
|
||||
*
|
||||
* @param pageForm 页面形式
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@RequestMapping("pageData")
|
||||
@RequiresPermissions("medical:schoolChairmanAudit")
|
||||
public AjaxResult pageData(@RequestBody MedicalPageForm pageForm) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
m.id,
|
||||
m.loginName,
|
||||
m.userName,
|
||||
m.unionName,
|
||||
m.unitName,
|
||||
m.applyTime,
|
||||
m.diseaseDiagnosis,
|
||||
m.hospital,
|
||||
m.diseaseTypeId,
|
||||
m.type,
|
||||
m.stateId,
|
||||
state.stateName,
|
||||
t.typeName as diseaseTypeName
|
||||
FROM
|
||||
medical_aid m
|
||||
LEFT JOIN audit_state state ON state.stateId = m.stateId
|
||||
LEFT JOIN medical_aid_disease_type t on t.id = m.diseaseTypeId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("m.type", "=", pageForm.getType());
|
||||
cnd.andEX("m.year", "=", pageForm.getYear());
|
||||
cnd.andEX("m.unionId", "=", pageForm.getUnionId());
|
||||
cnd.andEX("m.unitId", "=", pageForm.getUnitId());
|
||||
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.orLike("m.userName", pageForm.getSearchKeyword());
|
||||
seg.orLike("m.loginName", pageForm.getSearchKeyword());
|
||||
cnd.and(seg);
|
||||
}
|
||||
|
||||
if (pageForm.getIsAudit() == null) {
|
||||
cnd.and("m.stateId", ">=", MedicalAuditState.SCHOOL_CHAIRMAN_READY);
|
||||
} else if (pageForm.getIsAudit()) {
|
||||
cnd.and("m.stateId", ">", MedicalAuditState.SCHOOL_CHAIRMAN_READY);
|
||||
} else {
|
||||
cnd.and("m.stateId", "=", MedicalAuditState.SCHOOL_CHAIRMAN_READY);
|
||||
}
|
||||
|
||||
cnd.desc("m.applyTime");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = ordinaryApplyService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
/**
|
||||
* 做撤销
|
||||
*
|
||||
* @param id id
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@RequestMapping("doRevoke")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@RequiresPermissions("medical:schoolChairmanAudit")
|
||||
public AjaxResult doRevoke(@RequestParam String id) {
|
||||
MedicalAid medicalAid = dao.fetch(MedicalAid.class, id);
|
||||
String schoolChairmanAuditId = medicalAid.getSchoolChairmanAuditId();
|
||||
dao.delete(Audit.class, schoolChairmanAuditId);
|
||||
Chain chain = Chain.make("schoolChairmanAuditId", null);
|
||||
chain.add("stateId", MedicalAuditState.SCHOOL_CHAIRMAN_READY);
|
||||
dao.update(MedicalAid.class, chain, Cnd.where("id", "=", id));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 做审核
|
||||
*
|
||||
* @param audit 审计
|
||||
* @param ids ids
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@PostMapping("/doSubmit")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@RequiresPermissions("medical:schoolChairmanAudit")
|
||||
public AjaxResult doSubmit(@RequestBody Audit audit, @RequestParam(name = "ids[]") String[] ids) {
|
||||
dao.insert(audit);
|
||||
List<MedicalAid> medicalAids = dao.query(MedicalAid.class, Cnd.where("id", "in", ids));
|
||||
for (MedicalAid medicalAid : medicalAids) {
|
||||
medicalAid.setSchoolChairmanAuditId(audit.getId());
|
||||
List<String> schoolChairmanAuditIds = Optional.ofNullable(medicalAid.getSchoolChairmanAuditIds()).orElse(new ArrayList<>());
|
||||
schoolChairmanAuditIds.add(audit.getId());
|
||||
medicalAid.setSchoolChairmanAuditIds(schoolChairmanAuditIds);
|
||||
|
||||
switch (audit.getAuditResult()) {
|
||||
case AuditConstants.PASS -> medicalAid.setStateId(MedicalAuditState.FINANCIAL_CASHIER_READY);
|
||||
case AuditConstants.REJECT -> medicalAid.setStateId(MedicalAuditState.SCHOOL_CHAIRMAN_REJECTED);
|
||||
case AuditConstants.BACK -> medicalAid.setStateId(MedicalAuditState.SCHOOL_CHAIRMAN_BACK_MODIFY);
|
||||
}
|
||||
}
|
||||
dao.updateIgnoreNull(medicalAids);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
}
|
||||
+175
@@ -0,0 +1,175 @@
|
||||
package com.ruoyi.additional.controller.medical;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.additional.api.constant.medical.MedicalAuditState;
|
||||
import com.ruoyi.additional.api.constant.medical.MedicalPageForm;
|
||||
import com.ruoyi.additional.api.domain.Audit;
|
||||
import com.ruoyi.additional.api.domain.medical.MedicalAid;
|
||||
import com.ruoyi.additional.api.domain.medical.MedicalAidDiseaseType;
|
||||
import com.ruoyi.additional.service.medical.MedicalAidOrdinaryApplyService;
|
||||
import com.ruoyi.common.core.constant.AuditConstants;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* 校医院审核
|
||||
*
|
||||
* @author jug
|
||||
* @date 2023/02/21
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/medicalAid/schoolHospitalAudit")
|
||||
public class MedicalAidSchoolHospitalAuditController {
|
||||
|
||||
@Autowired
|
||||
private MedicalAidOrdinaryApplyService ordinaryApplyService;
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
/**
|
||||
* 页面数据
|
||||
*
|
||||
* @param pageForm 页面形式
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@RequestMapping("pageData")
|
||||
@RequiresPermissions("medical:schoolHospitalAudit")
|
||||
public AjaxResult pageData(@RequestBody MedicalPageForm pageForm) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
m.id,
|
||||
m.loginName,
|
||||
m.userName,
|
||||
m.unionName,
|
||||
m.unitName,
|
||||
m.applyTime,
|
||||
m.diseaseDiagnosis,
|
||||
m.hospital,
|
||||
m.diseaseTypeId,
|
||||
m.type,
|
||||
m.stateId,
|
||||
state.stateName,
|
||||
t.typeName as diseaseTypeName
|
||||
FROM
|
||||
medical_aid m
|
||||
LEFT JOIN audit_state state ON state.stateId = m.stateId
|
||||
LEFT JOIN medical_aid_disease_type t on t.id = m.diseaseTypeId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("m.type", "=", pageForm.getType());
|
||||
cnd.andEX("m.year", "=", pageForm.getYear());
|
||||
cnd.andEX("m.unionId", "=", pageForm.getUnionId());
|
||||
cnd.andEX("m.unitId", "=", pageForm.getUnitId());
|
||||
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.orLike("m.userName", pageForm.getSearchKeyword());
|
||||
seg.orLike("m.loginName", pageForm.getSearchKeyword());
|
||||
cnd.and(seg);
|
||||
}
|
||||
|
||||
if (pageForm.getIsAudit() == null) {
|
||||
cnd.and("m.stateId", ">=", MedicalAuditState.SCHOOL_HOSPITAL_READY);
|
||||
} else if (pageForm.getIsAudit()) {
|
||||
cnd.and("m.stateId", ">", MedicalAuditState.SCHOOL_HOSPITAL_READY);
|
||||
} else {
|
||||
cnd.and("m.stateId", "=", MedicalAuditState.SCHOOL_HOSPITAL_READY);
|
||||
}
|
||||
|
||||
cnd.desc("m.applyTime");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = ordinaryApplyService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
/**
|
||||
* 做撤销
|
||||
*
|
||||
* @param id id
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@RequestMapping("doRevoke")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@RequiresPermissions("medical:schoolHospitalAudit")
|
||||
public AjaxResult doRevoke(@RequestParam String id) {
|
||||
MedicalAid medicalAid = dao.fetch(MedicalAid.class, id);
|
||||
String schoolHospitalAuditId = medicalAid.getSchoolHospitalAuditId();
|
||||
dao.delete(Audit.class, schoolHospitalAuditId);
|
||||
Chain chain = Chain.make("schoolHospitalAuditId", null);
|
||||
chain.add("stateId", MedicalAuditState.SCHOOL_HOSPITAL_READY);
|
||||
chain.add("diseaseTypeCode", null);
|
||||
dao.update(MedicalAid.class, chain, Cnd.where("id", "=", id));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 做审核
|
||||
*
|
||||
* @param audit 审计
|
||||
* @param id id
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@PostMapping("/doSubmit")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@RequiresPermissions("medical:schoolHospitalAudit")
|
||||
public AjaxResult doSubmit(@RequestBody Audit audit, @RequestParam String id, @RequestParam String diseaseTypeCode) {
|
||||
dao.insert(audit);
|
||||
MedicalAid medicalAid = dao.fetch(MedicalAid.class, id);
|
||||
medicalAid.setSchoolHospitalAuditId(audit.getId());
|
||||
medicalAid.setDiseaseTypeId(diseaseTypeCode);
|
||||
|
||||
List<String> schoolHospitalAuditIds = Optional.ofNullable(medicalAid.getSchoolHospitalAuditIds()).orElse(new ArrayList<>());
|
||||
schoolHospitalAuditIds.add(audit.getId());
|
||||
medicalAid.setSchoolHospitalAuditIds(schoolHospitalAuditIds);
|
||||
|
||||
switch (audit.getAuditResult()) {
|
||||
case AuditConstants.PASS -> medicalAid.setStateId(MedicalAuditState.SCHOOL_ACCOUNTING_READY);
|
||||
case AuditConstants.REJECT -> medicalAid.setStateId(MedicalAuditState.SCHOOL_HOSPITAL_REJECTED);
|
||||
case AuditConstants.BACK -> medicalAid.setStateId(MedicalAuditState.SCHOOL_HOSPITAL_BACK_MODIFY);
|
||||
}
|
||||
dao.updateIgnoreNull(medicalAid);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 疾病类型
|
||||
*
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@RequestMapping("diseaseTypes")
|
||||
@RequiresPermissions("medical:schoolHospitalAudit")
|
||||
public AjaxResult diseaseTypes() {
|
||||
List<MedicalAidDiseaseType> list = dao.query(MedicalAidDiseaseType.class, Cnd.NEW().asc("typeCode"));
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑疾病类型
|
||||
*
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@RequestMapping("doEditMedicalType")
|
||||
@RequiresPermissions("medical:schoolHospitalAudit")
|
||||
public AjaxResult doEditMedicalType(@RequestBody MedicalAid medicalAid) {
|
||||
dao.update(medicalAid, "diseaseTypeId");
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+147
@@ -0,0 +1,147 @@
|
||||
package com.ruoyi.additional.controller.medical;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.additional.api.constant.medical.MedicalAuditState;
|
||||
import com.ruoyi.additional.api.constant.medical.MedicalPageForm;
|
||||
import com.ruoyi.additional.api.domain.Audit;
|
||||
import com.ruoyi.additional.api.domain.medical.MedicalAid;
|
||||
import com.ruoyi.additional.service.medical.MedicalAidOrdinaryApplyService;
|
||||
import com.ruoyi.common.core.constant.AuditConstants;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* 工会副主席审核
|
||||
*
|
||||
* @author jug
|
||||
* @date 2023/02/21
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/medicalAid/schoolViceChairmanAudit")
|
||||
public class MedicalAidSchoolViceChairmanAuditController {
|
||||
|
||||
@Autowired
|
||||
private MedicalAidOrdinaryApplyService ordinaryApplyService;
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
/**
|
||||
* 页面数据
|
||||
*
|
||||
* @param pageForm 页面形式
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@RequestMapping("pageData")
|
||||
@RequiresPermissions("medical:schoolViceChairmanAudit")
|
||||
public AjaxResult pageData(@RequestBody MedicalPageForm pageForm) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
m.id,
|
||||
m.loginName,
|
||||
m.userName,
|
||||
m.unionName,
|
||||
m.unitName,
|
||||
m.applyTime,
|
||||
m.diseaseDiagnosis,
|
||||
m.hospital,
|
||||
m.diseaseTypeId,
|
||||
m.type,
|
||||
m.stateId,
|
||||
state.stateName,
|
||||
t.typeName as diseaseTypeName
|
||||
FROM
|
||||
medical_aid m
|
||||
LEFT JOIN audit_state state ON state.stateId = m.stateId
|
||||
LEFT JOIN medical_aid_disease_type t on t.id = m.diseaseTypeId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("m.type", "=", pageForm.getType());
|
||||
cnd.andEX("m.year", "=", pageForm.getYear());
|
||||
cnd.andEX("m.unionId", "=", pageForm.getUnionId());
|
||||
cnd.andEX("m.unitId", "=", pageForm.getUnitId());
|
||||
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.orLike("m.userName", pageForm.getSearchKeyword());
|
||||
seg.orLike("m.loginName", pageForm.getSearchKeyword());
|
||||
cnd.and(seg);
|
||||
}
|
||||
|
||||
if (pageForm.getIsAudit() == null) {
|
||||
cnd.and("m.stateId", ">=", MedicalAuditState.SCHOOL_VICE_CHAIRMAN_READY);
|
||||
} else if (pageForm.getIsAudit()) {
|
||||
cnd.and("m.stateId", ">", MedicalAuditState.SCHOOL_VICE_CHAIRMAN_READY);
|
||||
} else {
|
||||
cnd.and("m.stateId", "=", MedicalAuditState.SCHOOL_VICE_CHAIRMAN_READY);
|
||||
}
|
||||
|
||||
cnd.desc("m.applyTime");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = ordinaryApplyService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
/**
|
||||
* 做撤销
|
||||
*
|
||||
* @param id id
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@RequestMapping("doRevoke")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@RequiresPermissions("medical:schoolViceChairmanAudit")
|
||||
public AjaxResult doRevoke(@RequestParam String id) {
|
||||
MedicalAid medicalAid = dao.fetch(MedicalAid.class, id);
|
||||
String schoolViceChairmanAuditId = medicalAid.getSchoolViceChairmanAuditId();
|
||||
dao.delete(Audit.class, schoolViceChairmanAuditId);
|
||||
Chain chain = Chain.make("schoolViceChairmanAuditId", null);
|
||||
chain.add("stateId", MedicalAuditState.SCHOOL_VICE_CHAIRMAN_READY);
|
||||
dao.update(MedicalAid.class, chain, Cnd.where("id", "=", id));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 做审核
|
||||
*
|
||||
* @param audit 审计
|
||||
* @param ids ids
|
||||
* @return {@link AjaxResult}
|
||||
*/
|
||||
@PostMapping("/doSubmit")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@RequiresPermissions("medical:schoolViceChairmanAudit")
|
||||
public AjaxResult doSubmit(@RequestBody Audit audit, @RequestParam(name = "ids[]") String[] ids) {
|
||||
dao.insert(audit);
|
||||
List<MedicalAid> medicalAids = dao.query(MedicalAid.class, Cnd.where("id", "in", ids));
|
||||
for (MedicalAid medicalAid : medicalAids) {
|
||||
medicalAid.setSchoolViceChairmanAuditId(audit.getId());
|
||||
List<String> schoolViceChairmanAuditIds = Optional.ofNullable(medicalAid.getSchoolViceChairmanAuditIds()).orElse(new ArrayList<>());
|
||||
schoolViceChairmanAuditIds.add(audit.getId());
|
||||
medicalAid.setSchoolViceChairmanAuditIds(schoolViceChairmanAuditIds);
|
||||
switch (audit.getAuditResult()) {
|
||||
case AuditConstants.PASS -> medicalAid.setStateId(MedicalAuditState.SCHOOL_CHAIRMAN_READY);
|
||||
case AuditConstants.REJECT -> medicalAid.setStateId(MedicalAuditState.SCHOOL_VICE_CHAIRMAN_REJECTED);
|
||||
case AuditConstants.BACK -> medicalAid.setStateId(MedicalAuditState.SCHOOL_VICE_CHAIRMAN_BACK_MODIFY);
|
||||
}
|
||||
}
|
||||
dao.updateIgnoreNull(medicalAids);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
}
|
||||
+88
@@ -0,0 +1,88 @@
|
||||
package com.ruoyi.additional.controller.medical;
|
||||
|
||||
import com.deepoove.poi.XWPFTemplate;
|
||||
import com.deepoove.poi.config.Configure;
|
||||
import com.ruoyi.additional.api.constant.medical.MedicalAuditState;
|
||||
import com.ruoyi.additional.api.constant.medical.MedicalPageForm;
|
||||
import com.ruoyi.additional.api.domain.medical.MedicalAid;
|
||||
import com.ruoyi.additional.service.medical.MedicalAidSeriousApplyService;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.system.api.RemoteConfigService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.ServletOutputStream;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.InputStream;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Date;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/medicalAid/seriousApply")
|
||||
@Slf4j
|
||||
public class MedicalAidSeriousApplyController {
|
||||
|
||||
@Autowired
|
||||
private MedicalAidSeriousApplyService seriousApplyService;
|
||||
|
||||
@Autowired
|
||||
private RemoteConfigService remoteConfigService;
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@RequestMapping("pageData")
|
||||
@RequiresPermissions("medical:seriousApply")
|
||||
public AjaxResult pageData(@RequestBody MedicalPageForm pageForm) {
|
||||
Pagination pagination = seriousApplyService.pageData(pageForm);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@RequestMapping("/doSubmit")
|
||||
@RequiresPermissions("medical:seriousApply")
|
||||
public AjaxResult doSubmit(@RequestParam String id) {
|
||||
String retirementOfficeDeptId = remoteConfigService.selectConfigByKey("sys.retirementOfficeDeptId").getMsg();
|
||||
MedicalAid medicalAid = seriousApplyService.fetch(id);
|
||||
if (medicalAid.getUnitId().equals(retirementOfficeDeptId)) {
|
||||
medicalAid.setStateId(MedicalAuditState.RETIRED_READY);
|
||||
} else {
|
||||
medicalAid.setStateId(MedicalAuditState.BRANCH_UNION_READY);
|
||||
}
|
||||
medicalAid.setApplyTime(new Date());
|
||||
dao.update(medicalAid, "stateId|applyTime");
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@RequestMapping("/findOne")
|
||||
@RequiresPermissions("medical:seriousApply")
|
||||
public AjaxResult findOne(@RequestParam String id) {
|
||||
MedicalAid medicalAid = seriousApplyService.fetch(id);
|
||||
return AjaxResult.success(medicalAid);
|
||||
}
|
||||
|
||||
@PostMapping("exportSerious")
|
||||
@RequiresPermissions("medical:seriousApply")
|
||||
public void exportOrdinary(@RequestParam String id, HttpServletResponse response) {
|
||||
try (ServletOutputStream outputStream = response.getOutputStream();
|
||||
InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("templates/medical/seriousApply.docx");
|
||||
) {
|
||||
NutMap renderMap = seriousApplyService.exportSeriousData(id);
|
||||
String userName = renderMap.getString("userName");
|
||||
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", "attachment;filename=%s".formatted(URLEncoder.encode(userName + "-重大疾病医疗互助补助金审批表.docx", StandardCharsets.UTF_8)));
|
||||
Configure config = Configure.builder().build();
|
||||
assert inputStream != null;
|
||||
XWPFTemplate.compile(inputStream, config).render(renderMap, outputStream);
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+88
@@ -0,0 +1,88 @@
|
||||
package com.ruoyi.additional.controller.medical;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.additional.api.constant.medical.MedicalAuditState;
|
||||
import com.ruoyi.additional.api.constant.medical.MedicalPageForm;
|
||||
import com.ruoyi.additional.service.medical.MedicalAidOrdinaryApplyService;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* 补助汇总
|
||||
*
|
||||
* @author jug
|
||||
* @date 2023/02/22
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/medicalAid/subsidySummary")
|
||||
public class MedicalAidSubsidySummaryController {
|
||||
|
||||
@Autowired
|
||||
private MedicalAidOrdinaryApplyService ordinaryApplyService;
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@RequestMapping("pageData")
|
||||
@RequiresPermissions("medical:subsidySummary")
|
||||
public AjaxResult pageData(@RequestBody MedicalPageForm pageForm) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
m.id,
|
||||
m.loginName,
|
||||
m.userName,
|
||||
m.unionName,
|
||||
m.unitName,
|
||||
m.applyTime,
|
||||
m.diseaseDiagnosis,
|
||||
m.hospital,
|
||||
m.diseaseTypeId,
|
||||
m.type,
|
||||
m.stateId,
|
||||
m.ordinarySubsidiesAmount,
|
||||
m.seriousSubsidiesAmount,
|
||||
state.stateName,
|
||||
t.typeName as diseaseTypeName,
|
||||
DATE_FORMAT(a.auditTime,'%Y-%m-%d') as reimbursementDate
|
||||
FROM
|
||||
medical_aid m
|
||||
LEFT JOIN audit_state state ON state.stateId = m.stateId
|
||||
LEFT JOIN medical_aid_disease_type t on t.id = m.diseaseTypeId
|
||||
LEFT JOIN audit a on a.id = m.financialCashierAuditId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (!AuthUtil.hasAnyRoles("admin")) {
|
||||
cnd.and("m.unionId", "=", SecurityUtils.getUnionId());
|
||||
}
|
||||
|
||||
cnd.andEX("m.type", "=", pageForm.getType());
|
||||
cnd.andEX("m.year", "=", pageForm.getYear());
|
||||
cnd.and("m.stateId", "=", MedicalAuditState.PASS);
|
||||
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.orLike("m.userName", pageForm.getSearchKeyword());
|
||||
seg.orLike("m.loginName", pageForm.getSearchKeyword());
|
||||
cnd.and(seg);
|
||||
}
|
||||
|
||||
cnd.desc("m.applyTime");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = ordinaryApplyService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
}
|
||||
+103
@@ -0,0 +1,103 @@
|
||||
package com.ruoyi.additional.controller.meeting;
|
||||
|
||||
import com.ruoyi.additional.api.domain.meeting.MeetingInfo;
|
||||
import com.ruoyi.additional.api.domain.meeting.MeetingUser;
|
||||
import com.ruoyi.additional.api.domain.msgNotify.MsgNotify;
|
||||
import com.ruoyi.additional.service.meeting.MeetingManageService;
|
||||
import com.ruoyi.additional.service.msgNotify.MsgNotifyService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/16
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/meeting/meetingManage")
|
||||
public class MeetingManageController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private MeetingManageService meetingManageService;
|
||||
|
||||
@Autowired
|
||||
private MsgNotifyService msgNotifyService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("additional:meeting:meetingManage")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(name = "year", required = false) Integer year,
|
||||
@RequestParam(name = "typeId", required = false) String typeId) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("YEAR(info.startTime)", "=", year);
|
||||
cnd.andEX("info.typeId", "=", typeId);
|
||||
Pagination pagination = meetingManageService.pageData(pageForm, cnd);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@PostMapping("doAdd")
|
||||
@RequiresPermissions("additional:meeting:meetingManage")
|
||||
public AjaxResult doAdd(@RequestBody MeetingInfo meetingInfo,
|
||||
@RequestParam(name = "type") String type,
|
||||
@RequestParam(name = "sendTypes[]", required = false) List<String> sendTypes) {
|
||||
|
||||
MsgNotify msgNotify = meetingInfo.getMsgNotify();
|
||||
msgNotify.setType(type);
|
||||
msgNotify.setSendTypes(sendTypes);
|
||||
NutMap nutMap = msgNotifyService.doSubmit(msgNotify, false, meetingInfo.getMsgNotify().getUsers());
|
||||
meetingInfo.setNotifyId(nutMap.getString("id"));
|
||||
List<String> userIdList = nutMap.getList("userIdList", String.class);
|
||||
List<MeetingUser> meetingUserList = new ArrayList<>();
|
||||
for (String id : userIdList) {
|
||||
MeetingUser meetingUser = new MeetingUser();
|
||||
meetingUser.setUserId(id);
|
||||
meetingUserList.add(meetingUser);
|
||||
}
|
||||
meetingInfo.setMeetingUserList(meetingUserList);
|
||||
|
||||
meetingManageService.doAdd(meetingInfo);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("doEdit")
|
||||
@RequiresPermissions("additional:meeting:meetingManage")
|
||||
public AjaxResult doEdit(@RequestBody MeetingInfo meetingInfo,
|
||||
@RequestParam(name = "type") String type,
|
||||
@RequestParam(name = "sendTypes[]", required = false) List<String> sendTypes) {
|
||||
|
||||
MsgNotify notify = meetingInfo.getMsgNotify();
|
||||
notify.setType(type);
|
||||
notify.setSendTypes(sendTypes);
|
||||
NutMap msgMap = msgNotifyService.doSubmit(notify, false, meetingInfo.getMsgNotify().getUsers());
|
||||
List<String> userIdList = msgMap.getList("userIdList", String.class);
|
||||
|
||||
meetingManageService.doEdit(meetingInfo, userIdList);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@GetMapping("findOne/{id}")
|
||||
public AjaxResult findOne(@PathVariable String id) {
|
||||
MeetingInfo meetingInfo = dao.fetchLinks(dao.fetch(MeetingInfo.class, id), "^meetingTimePeriods$", Cnd.NEW().asc("startTime"));
|
||||
return AjaxResult.success(meetingInfo);
|
||||
}
|
||||
|
||||
@PostMapping("doDelete/{id}")
|
||||
@RequiresPermissions("additional:meeting:meetingManage")
|
||||
public AjaxResult doDelete(@PathVariable String id) {
|
||||
meetingManageService.doDelete(id);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
+106
@@ -0,0 +1,106 @@
|
||||
package com.ruoyi.additional.controller.meeting;
|
||||
|
||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
|
||||
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||
import com.ruoyi.additional.api.domain.meeting.MeetingInfo;
|
||||
import com.ruoyi.additional.api.domain.meeting.MeetingTimePeriod;
|
||||
import com.ruoyi.additional.service.meeting.MeetingOnlineService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.Charset;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/17
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/meeting/meetingOnline")
|
||||
public class MeetingOnlineController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private MeetingOnlineService meetingOnlineService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("additional:meeting:meetingOnline")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(name = "year", required = false) Integer year,
|
||||
@RequestParam(name = "typeId", required = false) String typeId) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("YEAR(info.startTime)", "=", year);
|
||||
cnd.andEX("info.typeId", "=", typeId);
|
||||
Pagination pagination = meetingOnlineService.pageData(pageForm, cnd);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@PostMapping("exportSignature/{timePeriodId}")
|
||||
@RequiresPermissions("additional:meeting:meetingOnline")
|
||||
public void exportSignature(@PathVariable String timePeriodId, HttpServletResponse response) throws IOException {
|
||||
MeetingTimePeriod timePeriod = dao.fetch(MeetingTimePeriod.class, timePeriodId);
|
||||
MeetingInfo meetingInfo = dao.fetch(MeetingInfo.class, timePeriod.getMeetingId());
|
||||
String fileName = meetingInfo.getMeetingName() + "(" + timePeriod.getTimePeriodName() + ")签字表";
|
||||
|
||||
List<ExcelExportEntity> entityArrayList = new ArrayList<>();
|
||||
entityArrayList.add(new ExcelExportEntity("姓名", "username", 20));
|
||||
entityArrayList.add(new ExcelExportEntity("工号", "loginname", 20));
|
||||
entityArrayList.add(new ExcelExportEntity("单位", "unitname", 20));
|
||||
entityArrayList.add(new ExcelExportEntity("分工会", "unionname", 20));
|
||||
entityArrayList.add(new ExcelExportEntity("签字", "", 20));
|
||||
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setTitle(timePeriod.getTimePeriodName() + "签字表");
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityArrayList, meetingOnlineService.exportSignature(timePeriodId));
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", "attachment;filename=%s".formatted(URLEncoder.encode(fileName + ".xlsx", StandardCharsets.UTF_8)));
|
||||
workbook.write(response.getOutputStream());
|
||||
workbook.close();
|
||||
}
|
||||
|
||||
@GetMapping("getRealTimeData/{timePeriodId}")
|
||||
@RequiresPermissions("additional:meeting:meetingOnline")
|
||||
public AjaxResult getRealTimeData(@PathVariable String timePeriodId) {
|
||||
List<NutMap> signInUser = meetingOnlineService.getSignInUser(timePeriodId);
|
||||
List<Map<String, Object>> countData = meetingOnlineService.getRealTimeData(timePeriodId);
|
||||
return AjaxResult.success(Map.of("countData", countData, "userData", signInUser));
|
||||
}
|
||||
|
||||
@GetMapping("generateQrCodeUrl")
|
||||
@RequiresPermissions("additional:meeting:meetingOnline")
|
||||
public AjaxResult generateQrCodeUrl(String tpId, String meetingId) {
|
||||
StringBuilder redirect = new StringBuilder();
|
||||
redirect.append("https://zhgh.neu.edu.cn/h5/#/pages/index?path=");
|
||||
|
||||
StringBuilder busUrl = new StringBuilder();
|
||||
busUrl.append("/pages/meeting/signIn");
|
||||
busUrl.append("?a=1");
|
||||
busUrl.append("&");
|
||||
busUrl.append("mtpId=").append(tpId);
|
||||
busUrl.append("&");
|
||||
busUrl.append("meetingId=").append(meetingId);
|
||||
|
||||
redirect.append(URLEncoder.encode(busUrl.toString(), Charset.defaultCharset()));
|
||||
return AjaxResult.success(redirect);
|
||||
}
|
||||
}
|
||||
+107
@@ -0,0 +1,107 @@
|
||||
package com.ruoyi.additional.controller.meeting;
|
||||
|
||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
|
||||
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||
import cn.afterturn.easypoi.excel.export.ExcelExportService;
|
||||
import com.ruoyi.additional.service.meeting.MeetingStatisticsService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.ServletOutputStream;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/17
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/meeting/meetingStatistics")
|
||||
public class MeetingStatisticsController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private MeetingStatisticsService meetingStatisticsService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("additional:meeting:meetingStatistics")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(name = "meetingId", required = false) String meetingId,
|
||||
@RequestParam(name = "meetingTime[]", required = false) String[] meetingTime,
|
||||
@RequestParam(name = "typeId", required = false) String typeId) {
|
||||
Pagination pagination = meetingStatisticsService.pageData(pageForm, meetingId, meetingTime, typeId);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@GetMapping("getSignUserNum")
|
||||
@RequiresPermissions("additional:meeting:meetingStatistics")
|
||||
public AjaxResult getSignUserNum(int val) {
|
||||
Random random = new Random();
|
||||
return AjaxResult.success(val + random.nextInt(2) + 1);
|
||||
}
|
||||
|
||||
@GetMapping("getMeetingList")
|
||||
@RequiresPermissions("additional:meeting:meetingStatistics")
|
||||
public AjaxResult getMeetingList(@RequestParam(name = "meetingTime[]", required = false) String[] meetingTime) {
|
||||
Object meetingList = meetingStatisticsService.getMeetingList(meetingTime);
|
||||
return AjaxResult.success(meetingList);
|
||||
}
|
||||
|
||||
@PostMapping("getUserData")
|
||||
@RequiresPermissions("additional:meeting:meetingStatistics")
|
||||
public AjaxResult getUserData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(name = "id", required = false) String id,
|
||||
@RequestParam(name = "meetingId", required = false) String meetingId,
|
||||
@RequestParam(name = "type", required = false) String type,
|
||||
@RequestParam(name = "unitId", required = false) String unitId,
|
||||
@RequestParam(name = "unionId", required = false) String unionId) {
|
||||
Pagination userData = meetingStatisticsService.getUserData(pageForm, id, meetingId, type, unitId, unionId);
|
||||
return AjaxResult.success(userData);
|
||||
}
|
||||
|
||||
@RequestMapping("exportUser")
|
||||
@RequiresPermissions("additional:meeting:meetingStatistics")
|
||||
public void exportUser(String id, String meetingId, HttpServletResponse response) throws IOException {
|
||||
List<ExcelExportEntity> entityList = new ArrayList<>();
|
||||
entityList.add(new ExcelExportEntity("姓名", "userName", 20));
|
||||
entityList.add(new ExcelExportEntity("工号", "loginName", 20));
|
||||
entityList.add(new ExcelExportEntity("单位", "unitName", 30));
|
||||
entityList.add(new ExcelExportEntity("分工会", "unionName", 35));
|
||||
|
||||
Workbook workbook = new XSSFWorkbook();
|
||||
|
||||
String[] arr = {"应到人数", "实到人数", "请假人数", "未到人数"};
|
||||
for (String a : arr) {
|
||||
List<NutMap> userData = meetingStatisticsService.getUserData(id, meetingId, a);
|
||||
ExcelExportService service = new ExcelExportService();
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setTitle(a);
|
||||
exportParams.setSheetName(a);
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
service.createSheetForMap(workbook, exportParams, entityList, userData);
|
||||
}
|
||||
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", "attachment;filename=%s".formatted(URLEncoder.encode("人员列表.xlsx", StandardCharsets.UTF_8)));
|
||||
ServletOutputStream outputStream = response.getOutputStream();
|
||||
workbook.write(outputStream);
|
||||
outputStream.close();
|
||||
}
|
||||
}
|
||||
+86
@@ -0,0 +1,86 @@
|
||||
package com.ruoyi.additional.controller.meeting;
|
||||
|
||||
import com.ruoyi.additional.api.domain.AuditState;
|
||||
import com.ruoyi.additional.api.domain.meeting.MeetingType;
|
||||
import com.ruoyi.additional.service.meeting.MeetingTypeService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/16
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/meeting/meetingType")
|
||||
public class MeetingTypeController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private MeetingTypeService meetingTypeService;
|
||||
|
||||
@GetMapping("findAll")
|
||||
public AjaxResult findAll() {
|
||||
List<MeetingType> typeList = dao.query(MeetingType.class, Cnd.NEW().asc("sortNum"));
|
||||
dao.fetchLinks(typeList, "^auditStateList$");
|
||||
for (MeetingType meetingType : typeList) {
|
||||
meetingType.setAuditStateList(dao.query(AuditState.class, Cnd.where("typeId", "=", meetingType.getId()).and("module", "=", meetingType.getModuleName())));
|
||||
List<AuditState> auditStateList = meetingType.getAuditStateList();
|
||||
dao.fetchLinks(auditStateList, "^auditStateUserList$");
|
||||
}
|
||||
return AjaxResult.success(typeList);
|
||||
}
|
||||
|
||||
@PostMapping("doHandle")
|
||||
@RequiresPermissions("additional:meeting:meetingType")
|
||||
public AjaxResult doHandle(@RequestBody MeetingType meetingType) {
|
||||
if (null == meetingType.getId()) {
|
||||
int typeCount = dao.count(MeetingType.class, Cnd.where("moduleName", "=", meetingType.getModuleName()));
|
||||
int count = dao.count(AuditState.class, Cnd.where("module", "=", meetingType.getModuleName()));
|
||||
if (typeCount > 0 || count > 0) {
|
||||
return AjaxResult.error("模块名称已存在,换一个试试");
|
||||
}
|
||||
meetingTypeService.add(meetingType);
|
||||
} else {
|
||||
meetingTypeService.edit(meetingType);
|
||||
}
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("delete/{id}")
|
||||
@RequiresPermissions("additional:meeting:meetingType")
|
||||
public AjaxResult delete(@PathVariable Integer id) {
|
||||
MeetingType meetingType = dao.fetch(MeetingType.class, id);
|
||||
dao.clear(AuditState.class, Cnd.where("module", "=", meetingType.getModuleName()));
|
||||
dao.clear(MeetingType.class, Cnd.where("id", "=", id));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@GetMapping("findMaxStateId")
|
||||
@RequiresPermissions("additional:meeting:meetingType")
|
||||
public AjaxResult findMaxStateId() {
|
||||
return AjaxResult.success(meetingTypeService.findMaxStateId());
|
||||
}
|
||||
|
||||
@RequestMapping("checkStateId")
|
||||
@RequiresPermissions("additional:meeting:meetingType")
|
||||
public AjaxResult checkStateId(@RequestParam("stateId") Integer stateId, @RequestParam("stateIndex") Integer stateIndex) {
|
||||
if (stateId == null) {
|
||||
return AjaxResult.error("参数错误!");
|
||||
}
|
||||
int count = dao.count(AuditState.class, Cnd.where("stateId", "=", stateId));
|
||||
if (count == 0) {
|
||||
return AjaxResult.success(stateId);
|
||||
} else {
|
||||
return AjaxResult.success(meetingTypeService.findMaxStateId() + 10 * stateIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
package com.ruoyi.additional.controller.meeting.mobile;
|
||||
|
||||
import com.ruoyi.additional.api.domain.Audit;
|
||||
import com.ruoyi.additional.service.meeting.MMeetingAuditService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresLogin;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/22
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/mobile/meetingAudit")
|
||||
public class MMeetingAuditController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private MMeetingAuditService meetingAuditService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresLogin
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(name = "typeId", required = false) String typeId,
|
||||
@RequestParam(name = "meetingTime", required = false) Integer meetingTime) {
|
||||
|
||||
Pagination pagination = meetingAuditService.myMeetingPageData(pageForm.getPageNumber(), pageForm.getPageSize(), pageForm.getSearchKeyword(), typeId, meetingTime);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@GetMapping("getLeaveUser")
|
||||
@RequiresLogin
|
||||
public AjaxResult getLeaveUser(String meetingId, String typeId, String auditType) {
|
||||
if (StringUtils.isBlank(meetingId)) {
|
||||
return AjaxResult.warn("参数为空");
|
||||
}
|
||||
return AjaxResult.success(meetingAuditService.getLeaveUser(meetingId, typeId, auditType));
|
||||
}
|
||||
|
||||
@PostMapping("audit")
|
||||
@RequiresLogin
|
||||
public AjaxResult audit(@RequestBody Audit audit,
|
||||
@RequestParam(name = "idList[]", required = false) String[] idList,
|
||||
@RequestParam(name = "isPass", required = false) Boolean isPass) {
|
||||
meetingAuditService.audit(idList, audit, isPass);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
+154
@@ -0,0 +1,154 @@
|
||||
package com.ruoyi.additional.controller.meeting.mobile;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.additional.api.domain.meeting.MeetingInfo;
|
||||
import com.ruoyi.additional.api.domain.meeting.MeetingTimePeriodUser;
|
||||
import com.ruoyi.additional.service.meeting.MMeetingMineService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.utils.DateUtils;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresLogin;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/22
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/mobile/myMeeting")
|
||||
public class MMeetingMineController {
|
||||
|
||||
@Autowired
|
||||
private MMeetingMineService meetingMineService;
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresLogin
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(name = "typeId", required = false) String typeId,
|
||||
@RequestParam(name = "meetingTime", required = false) Integer meetingTime,
|
||||
@RequestParam(name = "tabNameIndex", required = false) Integer tabNameIndex) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (StrUtil.isNotBlank(typeId)) {
|
||||
cnd.andEX("info.typeId", "=", typeId);
|
||||
}
|
||||
if (meetingTime != null) {
|
||||
if (meetingTime == 0) {
|
||||
cnd.andEX("info.startTime", ">=", DateUtils.getTime());
|
||||
} else {
|
||||
cnd.andEX("info.startTime", "<", DateUtils.getTime());
|
||||
}
|
||||
}
|
||||
switch (tabNameIndex) {
|
||||
case 1 -> cnd.and("mu.isJoin", "is", null);
|
||||
case 2 -> cnd.and("mu.isJoin", "=", 0);
|
||||
default -> {
|
||||
}
|
||||
}
|
||||
|
||||
Pagination pagination = meetingMineService.myMeetingPageData(pageForm, cnd);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@GetMapping("findMyMeetPeriod")
|
||||
@RequiresLogin
|
||||
public AjaxResult findMyMeetPeriod(@RequestParam(name = "meetingId", required = false) String meetingId) {
|
||||
if (StrUtil.isBlank(meetingId)) {
|
||||
return AjaxResult.warn("参数错误");
|
||||
}
|
||||
return AjaxResult.success(meetingMineService.findMyMeetPeriod(meetingId));
|
||||
}
|
||||
|
||||
@PostMapping("askForLeave")
|
||||
@RequiresLogin
|
||||
public AjaxResult askForLeave(@RequestBody List<MeetingTimePeriodUser> meetingTimePeriod,
|
||||
@RequestParam(name = "meetingId", required = false) String meetingId) {
|
||||
//先清空,因为可能会涉及到修改
|
||||
org.nutz.dao.Chain clearChain = Chain.make("isJoin", null);
|
||||
clearChain.add("stateCode", null);
|
||||
clearChain.add("leaveReason", "");
|
||||
Cnd clearCnd = Cnd.where("meetingId", "=", meetingId)
|
||||
.and("userId", "=", SecurityUtils.getUserId())
|
||||
.and("auditIdList", "is", null);
|
||||
dao.update(MeetingTimePeriodUser.class, clearChain, clearCnd);
|
||||
|
||||
if (Lang.isEmpty(meetingTimePeriod)) {
|
||||
return AjaxResult.success();
|
||||
}
|
||||
meetingMineService.askForLeave(meetingTimePeriod);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("confirmMeeting")
|
||||
@RequiresLogin
|
||||
public AjaxResult confirmMeeting(@RequestBody List<String> tpuIds) {
|
||||
meetingMineService.confirmMeeting(tpuIds);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@GetMapping("getMeetingInfo")
|
||||
@RequiresLogin
|
||||
public AjaxResult getMeetingInfo(@RequestParam(name = "meetingId", required = false) String meetingId,
|
||||
@RequestParam(name = "mtpId", required = false) String mtpId) {
|
||||
MeetingInfo meetingInfo = dao.fetch(MeetingInfo.class, meetingId);
|
||||
dao.fetchLinks(meetingInfo, "meetingTimePeriods", Cnd.NEW().asc("startTime"));
|
||||
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("meetingTimePeriodId", "=", mtpId);
|
||||
cnd.and("userId", "=", SecurityUtils.getUserId());
|
||||
MeetingTimePeriodUser mtPu = dao.fetch(MeetingTimePeriodUser.class, cnd);
|
||||
|
||||
if (Lang.isEmpty(meetingInfo)) {
|
||||
return AjaxResult.warn("参数错误");
|
||||
}
|
||||
if (Lang.isEmpty(mtPu)) {
|
||||
return AjaxResult.warn("你不是当前会议人员");
|
||||
}
|
||||
|
||||
return AjaxResult.success(Map.of("meetingInfo", meetingInfo, "signInfo", mtPu));
|
||||
}
|
||||
|
||||
@PostMapping("signIn")
|
||||
@RequiresLogin
|
||||
public AjaxResult signIn(String mtpId) {
|
||||
if (StrUtil.isBlank(mtpId)) {
|
||||
return AjaxResult.warn("参数错误");
|
||||
}
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("meetingTimePeriodId", "=", mtpId);
|
||||
cnd.and("userId", "=", SecurityUtils.getUserId());
|
||||
MeetingTimePeriodUser mtpu = dao.fetch(MeetingTimePeriodUser.class, cnd);
|
||||
if (Lang.isEmpty(mtpu)) {
|
||||
return AjaxResult.warn("参数错误");
|
||||
}
|
||||
if (Lang.isNotEmpty(mtpu.getIsJoin()) && !mtpu.getIsJoin()) {
|
||||
return AjaxResult.warn("您已请假,不能签到喔");
|
||||
}
|
||||
if (Lang.isNotEmpty(mtpu.getIsSignIn()) && mtpu.getIsSignIn()) {
|
||||
return AjaxResult.warn("您已签到,不要重复签到喔");
|
||||
}
|
||||
meetingMineService.signIn(mtpu);
|
||||
return AjaxResult.success("签到成功");
|
||||
}
|
||||
|
||||
@PostMapping("cancelLeave")
|
||||
@RequiresLogin
|
||||
public AjaxResult cancelLeave(String id) {
|
||||
dao.update(MeetingTimePeriodUser.class, Chain.make("isJoin", null).add("leaveReason", null).add("stateCode", null)
|
||||
, Cnd.where("id", "=", id));
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
+196
@@ -0,0 +1,196 @@
|
||||
package com.ruoyi.additional.controller.msgNotify;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
|
||||
import com.ruoyi.additional.api.domain.msgNotify.MsgNotify;
|
||||
import com.ruoyi.additional.api.domain.msgNotify.MsgNotifyUser;
|
||||
import com.ruoyi.additional.constant.Ds;
|
||||
import com.ruoyi.additional.service.msgNotify.MsgNotifyService;
|
||||
import com.ruoyi.common.core.constant.SecurityConstants;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.domain.R;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.jdh.api.domain.db.Jdh_db;
|
||||
import com.ruoyi.system.api.RemoteUserRoleService;
|
||||
import com.ruoyi.system.api.RemoteUserService;
|
||||
import com.ruoyi.system.api.domain.SmsDTO;
|
||||
import com.ruoyi.system.api.domain.SysUnion;
|
||||
import com.ruoyi.system.api.domain.SysUserRole;
|
||||
import com.ruoyi.system.api.model.FeignCnd;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
* 新建消息
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/2/13 9:48
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/msgNotify/send")
|
||||
public class MsgNotifyController {
|
||||
|
||||
|
||||
@Autowired
|
||||
private MsgNotifyService msgNotifyService;
|
||||
|
||||
@Autowired
|
||||
private RemoteUserRoleService remoteUserRoleService;
|
||||
|
||||
@Autowired
|
||||
private RemoteUserService remoteUserService;
|
||||
|
||||
|
||||
@PostMapping("/pageData")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(required = false, name = "users[]") List<String> users) {
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
userId,
|
||||
userName,
|
||||
loginName,
|
||||
deptId unitId,
|
||||
deptName unitName,
|
||||
mobile,
|
||||
unionName
|
||||
from user
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
//cnd.andEX("member", "=", 1);
|
||||
if (Lang.isNotEmpty(users)) {
|
||||
cnd.and("userId", "in", users);
|
||||
}
|
||||
if (Strings.isNotBlank(pageForm.getSearchName()) && Strings.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
cnd.where().andLike(pageForm.getSearchName(), pageForm.getSearchKeyword());
|
||||
}
|
||||
sql.setCondition(cnd);
|
||||
return AjaxResult.success(msgNotifyService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql));
|
||||
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/getUserByRoleId")
|
||||
public AjaxResult getUserByRoleId(@RequestParam(required = false, name = "roleIds[]") List<Long> roleIds,
|
||||
@RequestParam(required = false, value = "teacherMeetingId") String teacherMeetingId,
|
||||
@RequestBody PageForm PageForm) {
|
||||
|
||||
List<FeignCnd> cndList = new ArrayList<>();
|
||||
|
||||
if (Lang.isNotEmpty(roleIds)) {
|
||||
cndList.add(new FeignCnd("role_id", "in", roleIds));
|
||||
if (roleIds.stream().anyMatch(r -> r == 104)) {
|
||||
cndList.add(new FeignCnd("jdhid", "=", teacherMeetingId));
|
||||
|
||||
DynamicDataSourceContextHolder.push("jdh");
|
||||
List<Jdh_db> dbs = msgNotifyService.dao().query(Jdh_db.class, Cnd.NEW().andEX("jdhid", "=", teacherMeetingId));
|
||||
DynamicDataSourceContextHolder.clear();
|
||||
if(Lang.isNotEmpty(dbs)) {
|
||||
List<Long> list = dbs.stream().map(Jdh_db::getDbid).collect(Collectors.toList());
|
||||
cndList.add(new FeignCnd("user_id", "in", list));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
List<SysUserRole> userRoles = remoteUserRoleService.getUserRole(cndList).getData();
|
||||
List<Long> userIdList = userRoles.stream().map(SysUserRole::getUserId).distinct().collect(Collectors.toList());
|
||||
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
userId,
|
||||
userName,
|
||||
loginName,
|
||||
deptId unitId,
|
||||
deptName unitName,
|
||||
mobile,
|
||||
unionName
|
||||
from user
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (Strings.isNotBlank(PageForm.getSearchName()) && Strings.isNotBlank(PageForm.getSearchKeyword())) {
|
||||
cnd.where().andLike(PageForm.getSearchName(), PageForm.getSearchKeyword());
|
||||
}
|
||||
cnd.and("userId", "in", userIdList);
|
||||
|
||||
sql.setCondition(cnd);
|
||||
return AjaxResult.success(msgNotifyService.listPageMap(PageForm.getPageNumber(), PageForm.getPageSize(), sql));
|
||||
}
|
||||
|
||||
@GetMapping("/findOne")
|
||||
public AjaxResult findOne(String id) {
|
||||
return AjaxResult.success(msgNotifyService.fetch(id));
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/getUsersByTitleId")
|
||||
public Object getUsersByTitleId(@RequestBody PageForm pageForm,
|
||||
@RequestParam String id,
|
||||
@RequestParam(required = false, value = "type") String type) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
u.userId,
|
||||
u.userName,
|
||||
u.loginName,
|
||||
u.deptId unitId,
|
||||
u.deptName unitName,
|
||||
u.mobile,
|
||||
u.unionName
|
||||
FROM
|
||||
msg_notify_user mnu
|
||||
LEFT JOIN `user` u ON u.userid = mnu.userid
|
||||
$condition
|
||||
""");
|
||||
cnd.and("mnu.titleId", "=", id);
|
||||
sql.setCondition(cnd);
|
||||
if (!type.equals("user")) {
|
||||
return msgNotifyService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
} else {
|
||||
return msgNotifyService.listMap(sql);
|
||||
}
|
||||
}
|
||||
|
||||
@PostMapping("/doSubmit")
|
||||
public AjaxResult doSubmit(@RequestBody MsgNotify msgNotify,
|
||||
@RequestParam boolean flag) {
|
||||
try {
|
||||
NutMap map = msgNotifyService.doSubmit(msgNotify, flag, msgNotify.getUsers());
|
||||
//如果是true发送短信
|
||||
if (flag) {
|
||||
String id = map.getString("id");
|
||||
msgNotify = msgNotifyService.fetch(id);
|
||||
List<String> loginNames = map.getAsList("loginNames", String.class);
|
||||
SmsDTO smsDTO = new SmsDTO();
|
||||
smsDTO.setLoginNames(loginNames);
|
||||
smsDTO.setSms_info(msgNotify.getContent());
|
||||
// R r = remoteUserService.sendSms(loginNames, new ArrayList<>(), msgNotify.getContent());
|
||||
R r = remoteUserService.sendSms(smsDTO, SecurityConstants.INNER);
|
||||
if (R.isError(r)) {
|
||||
msgNotify.setHold(false);
|
||||
msgNotifyService.update(msgNotify);
|
||||
return AjaxResult.error(r.getMsg());
|
||||
}
|
||||
msgNotify.setSendTime(DateUtil.now());
|
||||
msgNotifyService.update(msgNotify);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
return AjaxResult.success();
|
||||
}catch (Exception e){
|
||||
return AjaxResult.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
+104
@@ -0,0 +1,104 @@
|
||||
package com.ruoyi.additional.controller.msgNotify;
|
||||
|
||||
import com.ruoyi.additional.service.msgNotify.MsgNotifyService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.dao.util.cri.Static;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/2/13 9:49
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/msgNotify/sendList")
|
||||
public class MsgNotifyListController {
|
||||
|
||||
|
||||
@Autowired
|
||||
private MsgNotifyService msgNotifyService;
|
||||
|
||||
|
||||
@PostMapping("/pageData")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(required = false, value = "titleId") String titleId,
|
||||
@RequestParam(required = false, name = "dateRange[]") List<String> dateRange,
|
||||
@RequestParam(required = false, value = "unitId") String unitId,
|
||||
@RequestParam(required = false, value = "unionId") String unionId,
|
||||
@RequestParam(required = false, name = "sendTypes[]") List<String> sendTypes) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
u.userName,
|
||||
u.loginName,
|
||||
u.unionName,
|
||||
u.deptName,
|
||||
mnu.*,
|
||||
mn.title,
|
||||
mn.activityGroupId,
|
||||
mn.module,
|
||||
mn.teacherMeetingId,
|
||||
mn.type,
|
||||
mn.roleIds,
|
||||
mn.sendTypes,
|
||||
mn.content,
|
||||
mn.sendTime,
|
||||
mn.hold
|
||||
FROM
|
||||
`msg_notify_user` mnu
|
||||
LEFT JOIN `user` u ON u.userId = mnu.userId
|
||||
LEFT JOIN msg_notify mn ON mn.id = mnu.titleId
|
||||
$condition
|
||||
""");
|
||||
cnd.andEX("u.unionId", "=", unionId);
|
||||
cnd.andEX("u.deptId", "=", unitId);
|
||||
cnd.andEX("mn.hold", "=", 1);
|
||||
cnd.andEX("mn.id", "=", titleId);
|
||||
if (!AuthUtil.hasRole("admin")) {
|
||||
cnd.and("mnu.userId", "=", SecurityUtils.getUserId());
|
||||
}
|
||||
if (Strings.isNotBlank(pageForm.getSearchName()) && Strings.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
cnd.where().andLike(pageForm.getSearchName(), pageForm.getSearchKeyword());
|
||||
}
|
||||
if (sendTypes != null && sendTypes.contains("msg")) {
|
||||
cnd.and(new Static("JSON_CONTAINS(mn.sendTypes,JSON_QUOTE( 'msg' ))"));
|
||||
}
|
||||
if (sendTypes != null && sendTypes.contains("WeChat")) {
|
||||
cnd.and(new Static("JSON_CONTAINS(mn.sendTypes,JSON_QUOTE( 'WeChat' ))"));
|
||||
}
|
||||
if (dateRange != null && dateRange.size() == 2) {
|
||||
cnd.and("mn.sendTime", ">=", dateRange.get(0));
|
||||
cnd.and("mn.sendTime", "<=", dateRange.get(1));
|
||||
|
||||
}
|
||||
cnd.desc("mn.sendTime");
|
||||
cnd.desc("u.unionCode");
|
||||
sql.setCondition(cnd);
|
||||
return AjaxResult.success(msgNotifyService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql));
|
||||
}
|
||||
|
||||
@PostMapping("/getTitleList")
|
||||
public AjaxResult getTitleList(@RequestParam(required = false, name = "dateRange[]") List<String> dateRange) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (dateRange != null && dateRange.size() == 2) {
|
||||
cnd.and("CreateTime", ">=", dateRange.get(0));
|
||||
cnd.and("CreateTime", "<=", dateRange.get(1));
|
||||
|
||||
}
|
||||
return AjaxResult.success(msgNotifyService.query(cnd));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+86
@@ -0,0 +1,86 @@
|
||||
package com.ruoyi.additional.controller.msgNotify;
|
||||
|
||||
import com.ruoyi.additional.service.msgNotify.MsgNotifyService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.domain.R;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.dao.util.cri.Static;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*
|
||||
* @Author zhf
|
||||
* @Date 2023/2/13 9:50
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/msgNotify/titleList")
|
||||
public class MsgNotifyTitleController {
|
||||
|
||||
|
||||
@Autowired
|
||||
private MsgNotifyService msgNotifyService;
|
||||
|
||||
|
||||
@PostMapping("/pageData")
|
||||
@RequiresPermissions("additional:msgNotify:notifyTitle")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(required = false, name = "dateRange[]") List<String> dateRange,
|
||||
@RequestParam(required = false, name = "sendTypes[]") List<String> sendTypes,
|
||||
@RequestParam(required = false, value = "title") String title) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
mn.*
|
||||
FROM
|
||||
`msg_notify` mn $condition
|
||||
""");
|
||||
if (Strings.isNotBlank(title)) {
|
||||
cnd.where().andLike("mn.title", title);
|
||||
}
|
||||
if (sendTypes != null && sendTypes.contains("msg")) {
|
||||
cnd.and(new Static("JSON_CONTAINS(mn.sendTypes,JSON_QUOTE( 'msg' ))"));
|
||||
}
|
||||
if (sendTypes != null && sendTypes.contains("WeChat")) {
|
||||
cnd.and(new Static("JSON_CONTAINS(mn.sendTypes,JSON_QUOTE( 'WeChat' ))"));
|
||||
}
|
||||
if (dateRange != null && dateRange.size() == 2) {
|
||||
cnd.and("mn.CreateTime", ">=", dateRange.get(0));
|
||||
cnd.and("mn.CreateTime", "<=", dateRange.get(1));
|
||||
|
||||
}
|
||||
cnd.asc("mn.hold");
|
||||
cnd.desc("mn.CreateTime");
|
||||
sql.setCondition(cnd);
|
||||
return AjaxResult.success(msgNotifyService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql));
|
||||
}
|
||||
|
||||
|
||||
@DeleteMapping("/doDelete")
|
||||
public AjaxResult doDelete(String id) {
|
||||
msgNotifyService.doDelete(id);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/doSend")
|
||||
public AjaxResult doSend(@RequestParam String id,
|
||||
@RequestParam(required = false, value = "content") String content,
|
||||
@RequestParam(required = false, name = "sendTypes[]") List<String> sendTypes) {
|
||||
R r = msgNotifyService.doSend(id, content, sendTypes);
|
||||
if (R.isError(r)) {
|
||||
return AjaxResult.error(r.getMsg());
|
||||
}
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+139
@@ -0,0 +1,139 @@
|
||||
package com.ruoyi.additional.controller.offerAdvice;
|
||||
|
||||
import com.ruoyi.additional.api.constant.offerAdvice.OfferAdviceState;
|
||||
import com.ruoyi.additional.api.domain.Audit;
|
||||
import com.ruoyi.additional.api.domain.offerAdvice.OfferAdvice;
|
||||
import com.ruoyi.additional.constant.Ds;
|
||||
import com.ruoyi.additional.service.offerAdvice.OfferAdviceManageService;
|
||||
import com.ruoyi.additional.util.ProModuleDS;
|
||||
import com.ruoyi.common.core.constant.Roles;
|
||||
import com.ruoyi.common.core.constant.SecurityConstants;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.proposal.api.domain.ProposalType;
|
||||
import com.ruoyi.system.api.RemoteSysLocalProcessService;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/7
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/offerAdvice/offerAdviceLeaderAudit")
|
||||
public class OfferAdviceLeaderAuditController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
@Autowired
|
||||
private OfferAdviceManageService offerAdviceManageService;
|
||||
@Autowired
|
||||
private RemoteSysLocalProcessService localProcessService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("additional:offerAdvice:offerAdviceLeaderAudit")
|
||||
public Object pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(name = "subjectName", required = false) String subjectName,
|
||||
@RequestParam(name = "year", required = false) Integer year,
|
||||
@RequestParam(name = "auditState", required = false) Integer auditState) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
oa.*,
|
||||
state.stateName
|
||||
FROM
|
||||
offer_advice oa
|
||||
LEFT JOIN audit_state state ON state.stateId = oa.stateCode
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("YEAR(createTime)", "=", year);
|
||||
cnd.and(Cnd.likeEX("oa.subjectName", subjectName));
|
||||
|
||||
switch (auditState) {
|
||||
case -1 -> {
|
||||
cnd.and("oa.stateCode", "=", OfferAdviceState.awaitLeaderAudit);
|
||||
}
|
||||
case 1 -> {
|
||||
cnd.and("oa.stateCode", "=", OfferAdviceState.auditPass);
|
||||
}
|
||||
case 0 -> {
|
||||
cnd.and("oa.stateCode", ">=", OfferAdviceState.awaitLeaderAudit);
|
||||
}
|
||||
}
|
||||
if (!AuthUtil.hasRole("admin")) {
|
||||
|
||||
List<NutMap> list = ProModuleDS.exec(Ds.SYSTEM, () -> {
|
||||
Sql underTakeSql = Sqls.create("""
|
||||
select underTakeId from sys_user_role where role_id = @leaderRoleId and user_id = @userId
|
||||
""");
|
||||
underTakeSql.setParam("leaderRoleId", Roles.PROPOSAL_SCHOOL_LEADER);
|
||||
underTakeSql.setParam("userId", SecurityUtils.getUserId());
|
||||
return offerAdviceManageService.listMap(underTakeSql);
|
||||
});
|
||||
if (list != null && list.size() > 0) {
|
||||
List<String> takeIds = list.stream().map(o -> o.getString("underTakeId")).collect(Collectors.toList());
|
||||
cnd.and("oa.undertakeUnitId", "in", takeIds);
|
||||
}
|
||||
}
|
||||
cnd.asc("oa.stateCode");
|
||||
sql.setCondition(cnd);
|
||||
|
||||
Pagination pagination = offerAdviceManageService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
List<NutMap> list = pagination.getList();
|
||||
|
||||
//获取提案类型
|
||||
List<ProposalType> proposalTypes = ProModuleDS.exec(Ds.PROPOSAL, () -> {
|
||||
return dao.query(ProposalType.class, Cnd.NEW());
|
||||
});
|
||||
Map<Long, String> typeMap = proposalTypes.stream().collect(Collectors.toMap(ProposalType::getId, ProposalType::getTypeName));
|
||||
|
||||
list.forEach(item -> {
|
||||
item.put("typeName", typeMap.get(item.getLong("typeId")));
|
||||
});
|
||||
|
||||
pagination.setList(list);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@PostMapping("doAudit")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@RequiresPermissions("additional:offerAdvice:offerAdviceLeaderAudit")
|
||||
public Object doAudit(@RequestBody Audit audit,
|
||||
@RequestParam(name = "id", required = false) String id,
|
||||
@RequestParam(name = "publicity", required = false) Boolean publicity) {
|
||||
|
||||
audit.setAuditor(SecurityUtils.getUserId());
|
||||
audit.setAuditTime(new Date());
|
||||
audit.setUserName(SecurityUtils.getNickName());
|
||||
audit.setLoginName(SecurityUtils.getUsername());
|
||||
|
||||
dao.insert(audit);
|
||||
Chain chain = Chain.make("stateCode", OfferAdviceState.auditPass);
|
||||
chain.add("leaderAuditId", audit.getId());
|
||||
chain.add("publicity", publicity);
|
||||
dao.update(OfferAdvice.class, chain, Cnd.where("id", "=", id));
|
||||
|
||||
String processUniqueId = "OFFER_ADVICE@" + id;
|
||||
localProcessService.completeTask(processUniqueId, String.valueOf(OfferAdviceState.awaitLeaderAudit), "分管校领导已审核", SecurityConstants.INNER);
|
||||
localProcessService.completeProcess(processUniqueId, false, SecurityConstants.INNER);
|
||||
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
+100
@@ -0,0 +1,100 @@
|
||||
package com.ruoyi.additional.controller.offerAdvice;
|
||||
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import com.ruoyi.additional.api.domain.offerAdvice.OfferAdvice;
|
||||
import com.ruoyi.additional.constant.Ds;
|
||||
import com.ruoyi.additional.service.offerAdvice.OfferAdviceManageService;
|
||||
import com.ruoyi.additional.util.ProModuleDS;
|
||||
import com.ruoyi.common.core.constant.Roles;
|
||||
import com.ruoyi.common.core.constant.SecurityConstants;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.proposal.api.domain.ProposalType;
|
||||
import com.ruoyi.system.api.RemoteSysLocalProcessService;
|
||||
import com.ruoyi.system.api.domain.Sys_local_process_instance;
|
||||
import com.ruoyi.system.api.domain.Sys_local_process_instance_task;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/7
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/offerAdvice/offerAdviceMine")
|
||||
public class OfferAdviceMineController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
@Autowired
|
||||
private RemoteSysLocalProcessService localProcessService;
|
||||
@Autowired
|
||||
private OfferAdviceManageService offerAdviceManageService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("additional:offerAdvice:offerAdviceMine")
|
||||
public Object pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(name = "subjectName", required = false) String subjectName,
|
||||
@RequestParam(name = "year", required = false) Integer year) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
oa.*,
|
||||
state.stateName
|
||||
FROM
|
||||
offer_advice oa
|
||||
LEFT JOIN audit_state state ON state.stateId = oa.stateCode
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (!AuthUtil.hasAnyRoles("admin, A06")) {
|
||||
cnd.and("oa.createUserId", "=", SecurityUtils.getUserId());
|
||||
}
|
||||
cnd.andEX("YEAR(createTime)", "=", year);
|
||||
cnd.and(Cnd.likeEX("oa.subjectName", subjectName));
|
||||
cnd.asc("oa.stateCode");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = offerAdviceManageService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
List<NutMap> list = pagination.getList();
|
||||
|
||||
//获取提案类型
|
||||
List<ProposalType> proposalTypes = ProModuleDS.exec(Ds.PROPOSAL, () -> {
|
||||
return dao.query(ProposalType.class, Cnd.NEW());
|
||||
});
|
||||
Map<Long, String> typeMap = proposalTypes.stream().collect(Collectors.toMap(ProposalType::getId, ProposalType::getTypeName));
|
||||
|
||||
list.forEach(item -> {
|
||||
item.put("typeName", typeMap.get(item.getLong("typeId")));
|
||||
});
|
||||
|
||||
pagination.setList(list);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@PostMapping("doDelete/{id}")
|
||||
@RequiresPermissions("additional:offerAdvice:offerAdviceMine")
|
||||
public Object doDelete(@PathVariable String id) {
|
||||
Assert.notBlank(id);
|
||||
dao.clear(OfferAdvice.class, Cnd.where("id", "=", id));
|
||||
ProModuleDS.exec(Ds.SYSTEM, () -> {
|
||||
dao.clear(Sys_local_process_instance_task.class, Cnd.where("processInstanceId", "=", "OFFER_ADVICE@" + id));
|
||||
dao.clear(Sys_local_process_instance.class, Cnd.where("processUniqueId", "=", "OFFER_ADVICE@" + id));
|
||||
return null;
|
||||
});
|
||||
localProcessService.deleteProcessInstance("OFFER_ADVICE@" + id, SecurityConstants.INNER);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
+85
@@ -0,0 +1,85 @@
|
||||
package com.ruoyi.additional.controller.offerAdvice;
|
||||
|
||||
import com.ruoyi.additional.api.constant.offerAdvice.OfferAdviceState;
|
||||
import com.ruoyi.additional.constant.Ds;
|
||||
import com.ruoyi.additional.service.offerAdvice.OfferAdviceManageService;
|
||||
import com.ruoyi.additional.util.ProModuleDS;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.proposal.api.domain.ProposalType;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/7
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/offerAdvice/offerAdviceQuery")
|
||||
public class OfferAdviceQueryController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private OfferAdviceManageService offerAdviceManageService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("additional:offerAdvice:offerAdviceQuery")
|
||||
public Object pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(name = "subjectName", required = false) String subjectName,
|
||||
@RequestParam(name = "year", required = false) Integer year,
|
||||
@RequestParam(name = "unitId", required = false) String unitId,
|
||||
@RequestParam(name = "unionId", required = false) String unionId) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
oa.*,
|
||||
state.stateName,
|
||||
u.deptName as unitName,
|
||||
u.unionName as unionName
|
||||
FROM
|
||||
offer_advice oa
|
||||
LEFT JOIN audit_state state ON state.stateId = oa.stateCode
|
||||
LEFT JOIN `user` u on u.userId = oa.createUserId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("YEAR(createTime)", "=", year);
|
||||
cnd.and(Cnd.likeEX("oa.subjectName", subjectName));
|
||||
cnd.andEX("oa.createUnitId", "=", unitId);
|
||||
cnd.andEX("oa.createUnionId", "=", unionId);
|
||||
|
||||
cnd.and("oa.stateCode", "=", OfferAdviceState.auditPass);
|
||||
cnd.and("oa.publicity", "=", 1);
|
||||
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = offerAdviceManageService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
List<NutMap> list = pagination.getList();
|
||||
|
||||
//获取提案类型
|
||||
List<ProposalType> proposalTypes = ProModuleDS.exec(Ds.PROPOSAL, () -> {
|
||||
return dao.query(ProposalType.class, Cnd.NEW());
|
||||
});
|
||||
Map<Long, String> typeMap = proposalTypes.stream().collect(Collectors.toMap(ProposalType::getId, ProposalType::getTypeName));
|
||||
|
||||
list.forEach(item -> {
|
||||
item.put("typeName", typeMap.get(item.getLong("typeId")));
|
||||
});
|
||||
|
||||
pagination.setList(list);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
}
|
||||
+183
@@ -0,0 +1,183 @@
|
||||
package com.ruoyi.additional.controller.offerAdvice;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
|
||||
import com.ruoyi.additional.api.constant.offerAdvice.OfferAdviceState;
|
||||
import com.ruoyi.additional.api.domain.Audit;
|
||||
import com.ruoyi.additional.api.domain.offerAdvice.OfferAdvice;
|
||||
import com.ruoyi.additional.constant.Ds;
|
||||
import com.ruoyi.additional.service.offerAdvice.OfferAdviceManageService;
|
||||
import com.ruoyi.additional.util.ProModuleDS;
|
||||
import com.ruoyi.common.core.constant.Roles;
|
||||
import com.ruoyi.common.core.constant.SecurityConstants;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.domain.R;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.proposal.api.domain.ProposalType;
|
||||
import com.ruoyi.proposal.api.domain.ProposalUnderTake;
|
||||
import com.ruoyi.system.api.RemoteSysLocalProcessService;
|
||||
import com.ruoyi.system.api.domain.SysUserRole;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/7
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/offerAdvice/offerAdviceSchoolAudit")
|
||||
public class OfferAdviceSchoolAuditController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
@Autowired
|
||||
private OfferAdviceManageService offerAdviceManageService;
|
||||
@Autowired
|
||||
private RemoteSysLocalProcessService localProcessService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("additional:offerAdvice:offerAdviceSchoolAudit")
|
||||
public Object pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(name = "subjectName", required = false) String subjectName,
|
||||
@RequestParam(name = "year", required = false) Integer year,
|
||||
@RequestParam(name = "auditState", required = false) Integer auditState) {
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
oa.*,
|
||||
state.stateName
|
||||
FROM
|
||||
offer_advice oa
|
||||
LEFT JOIN audit_state state ON state.stateId = oa.stateCode
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("YEAR(createTime)", "=", year);
|
||||
cnd.and(Cnd.likeEX("oa.subjectName", subjectName));
|
||||
|
||||
switch (auditState) {
|
||||
case -1 -> {
|
||||
cnd.and("oa.stateCode", "=", OfferAdviceState.awaitSchoolUnionAudit);
|
||||
}
|
||||
case 1 -> {
|
||||
cnd.and("oa.stateCode", ">", OfferAdviceState.awaitSchoolUnionAudit);
|
||||
}
|
||||
case 0 -> {
|
||||
cnd.and("oa.stateCode", ">=", OfferAdviceState.awaitSchoolUnionAudit);
|
||||
}
|
||||
}
|
||||
|
||||
cnd.asc("oa.stateCode");
|
||||
sql.setCondition(cnd);
|
||||
|
||||
Pagination pagination = offerAdviceManageService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
List<NutMap> list = pagination.getList();
|
||||
|
||||
//获取提案类型
|
||||
List<ProposalType> proposalTypes = ProModuleDS.exec(Ds.PROPOSAL, () -> {
|
||||
return dao.query(ProposalType.class, Cnd.NEW());
|
||||
});
|
||||
Map<Long, String> typeMap = proposalTypes.stream().collect(Collectors.toMap(ProposalType::getId, ProposalType::getTypeName));
|
||||
|
||||
list.forEach(item -> {
|
||||
item.put("typeName", typeMap.get(item.getLong("typeId")));
|
||||
});
|
||||
|
||||
pagination.setList(list);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@PostMapping("doAudit")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@RequiresPermissions("additional:offerAdvice:offerAdviceSchoolAudit")
|
||||
public Object doAudit(@RequestBody Audit audit,
|
||||
@RequestParam(name = "id", required = false) String id,
|
||||
@RequestParam(name = "undertakeUnitId", required = false) String undertakeUnitId) {
|
||||
|
||||
audit.setAuditor(SecurityUtils.getUserId());
|
||||
audit.setAuditTime(new Date());
|
||||
audit.setUserName(SecurityUtils.getNickName());
|
||||
audit.setLoginName(SecurityUtils.getUsername());
|
||||
|
||||
dao.insert(audit);
|
||||
Chain chain = Chain.make("stateCode", OfferAdviceState.awaitLeaderAudit);
|
||||
chain.add("undertakeUnitId", undertakeUnitId);
|
||||
chain.add("schoolUnionAuditId", audit.getId());
|
||||
dao.update(OfferAdvice.class, chain, Cnd.where("id", "=", id));
|
||||
|
||||
String processUniqueId = "OFFER_ADVICE@" + id;
|
||||
localProcessService.completeTask(processUniqueId, String.valueOf(OfferAdviceState.awaitSchoolUnionAudit), "校工会已审核", SecurityConstants.INNER);
|
||||
|
||||
// 通过,下一步流程,分管校领导审核
|
||||
R<List<String>> assignments = localProcessService.getAssignmentsByColumn("underTakeId", undertakeUnitId, Roles.PROPOSAL_SCHOOL_LEADER, SecurityConstants.INNER);
|
||||
List<String> loginNameList = assignments.getData();
|
||||
|
||||
localProcessService.initCreateTask(
|
||||
processUniqueId,
|
||||
String.valueOf(OfferAdviceState.awaitLeaderAudit),
|
||||
"分管校领导审核",
|
||||
loginNameList,
|
||||
"/offerAdvice/offerAdviceLeaderAudit",
|
||||
null,
|
||||
SecurityConstants.INNER
|
||||
);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@GetMapping("getUnderTakeAndLeader")
|
||||
public AjaxResult getUnderTakeAndLeader() {
|
||||
//查询承办单位
|
||||
List<ProposalUnderTake> proposalUnderTakes = ProModuleDS.exec(Ds.PROPOSAL, () -> {
|
||||
return dao.query(ProposalUnderTake.class, Cnd.NEW().asc("unitCode"));
|
||||
});
|
||||
//从承办单位list中取id集合
|
||||
List<String> underTakeIds = proposalUnderTakes.stream().map(ProposalUnderTake::getId).collect(Collectors.toList());
|
||||
//查询sys_user_role表中角色为承办单位负责人
|
||||
List<NutMap> userList = ProModuleDS.exec(Ds.SYSTEM, () -> {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
r.*,
|
||||
GROUP_CONCAT( u.userName ) as userName
|
||||
FROM
|
||||
sys_user_role r
|
||||
LEFT JOIN `user` u ON u.userId = r.user_id
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("r.role_id", "=", Roles.PROPOSAL_SCHOOL_LEADER);
|
||||
cnd.and("r.underTakeId", "in", underTakeIds);
|
||||
cnd.and("r.underTakeId", "is not", null);
|
||||
cnd.groupBy("r.underTakeId");
|
||||
sql.setCondition(cnd);
|
||||
return offerAdviceManageService.listMap(sql);
|
||||
});
|
||||
Map<String, String> userMap = userList.stream().collect(Collectors.toMap(o -> o.getString("underTakeId"), o -> o.getString("userName")));
|
||||
//循环取
|
||||
List<NutMap> result = new ArrayList<>();
|
||||
proposalUnderTakes.forEach(item -> {
|
||||
String leadName = userMap.get(item.getId());
|
||||
NutMap nutMap = Lang.obj2nutmap(item);
|
||||
nutMap.put("leader", StrUtil.isNotBlank(leadName) ? leadName : "");
|
||||
result.add(nutMap);
|
||||
});
|
||||
return AjaxResult.success(result);
|
||||
}
|
||||
}
|
||||
+135
@@ -0,0 +1,135 @@
|
||||
package com.ruoyi.additional.controller.offerAdvice;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.additional.api.constant.offerAdvice.OfferAdviceState;
|
||||
import com.ruoyi.additional.api.domain.offerAdvice.OfferAdvice;
|
||||
import com.ruoyi.additional.constant.Ds;
|
||||
import com.ruoyi.additional.util.ProModuleDS;
|
||||
import com.ruoyi.common.core.constant.Roles;
|
||||
import com.ruoyi.common.core.constant.SecurityConstants;
|
||||
import com.ruoyi.common.core.domain.R;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresLogin;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.proposal.api.domain.ProposalType;
|
||||
import com.ruoyi.proposal.api.domain.ProposalUnderTake;
|
||||
import com.ruoyi.system.api.RemoteSysLocalProcessService;
|
||||
import com.ruoyi.system.api.domain.SysDept;
|
||||
import com.ruoyi.system.api.domain.SysUnion;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/7
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/offerAdvice/offerAdviceWrite")
|
||||
public class OfferAdviceWriteController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
@Autowired
|
||||
private RemoteSysLocalProcessService localProcessService;
|
||||
|
||||
@PostMapping("doHandler")
|
||||
@RequiresPermissions("additional:offerAdvice:offerAdviceWrite")
|
||||
public AjaxResult doHandler(@RequestBody OfferAdvice offerAdvice) {
|
||||
|
||||
// 如果是被退回的流程,那就要完成被退回流程的任务
|
||||
if (offerAdvice.getStateCode() != null) {
|
||||
localProcessService.completeReturnTask("OFFER_ADVICE@" + offerAdvice.getId(), SecurityConstants.INNER);
|
||||
}
|
||||
|
||||
if (offerAdvice.getIsSubmit()) {
|
||||
offerAdvice.setStateCode(OfferAdviceState.awaitSchoolUnionAudit);
|
||||
} else {
|
||||
offerAdvice.setStateCode(OfferAdviceState.unSubmitted);
|
||||
}
|
||||
|
||||
offerAdvice.setCreateUnitId(SecurityUtils.getDeptId());
|
||||
offerAdvice.setCreateUnionId(SecurityUtils.getUnionId());
|
||||
offerAdvice.setCreateUnitName(Optional.ofNullable(SecurityUtils.getDept()).map(SysDept::getDeptName).orElse(null));
|
||||
offerAdvice.setCreateUnionName(Optional.ofNullable(SecurityUtils.getUnion()).map(SysUnion::getUnionName).orElse(null));
|
||||
|
||||
if (StrUtil.isBlank(offerAdvice.getId())) {
|
||||
offerAdvice.setCreateUserId(SecurityUtils.getUserId());
|
||||
offerAdvice.setCreateLoginName(SecurityUtils.getUsername());
|
||||
offerAdvice.setCreateUserName(SecurityUtils.getNickName());
|
||||
offerAdvice.setCreateTime(DateUtil.date());
|
||||
dao.insert(offerAdvice);
|
||||
} else {
|
||||
dao.updateIgnoreNull(offerAdvice);
|
||||
}
|
||||
|
||||
String processUniqueId = "OFFER_ADVICE@" + offerAdvice.getId();
|
||||
|
||||
localProcessService.initCreateInstance(
|
||||
processUniqueId,
|
||||
offerAdvice.getId(),
|
||||
"[建言献策]" + offerAdvice.getCreateUserName(),
|
||||
"/offerAdvice/offerAdviceMine",
|
||||
null,
|
||||
SecurityConstants.INNER
|
||||
);
|
||||
|
||||
if(offerAdvice.getIsSubmit()) {
|
||||
//下一步流程,校工会审核
|
||||
R<List<String>> assignments = localProcessService.getAssignments(null, null, Roles.SCHOOL_ADMIN, SecurityConstants.INNER);
|
||||
List<String> loginNameList = assignments.getData();
|
||||
localProcessService.initCreateTask(
|
||||
processUniqueId,
|
||||
String.valueOf(OfferAdviceState.awaitSchoolUnionAudit),
|
||||
"校工会审核",
|
||||
loginNameList,
|
||||
"/offerAdvice/offerAdviceSchoolAudit",
|
||||
null,
|
||||
SecurityConstants.INNER
|
||||
);
|
||||
}
|
||||
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@GetMapping("findOne/{id}")
|
||||
@RequiresLogin
|
||||
public AjaxResult findOne(@PathVariable String id) {
|
||||
Assert.notBlank(id);
|
||||
OfferAdvice offerAdvice = dao.fetch(OfferAdvice.class, id);
|
||||
if (offerAdvice != null) {
|
||||
//查询提案类型
|
||||
if (offerAdvice.getTypeId() != null) {
|
||||
ProposalType proposalType = ProModuleDS.exec(Ds.PROPOSAL, () -> {
|
||||
return dao.fetch(ProposalType.class, Cnd.where("id", "=", offerAdvice.getTypeId()));
|
||||
});
|
||||
offerAdvice.setType(proposalType);
|
||||
}
|
||||
if (StrUtil.isNotBlank(offerAdvice.getUndertakeUnitId())) {
|
||||
//查询承办单位
|
||||
ProposalUnderTake proposalUnderTake = ProModuleDS.exec(Ds.PROPOSAL, () -> {
|
||||
return dao.fetch(ProposalUnderTake.class, offerAdvice.getUndertakeUnitId());
|
||||
});
|
||||
offerAdvice.setUnderTakeInfo(proposalUnderTake);
|
||||
}
|
||||
}
|
||||
return AjaxResult.success(dao.fetchLinks(offerAdvice, null));
|
||||
}
|
||||
|
||||
@GetMapping("getProposalType")
|
||||
public AjaxResult getProposalType() {
|
||||
List<ProposalType> typeCode = ProModuleDS.exec(Ds.PROPOSAL, () -> {
|
||||
return dao.query(ProposalType.class, Cnd.orderBy().asc("typeCode"));
|
||||
});
|
||||
return AjaxResult.success(typeCode);
|
||||
}
|
||||
}
|
||||
+166
@@ -0,0 +1,166 @@
|
||||
package com.ruoyi.additional.controller.reimbursement;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
||||
import com.ruoyi.additional.api.constant.reimbursement.ReimbursementState;
|
||||
import com.ruoyi.additional.api.domain.Audit;
|
||||
import com.ruoyi.additional.api.domain.reimbursement.ReimbursementNew;
|
||||
import com.ruoyi.additional.service.reimbursement.ReimbursementManageService;
|
||||
import com.ruoyi.common.core.constant.Roles;
|
||||
import com.ruoyi.common.core.constant.SecurityConstants;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.domain.R;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.system.api.RemoteSysLocalProcessService;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.ioc.aop.Aop;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/11
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/reimbursement/accountantAudit")
|
||||
public class ReimbursementAccountantAuditController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private ReimbursementManageService reimbursementManageService;
|
||||
|
||||
@Autowired
|
||||
private RemoteSysLocalProcessService localProcessService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("additional:reimbursement:reimbursementAccountantAudit")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "year", required = false) Integer year,
|
||||
@RequestParam(value = "unitId", required = false) String unitId,
|
||||
@RequestParam(value = "unionId", required = false) String unionId,
|
||||
@RequestParam(value = "reiItemId", required = false) String reiItemId,
|
||||
@RequestParam(value = "isAudit", required = false) Boolean isAudit) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
|
||||
if (isAudit == null) {
|
||||
cnd.and("rei.state", ">=", 140);
|
||||
} else if (isAudit) {
|
||||
cnd.and("rei.state", ">", 140);
|
||||
} else {
|
||||
cnd.and("rei.state", "=", 140);
|
||||
}
|
||||
|
||||
if (Strings.isNotBlank(reiItemId) && "ww".equals(reiItemId)) {
|
||||
cnd.and("rei.reimbursementItemId", "in", Lang.array("fyww", "zfww"));
|
||||
} else {
|
||||
cnd.andEX("rei.reimbursementItemId", "=", reiItemId);
|
||||
}
|
||||
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchName()) && StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
cnd.and(Cnd.likeEX(pageForm.getSearchName(), pageForm.getSearchKeyword()));
|
||||
}
|
||||
|
||||
cnd.andEX("YEAR ( rei.applyTime )", "=", year);
|
||||
cnd.andEX("rei.unitId", "=", unitId);
|
||||
cnd.andEX("rei.unionId", "=", unionId);
|
||||
|
||||
cnd.desc("rei.applyTime");
|
||||
Pagination pagination = reimbursementManageService.pageData(cnd, pageForm);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@PostMapping("rollBack/{id}")
|
||||
@DSTransactional
|
||||
@RequiresPermissions("additional:reimbursement:reimbursementAccountantAudit")
|
||||
public AjaxResult rollBack(@PathVariable String id) {
|
||||
String processUniqueId = "REIMBURSEMENT_APPLY@" + id;
|
||||
reimbursementManageService.update(Chain.make("state", ReimbursementState.ACCOUNTANT_READY), Cnd.where("id", "=", id));
|
||||
localProcessService.revokeTask(processUniqueId, String.valueOf(ReimbursementState.ACCOUNTANT_READY), SecurityConstants.INNER);
|
||||
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("doReview")
|
||||
@DSTransactional
|
||||
@RequiresPermissions("additional:reimbursement:reimbursementAccountantAudit")
|
||||
public AjaxResult doReview(@RequestBody Audit audit,
|
||||
@RequestParam(name = "id", required = false) String id,
|
||||
@RequestParam(name = "pass", required = false) Integer pass) {
|
||||
audit.setAuditor(SecurityUtils.getUserId());
|
||||
audit.setLoginName(SecurityUtils.getUsername());
|
||||
audit.setUserName(SecurityUtils.getNickName());
|
||||
audit.setAuditTime(new Date());
|
||||
audit = dao.insert(audit);
|
||||
|
||||
String taskNodeName = "";
|
||||
ReimbursementNew reimbursementNew = dao.fetch(ReimbursementNew.class, id);
|
||||
if (pass == 1) {
|
||||
taskNodeName = "校工会会计审核审核拒绝";
|
||||
reimbursementNew.setState(ReimbursementState.ACCOUNTANT_REJECTED);
|
||||
} else if (pass == 2) {
|
||||
taskNodeName = "校工会会计审核退回修改";
|
||||
reimbursementNew.setState(ReimbursementState.ACCOUNTANT_BACK_MODIFY);
|
||||
} else {
|
||||
taskNodeName = "待校工会审核";
|
||||
reimbursementNew.setState(ReimbursementState.SCHOOL_READY);
|
||||
}
|
||||
reimbursementNew.setAccountantAuditId(audit.getId());
|
||||
dao.updateIgnoreNull(reimbursementNew);
|
||||
|
||||
String processUniqueId = "REIMBURSEMENT_APPLY@" + id;
|
||||
// 先完成当前节点的任务
|
||||
localProcessService.completeTask(processUniqueId, String.valueOf(ReimbursementState.ACCOUNTANT_READY), taskNodeName, SecurityConstants.INNER);
|
||||
|
||||
if (pass == 1) {
|
||||
// 审核不通过,流程结束
|
||||
localProcessService.completeProcess(processUniqueId, true, SecurityConstants.INNER);
|
||||
}else if(pass==2){
|
||||
// 退回修改,流程继续
|
||||
Sql sql = Sqls.create("select loginName FROM `user` where userId=@userId").setParam("userId", reimbursementNew.getUserId());
|
||||
sql.setCallback(Sqls.callback.map());
|
||||
dao.execute(sql);
|
||||
NutMap userMap = (NutMap) sql.getResult();
|
||||
localProcessService.initCreateTask(
|
||||
processUniqueId,
|
||||
String.valueOf(ReimbursementState.ACCOUNTANT_BACK_MODIFY),
|
||||
taskNodeName,
|
||||
List.of(userMap.getString("loginName")),
|
||||
"/reimbursement/reimbursementMine",
|
||||
null,
|
||||
SecurityConstants.INNER
|
||||
);
|
||||
} else if (pass == 3) {
|
||||
// 审核通过,往下走流程
|
||||
R<List<String>> assignments = localProcessService.getAssignments(null, null, Roles.GH_WYH_CWFZX, SecurityConstants.INNER);
|
||||
List<String> loginNameList = assignments.getData();
|
||||
|
||||
localProcessService.initCreateTask(
|
||||
processUniqueId,
|
||||
String.valueOf(ReimbursementState.SCHOOL_READY),
|
||||
"校工会主席审核",
|
||||
loginNameList,
|
||||
"/reimbursement/reimbursementSchoolAudit",
|
||||
null,
|
||||
SecurityConstants.INNER
|
||||
);
|
||||
}
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
+251
@@ -0,0 +1,251 @@
|
||||
package com.ruoyi.additional.controller.reimbursement;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
||||
import com.ruoyi.additional.api.constant.reimbursement.ReimbursementState;
|
||||
import com.ruoyi.additional.api.domain.fund.FundClub;
|
||||
import com.ruoyi.additional.api.domain.fund.FundSchool;
|
||||
import com.ruoyi.additional.api.domain.fund.FundUnion;
|
||||
import com.ruoyi.additional.api.domain.reimbursement.ReimbursementNew;
|
||||
import com.ruoyi.additional.constant.Ds;
|
||||
import com.ruoyi.additional.service.reimbursement.ReimbursementManageService;
|
||||
import com.ruoyi.additional.util.ProModuleDS;
|
||||
import com.ruoyi.common.core.constant.Roles;
|
||||
import com.ruoyi.common.core.constant.SecurityConstants;
|
||||
import com.ruoyi.common.core.domain.R;
|
||||
import com.ruoyi.common.core.utils.DateUtils;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.member.api.constant.MemberApplyState;
|
||||
import com.ruoyi.system.api.RemoteClubService;
|
||||
import com.ruoyi.system.api.RemoteSysLocalProcessService;
|
||||
import com.ruoyi.system.api.domain.club.Sys_club_user;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/11
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/reimbursement/apply")
|
||||
public class ReimbursementApplyController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private ReimbursementManageService reimbursementManageService;
|
||||
|
||||
@Autowired
|
||||
private RemoteClubService remoteClubService;
|
||||
|
||||
@Autowired
|
||||
private RemoteSysLocalProcessService localProcessService;
|
||||
|
||||
@PostMapping("doSave")
|
||||
@RequiresPermissions("additional:reimbursement:reimbursementApply")
|
||||
public AjaxResult doSave(@RequestBody ReimbursementNew reimbursementNew) {
|
||||
reimbursementNew.setUserId(SecurityUtils.getUserId());
|
||||
reimbursementNew.setUnitId(SecurityUtils.getDeptId());
|
||||
reimbursementNew.setUnionId(SecurityUtils.getUnionId());
|
||||
reimbursementNew.setState(ReimbursementState.NOT_SUBMIT);
|
||||
reimbursementNew.setApplyTime(DateUtils.getTime());
|
||||
dao.insertOrUpdate(reimbursementNew);
|
||||
//TODO:后面需要添加发送短信
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("doSubmit")
|
||||
@DSTransactional
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@RequiresPermissions("additional:reimbursement:reimbursementApply")
|
||||
public AjaxResult doSubmit(@RequestBody ReimbursementNew reimbursementNew) {
|
||||
if (reimbursementNew.getState() != null) {
|
||||
// 先完成当前节点的任务
|
||||
localProcessService.completeReturnTask("REIMBURSEMENT_APPLY@", SecurityConstants.INNER);
|
||||
}
|
||||
|
||||
reimbursementNew.setUserId(SecurityUtils.getUserId());
|
||||
reimbursementNew.setUnitId(SecurityUtils.getDeptId());
|
||||
reimbursementNew.setUnionId(SecurityUtils.getUnionId());
|
||||
reimbursementNew.setState(ReimbursementState.UNION_READY);
|
||||
if (StrUtil.isBlank(reimbursementNew.getApplyTime())) {
|
||||
reimbursementNew.setApplyTime(DateUtils.getTime());
|
||||
}
|
||||
dao.insertOrUpdate(reimbursementNew);
|
||||
|
||||
String processUniqueId = "REIMBURSEMENT_APPLY@" + reimbursementNew.getId();
|
||||
// 创建实例
|
||||
localProcessService.initCreateInstance(
|
||||
processUniqueId,
|
||||
reimbursementNew.getId(),
|
||||
"[工会报销申请]" + SecurityUtils.getNickName(),
|
||||
"/reimbursement/reimbursementMine",
|
||||
null,
|
||||
SecurityConstants.INNER
|
||||
);
|
||||
|
||||
// 获取负责人
|
||||
R<List<String>> assignments = localProcessService.getAssignments(SecurityUtils.getUnionId(),
|
||||
null,
|
||||
Roles.FGH_ADMIN,
|
||||
SecurityConstants.INNER);
|
||||
List<String> loginNameList = assignments.getData();
|
||||
|
||||
localProcessService.initCreateTask(
|
||||
processUniqueId,
|
||||
String.valueOf(ReimbursementState.UNION_READY),
|
||||
"分工会主席审核",
|
||||
loginNameList,
|
||||
"/reimbursement/reimbursementUnionAudit",
|
||||
null,
|
||||
SecurityConstants.INNER
|
||||
);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@GetMapping("findOne/{id}")
|
||||
@RequiresPermissions("additional:reimbursement:reimbursementApply")
|
||||
public AjaxResult findOne(@PathVariable String id) {
|
||||
ReimbursementNew reimbursementNew = dao.fetch(ReimbursementNew.class, id);
|
||||
return AjaxResult.success(reimbursementNew);
|
||||
}
|
||||
|
||||
@GetMapping("getBalance")
|
||||
@RequiresPermissions("additional:reimbursement:reimbursementApply")
|
||||
public AjaxResult getBalance() {
|
||||
FundUnion yjgh = dao.fetch(FundUnion.class, Cnd.where("unionId", "=", SecurityUtils.getUnionId())
|
||||
.and("year", "=", Calendar.getInstance().get(Calendar.YEAR)).and("state", "=", 1));
|
||||
if (yjgh != null) {
|
||||
double balance = yjgh.getTotalQuota() - yjgh.getUsedQuota();
|
||||
return AjaxResult.success(balance);
|
||||
}
|
||||
return AjaxResult.success(0f);
|
||||
}
|
||||
|
||||
@GetMapping("getSchoolBudget")
|
||||
@RequiresPermissions("additional:reimbursement:reimbursementApply")
|
||||
public AjaxResult getSchoolBudget() {
|
||||
FundSchool jfSchool = dao.fetch(FundSchool.class, Cnd.where("year", "=", Calendar.getInstance().get(Calendar.YEAR)).and("state", "=", 1));
|
||||
if (jfSchool != null) {
|
||||
double balance = jfSchool.getTotalQuota() - jfSchool.getUsedQuota();
|
||||
return AjaxResult.success(balance);
|
||||
}
|
||||
return AjaxResult.success(0f);
|
||||
}
|
||||
|
||||
@GetMapping("getClubBudget")
|
||||
@RequiresPermissions("additional:reimbursement:reimbursementApply")
|
||||
public AjaxResult getClubBudget(@RequestParam("clubId") String clubId) {
|
||||
|
||||
FundClub club = dao.fetch(FundClub.class, Cnd.where("year", "=", DateUtil.thisYear())
|
||||
.and("club_id", "=", clubId).and("state", "=", 1));
|
||||
if (Lang.isNotEmpty(club)) {
|
||||
double balance = club.getTotal_quota() - club.getUsed_quota();
|
||||
BigDecimal bigDecimal = new BigDecimal(balance);
|
||||
double value = bigDecimal.setScale(2, RoundingMode.HALF_UP).doubleValue();
|
||||
return AjaxResult.success(value);
|
||||
}
|
||||
|
||||
/*Sys_club_user clubUser = ProModuleDS.exec(Ds.SYSTEM, () -> {
|
||||
return dao.fetch(Sys_club_user.class, Cnd.where("userid", "=", SecurityUtils.getUserId()));
|
||||
});
|
||||
if (clubUser == null) {
|
||||
return AjaxResult.success(0f);
|
||||
}
|
||||
FundClub jf_club = dao.fetch(FundClub.class, Cnd.where("year", "=", Calendar.getInstance().get(Calendar.YEAR))
|
||||
.and("state", "=", 1).and("club_id", "=", clubUser.getClubid()));
|
||||
if (jf_club != null) {
|
||||
double balance = jf_club.getTotal_quota() - jf_club.getUsed_quota();
|
||||
return AjaxResult.success(balance);
|
||||
}*/
|
||||
return AjaxResult.success(0f);
|
||||
}
|
||||
|
||||
@GetMapping("querySqr")
|
||||
@RequiresPermissions("additional:reimbursement:reimbursementApply")
|
||||
public AjaxResult querySqr(String key) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
su.userId,
|
||||
su.userName,
|
||||
su.birthday,
|
||||
su.loginName,
|
||||
su.mobile,
|
||||
su.sex,
|
||||
su.deptName,
|
||||
su.unionName
|
||||
FROM
|
||||
`user` su
|
||||
$condition
|
||||
""");
|
||||
cnd.and("su.unionId", "=", SecurityUtils.getUnionId());
|
||||
if (Strings.isNotBlank(key)) {
|
||||
SqlExpressionGroup group = new SqlExpressionGroup();
|
||||
group.orLike("su.userName", key);
|
||||
group.orLike("su.loginName", key);
|
||||
cnd.and(group);
|
||||
}
|
||||
sql.setCondition(cnd);
|
||||
List<Object> list = reimbursementManageService.listPageMap(1, 10, sql).getList();
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
@GetMapping("getUserData")
|
||||
@RequiresPermissions("additional:reimbursement:reimbursementApply")
|
||||
public AjaxResult getUserData(String userId) {
|
||||
Sql sql = Sqls.create("""
|
||||
select
|
||||
*
|
||||
from
|
||||
`user`
|
||||
where userId = @userId
|
||||
""");
|
||||
sql.setParam("userId", userId);
|
||||
sql.setCallback(Sqls.callback.map());
|
||||
dao.execute(sql);
|
||||
NutMap nutMap = (NutMap) sql.getResult();
|
||||
return AjaxResult.success(nutMap);
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("validRole")
|
||||
@RequiresPermissions("additional:reimbursement:reimbursementApply")
|
||||
public AjaxResult validRole(String val) {
|
||||
if (AuthUtil.hasRole("admin")) {
|
||||
return AjaxResult.success();
|
||||
}
|
||||
if ("2".equals(val)) {
|
||||
if (!AuthUtil.hasAnyRoles("gh01,H04")) {
|
||||
return AjaxResult.error("分工会报销只能由分工会主席操作");
|
||||
}
|
||||
} else if ("3".equals(val)) {
|
||||
List<NutMap> data = remoteClubService.getClubsByRole().getData();
|
||||
if (Lang.isNotEmpty(data)) {
|
||||
return AjaxResult.error("协会/社团报销只能由会长操作");
|
||||
}
|
||||
}
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
+110
@@ -0,0 +1,110 @@
|
||||
package com.ruoyi.additional.controller.reimbursement;
|
||||
|
||||
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
||||
import com.ruoyi.additional.api.constant.reimbursement.ReimbursementState;
|
||||
import com.ruoyi.additional.api.domain.fund.FundUnion;
|
||||
import com.ruoyi.additional.api.domain.fund.FundUse;
|
||||
import com.ruoyi.additional.api.domain.reimbursement.ReimbursementNew;
|
||||
import com.ruoyi.additional.service.reimbursement.ReimbursementManageService;
|
||||
import com.ruoyi.common.core.constant.SecurityConstants;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.system.api.RemoteSysLocalProcessService;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.ioc.aop.Aop;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Calendar;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/11
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/reimbursement/mine")
|
||||
public class ReimbursementMineController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private ReimbursementManageService reimbursementManageService;
|
||||
@Autowired
|
||||
private RemoteSysLocalProcessService localProcessService;
|
||||
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("additional:reimbursement:reimbursementMine")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "year", required = false) Integer year,
|
||||
@RequestParam(value = "unitId", required = false) String unitId,
|
||||
@RequestParam(value = "unionId", required = false) String unionId,
|
||||
@RequestParam(value = "reiItemId", required = false) String reiItemId) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
rei.*,
|
||||
be.userName be_username,
|
||||
state.stateName,
|
||||
state.stateColor
|
||||
FROM
|
||||
`reimbursement_new` rei
|
||||
LEFT JOIN `user` be ON be.userId = rei.be_user
|
||||
LEFT JOIN audit_state state ON state.stateId = rei.state
|
||||
$condition
|
||||
""");
|
||||
cnd.andEX("YEAR ( rei.applyTime )", "=", year);
|
||||
cnd.andEX("rei.unitId", "=", unitId);
|
||||
cnd.andEX("rei.unionId", "=", unionId);
|
||||
if (!AuthUtil.hasAnyRoles("admin")) {
|
||||
cnd.and("rei.userId", "=", SecurityUtils.getUserId());
|
||||
}
|
||||
if (Strings.isNotBlank(reiItemId) && "ww".equals(reiItemId)) {
|
||||
cnd.and("rei.reimbursementItemId", "in", Lang.array("fyww", "zfww"));
|
||||
} else {
|
||||
cnd.andEX("rei.reimbursementItemId", "=", reiItemId);
|
||||
}
|
||||
cnd.desc("rei.applyTime");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = reimbursementManageService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@GetMapping("findOne/{id}")
|
||||
public AjaxResult findOne(@PathVariable String id) {
|
||||
|
||||
NutMap nutMap = reimbursementManageService.findOne(id);
|
||||
return AjaxResult.success(nutMap);
|
||||
}
|
||||
|
||||
@PostMapping("doDelete/{id}")
|
||||
@DSTransactional
|
||||
@RequiresPermissions("additional:reimbursement:reimbursementMine")
|
||||
public AjaxResult doDelete(@PathVariable String id) {
|
||||
ReimbursementNew reimbursementNew = dao.fetch(ReimbursementNew.class, id);
|
||||
if (reimbursementNew.getState().equals(ReimbursementState.SCHOOL_PASS)) {
|
||||
FundUnion yjgh = dao.fetch(FundUnion.class, Cnd.where("unionId", "=", SecurityUtils.getUnionId())
|
||||
.and("year", "=", Calendar.getInstance().get(Calendar.YEAR)).and("state", "=", 1));
|
||||
yjgh.setUsedQuota(yjgh.getUsedQuota() - reimbursementNew.getMoney());
|
||||
dao.updateIgnoreNull(yjgh);
|
||||
dao.clear(FundUse.class, Cnd.where("apply_id", "=", reimbursementNew.getId()));
|
||||
}
|
||||
dao.clear(ReimbursementNew.class, Cnd.where("id", "=", id));
|
||||
String processUniqueId = "REIMBURSEMENT_APPLY@" + reimbursementNew.getId();
|
||||
localProcessService.deleteProcessInstance(processUniqueId, SecurityConstants.INNER);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
+231
@@ -0,0 +1,231 @@
|
||||
package com.ruoyi.additional.controller.reimbursement;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
||||
import com.ruoyi.additional.api.constant.honor.HonorAuditState;
|
||||
import com.ruoyi.additional.api.constant.reimbursement.ReimbursementState;
|
||||
import com.ruoyi.additional.api.domain.Audit;
|
||||
import com.ruoyi.additional.api.domain.fund.*;
|
||||
import com.ruoyi.additional.api.domain.reimbursement.ReimbursementNew;
|
||||
import com.ruoyi.additional.constant.Ds;
|
||||
import com.ruoyi.additional.service.reimbursement.ReimbursementManageService;
|
||||
import com.ruoyi.additional.util.ProModuleDS;
|
||||
import com.ruoyi.common.core.constant.Roles;
|
||||
import com.ruoyi.common.core.constant.SecurityConstants;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.domain.R;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.utils.DateUtils;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.system.api.RemoteSysLocalProcessService;
|
||||
import com.ruoyi.system.api.domain.club.Sys_club_user;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.ioc.aop.Aop;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/11
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/reimbursement/schoolAudit")
|
||||
public class ReimbursementSchoolAuditController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private ReimbursementManageService reimbursementManageService;
|
||||
|
||||
@Autowired
|
||||
private RemoteSysLocalProcessService localProcessService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("additional:reimbursement:reimbursementSchoolAudit")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "year", required = false) Integer year,
|
||||
@RequestParam(value = "unitId", required = false) String unitId,
|
||||
@RequestParam(value = "unionId", required = false) String unionId,
|
||||
@RequestParam(value = "reiItemId", required = false) String reiItemId,
|
||||
@RequestParam(value = "isAudit", required = false) Boolean isAudit) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
|
||||
if (isAudit == null) {
|
||||
cnd.and("rei.state", ">=", 170);
|
||||
} else if (isAudit) {
|
||||
cnd.and("rei.state", ">", 170);
|
||||
} else {
|
||||
cnd.and("rei.state", "=", 170);
|
||||
}
|
||||
|
||||
if (Strings.isNotBlank(reiItemId) && "ww".equals(reiItemId)) {
|
||||
cnd.and("rei.reimbursementItemId", "in", Lang.array("fyww", "zfww"));
|
||||
} else {
|
||||
cnd.andEX("rei.reimbursementItemId", "=", reiItemId);
|
||||
}
|
||||
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchName()) && StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
cnd.and(Cnd.likeEX(pageForm.getSearchName(), pageForm.getSearchKeyword()));
|
||||
}
|
||||
|
||||
cnd.andEX("YEAR ( rei.applyTime )", "=", year);
|
||||
cnd.andEX("rei.unitId", "=", unitId);
|
||||
cnd.andEX("rei.unionId", "=", unionId);
|
||||
|
||||
cnd.desc("rei.applyTime");
|
||||
Pagination pagination = reimbursementManageService.pageData(cnd, pageForm);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@PostMapping("rollBack/{id}")
|
||||
@DSTransactional
|
||||
@RequiresPermissions("additional:reimbursement:reimbursementSchoolAudit")
|
||||
public AjaxResult rollBack(@PathVariable String id) {
|
||||
String processUniqueId = "REIMBURSEMENT_APPLY@" + id;
|
||||
ReimbursementNew reimbursementNew = dao.fetch(ReimbursementNew.class, id);
|
||||
|
||||
reimbursementManageService.update(Chain.make("state", ReimbursementState.SCHOOL_READY), Cnd.where("id", "=", id));
|
||||
|
||||
|
||||
if (reimbursementNew.getJf_source().equals("1")) {
|
||||
FundSchool jfSchool = dao.fetch(FundSchool.class, Cnd.where("year", "=", Calendar.getInstance().get(Calendar.YEAR)).and("state", "=", 1));
|
||||
jfSchool.setUsedQuota(jfSchool.getUsedQuota() - reimbursementNew.getMoney());
|
||||
dao.updateIgnoreNull(jfSchool);
|
||||
dao.clear(SchoolUse.class, Cnd.where("reimbursementId", "=", reimbursementNew.getId()));
|
||||
} else if (reimbursementNew.getJf_source().equals("2")) {
|
||||
FundUnion yjgh = dao.fetch(FundUnion.class, Cnd.where("unionId", "=", reimbursementNew.getUnionId()).and("year", "=", Calendar.getInstance().get(Calendar.YEAR)).and("state", "=", 1));
|
||||
yjgh.setUsedQuota(yjgh.getUsedQuota() - reimbursementNew.getMoney());
|
||||
dao.updateIgnoreNull(yjgh);
|
||||
dao.clear(FundUse.class, Cnd.where("apply_id", "=", reimbursementNew.getId()));
|
||||
} else if (reimbursementNew.getJf_source().equals("3")) {
|
||||
Sys_club_user clubUser = ProModuleDS.exec(Ds.SYSTEM, () -> {
|
||||
return dao.fetch(Sys_club_user.class, Cnd.where("userid", "=", reimbursementNew.getUserId()));
|
||||
});
|
||||
FundClub jf_club = dao.fetch(FundClub.class, Cnd.where("year", "=", Calendar.getInstance().get(Calendar.YEAR)).and("state", "=", 1).and("club_id", "=", clubUser.getClubid()));
|
||||
jf_club.setUsed_quota(jf_club.getUsed_quota() - reimbursementNew.getMoney());
|
||||
dao.updateIgnoreNull(jf_club);
|
||||
dao.clear(FundUse.class, Cnd.where("apply_id", "=", reimbursementNew.getId()));
|
||||
}
|
||||
|
||||
|
||||
localProcessService.revokeTask(processUniqueId, String.valueOf(ReimbursementState.SCHOOL_READY), SecurityConstants.INNER);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("doReview")
|
||||
@DSTransactional
|
||||
@RequiresPermissions("additional:reimbursement:reimbursementSchoolAudit")
|
||||
public AjaxResult doReview(@RequestBody Audit audit,
|
||||
@RequestParam(name = "id", required = false) String id,
|
||||
@RequestParam(name = "pass", required = false) Integer pass) {
|
||||
audit.setAuditor(SecurityUtils.getUserId());
|
||||
audit.setLoginName(SecurityUtils.getUsername());
|
||||
audit.setUserName(SecurityUtils.getNickName());
|
||||
audit.setAuditTime(new Date());
|
||||
audit = dao.insert(audit);
|
||||
|
||||
String taskNodeName = "";
|
||||
ReimbursementNew reimbursementNew = dao.fetch(ReimbursementNew.class, id);
|
||||
if (pass == 1) {
|
||||
taskNodeName = "校工会审核拒绝";
|
||||
reimbursementNew.setState(ReimbursementState.SCHOOL_REJECTED);
|
||||
} else if (pass == 2) {
|
||||
taskNodeName = "校工会审核退回修改";
|
||||
reimbursementNew.setState(ReimbursementState.SCHOOL_BACK_MODIFY);
|
||||
} else {
|
||||
taskNodeName = "校工会审核通过";
|
||||
reimbursementNew.setState(ReimbursementState.SCHOOL_PASS);
|
||||
}
|
||||
reimbursementNew.setSchoolAuditId(audit.getId());
|
||||
dao.updateIgnoreNull(reimbursementNew);
|
||||
|
||||
if (pass == 3) {
|
||||
if (reimbursementNew.getJf_source().equals("1")) {
|
||||
FundSchool jfSchool = dao.fetch(FundSchool.class, Cnd.where("year", "=", Calendar.getInstance().get(Calendar.YEAR)).and("state", "=", 1));
|
||||
SchoolUse schoolUse = new SchoolUse();
|
||||
schoolUse.setReimbursementId(reimbursementNew.getId());
|
||||
dao.insert(schoolUse);
|
||||
//往预算分配表减钱
|
||||
jfSchool.setUsedQuota(jfSchool.getUsedQuota() + reimbursementNew.getMoney());
|
||||
dao.updateIgnoreNull(jfSchool);
|
||||
} else if (reimbursementNew.getJf_source().equals("2")) {
|
||||
FundUnion yjgh = dao.fetch(FundUnion.class, Cnd.where("unionId", "=", reimbursementNew.getUnionId()).and("year", "=", Calendar.getInstance().get(Calendar.YEAR)).and("state", "=", 1));
|
||||
//往经费使用表中添加一条数据
|
||||
FundUse jf_use = new FundUse();
|
||||
jf_use.setAdjust_id(yjgh.getId());
|
||||
jf_use.setProject(reimbursementNew.getReimbursementItemName());
|
||||
jf_use.setAdjust_money(reimbursementNew.getMoney());
|
||||
jf_use.setAdjust_reason(reimbursementNew.getCause());
|
||||
jf_use.setAdjust_time(DateUtils.getTime());
|
||||
jf_use.setAdjust_person(SecurityUtils.getUserId());
|
||||
jf_use.setApply_id(reimbursementNew.getId());
|
||||
dao.insert(jf_use);
|
||||
//往预算分配表减钱
|
||||
yjgh.setUsedQuota(yjgh.getUsedQuota() + reimbursementNew.getMoney());
|
||||
dao.updateIgnoreNull(yjgh);
|
||||
|
||||
|
||||
} else if (reimbursementNew.getJf_source().equals("3")) {
|
||||
Sys_club_user clubUser = ProModuleDS.exec(Ds.SYSTEM, () -> {
|
||||
return dao.fetch(Sys_club_user.class, Cnd.where("userid", "=", reimbursementNew.getUserId()));
|
||||
});
|
||||
|
||||
FundClub jf_club = dao.fetch(FundClub.class, Cnd.where("year", "=", Calendar.getInstance().get(Calendar.YEAR)).and("state", "=", 1).and("club_id", "=", clubUser.getClubid()));
|
||||
//往经费使用表中添加一条数据
|
||||
FundUse jf_use = new FundUse();
|
||||
jf_use.setAdjust_id(jf_club.getId());
|
||||
jf_use.setProject(reimbursementNew.getReimbursementItemName());
|
||||
jf_use.setAdjust_money(reimbursementNew.getMoney());
|
||||
jf_use.setAdjust_reason(reimbursementNew.getCause());
|
||||
jf_use.setAdjust_time(DateUtils.getTime());
|
||||
jf_use.setAdjust_person(SecurityUtils.getUserId());
|
||||
jf_use.setApply_id(reimbursementNew.getId());
|
||||
dao.insert(jf_use);
|
||||
//往预算分配表减钱
|
||||
jf_club.setUsed_quota(jf_club.getUsed_quota() + reimbursementNew.getMoney());
|
||||
dao.updateIgnoreNull(jf_club);
|
||||
}
|
||||
}
|
||||
|
||||
String processUniqueId = "REIMBURSEMENT_APPLY@" + id;
|
||||
// 先完成当前节点的任务
|
||||
localProcessService.completeTask(processUniqueId, String.valueOf(ReimbursementState.SCHOOL_READY), taskNodeName, SecurityConstants.INNER);
|
||||
|
||||
if (pass != 2) {
|
||||
// 审核不通过,流程结束
|
||||
localProcessService.completeProcess(processUniqueId, true, SecurityConstants.INNER);
|
||||
}else if (pass==2){
|
||||
// 退回修改,流程继续
|
||||
Sql sql = Sqls.create("select loginName FROM `user` where userId=@userId").setParam("userId", reimbursementNew.getUserId());
|
||||
sql.setCallback(Sqls.callback.map());
|
||||
dao.execute(sql);
|
||||
NutMap userMap = (NutMap) sql.getResult();
|
||||
localProcessService.initCreateTask(
|
||||
processUniqueId,
|
||||
String.valueOf(ReimbursementState.SCHOOL_BACK_MODIFY),
|
||||
taskNodeName,
|
||||
List.of(userMap.getString("loginName")),
|
||||
"/reimbursement/reimbursementMine",
|
||||
null,
|
||||
SecurityConstants.INNER
|
||||
);
|
||||
}
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
+301
@@ -0,0 +1,301 @@
|
||||
package com.ruoyi.additional.controller.reimbursement;
|
||||
|
||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
|
||||
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.deepoove.poi.XWPFTemplate;
|
||||
import com.deepoove.poi.config.Configure;
|
||||
import com.ruoyi.additional.api.constant.reimbursement.ReimbursementState;
|
||||
import com.ruoyi.additional.constant.Ds;
|
||||
import com.ruoyi.additional.service.reimbursement.ReimbursementManageService;
|
||||
import com.ruoyi.additional.util.ProModuleDS;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.system.api.RemoteFileService;
|
||||
import com.ruoyi.system.api.domain.SysConfig;
|
||||
import org.apache.commons.fileupload.FileItem;
|
||||
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.springframework.web.multipart.commons.CommonsMultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/13
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/reimbursement/summary")
|
||||
public class ReimbursementSummaryController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private ReimbursementManageService reimbursementManageService;
|
||||
|
||||
@Autowired
|
||||
private RemoteFileService remoteFileService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("additional:reimbursement:reimbursementSummary")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(name = "unitId", required = false) String unitId,
|
||||
@RequestParam(name = "unionId", required = false) String unionId,
|
||||
@RequestParam(name = "reiItemId", required = false) String reiItemId,
|
||||
@RequestParam(name = "reimbursementDate[]", required = false) String[] reimbursementDate) {
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
rei.*,
|
||||
be.userName be_username,
|
||||
state.stateName,
|
||||
state.stateColor
|
||||
FROM
|
||||
`reimbursement_new` rei
|
||||
LEFT JOIN `user` be ON be.userId = rei.be_user
|
||||
LEFT JOIN audit_state state ON state.stateId = rei.state
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
|
||||
cnd.andEX("rei.state", "=", ReimbursementState.SCHOOL_PASS);
|
||||
cnd.andEX("rei.reimbursementItemId", "=", reiItemId);
|
||||
if (reimbursementDate != null && reimbursementDate.length > 0) {
|
||||
cnd.and("rei.applyTime", ">=", reimbursementDate[0]);
|
||||
cnd.and("rei.applyTime", "<=", reimbursementDate[1]);
|
||||
}
|
||||
cnd.andEX("rei.unitId", "=", unitId);
|
||||
cnd.andEX("rei.unionId", "=", unionId);
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchName()) && StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
cnd.and(Cnd.likeEX(pageForm.getSearchName(), pageForm.getSearchKeyword()));
|
||||
}
|
||||
if (Strings.isNotBlank(reiItemId) && "ww".equals(reiItemId)) {
|
||||
cnd.and("rei.reimbursementItemId", "in", Lang.array("fyww", "zfww"));
|
||||
} else {
|
||||
cnd.andEX("rei.reimbursementItemId", "=", reiItemId);
|
||||
}
|
||||
if (!AuthUtil.hasAnyRoles("admin, A06, gh12, wyh02, wyh03")) {
|
||||
SqlExpressionGroup group = new SqlExpressionGroup();
|
||||
if (AuthUtil.hasAnyRoles("gh01, H04")) {
|
||||
group.or("rei.unionId", "=", SecurityUtils.getUnionId());
|
||||
} else {
|
||||
group.or("rei.userId", "=", SecurityUtils.getUserId());
|
||||
}
|
||||
cnd.and(group);
|
||||
}
|
||||
cnd.desc("rei.applyTime");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = reimbursementManageService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@RequestMapping("doExportUserExcel")
|
||||
public void doExportUserExcel(@RequestBody PageForm pageForm,
|
||||
@RequestParam(name = "unitId", required = false) String unitId,
|
||||
@RequestParam(name = "unionId", required = false) String unionId,
|
||||
@RequestParam(name = "reiItemId", required = false) String reiItemId,
|
||||
@RequestParam(name = "reimbursementDate[]", required = false) String[] reimbursementDate,
|
||||
HttpServletResponse response) throws IOException {
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
rei.*,
|
||||
be.userName be_username,
|
||||
state.stateName,
|
||||
state.stateColor
|
||||
FROM
|
||||
`reimbursement_new` rei
|
||||
LEFT JOIN `user` be ON be.userId = rei.be_user
|
||||
LEFT JOIN audit_state state ON state.stateId = rei.state
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("rei.reimbursementItemId", "=", reiItemId);
|
||||
if (reimbursementDate != null && reimbursementDate.length > 0) {
|
||||
cnd.and("rei.applyTime", ">=", reimbursementDate[0]);
|
||||
cnd.and("rei.applyTime", "<=", reimbursementDate[1]);
|
||||
}
|
||||
cnd.andEX("rei.unitId", "=", unitId);
|
||||
cnd.andEX("rei.unionId", "=", unionId);
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchName()) && StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
cnd.and(Cnd.likeEX(pageForm.getSearchName(), pageForm.getSearchKeyword()));
|
||||
}
|
||||
cnd.and("rei.state","=",200);
|
||||
cnd.desc("rei.applyTime");
|
||||
sql.setCondition(cnd);
|
||||
List<NutMap> mapList = reimbursementManageService.listMap(sql);
|
||||
|
||||
mapList.forEach(v -> {
|
||||
v.setv("description", Strings.isNotBlank(v.getString("activity_name")) ? ("活动名称:" + v.getString("activity_name")) : ("被慰问人:" + v.getString("be_username")));
|
||||
});
|
||||
|
||||
List<ExcelExportEntity> exportEntities = new ArrayList<>();
|
||||
exportEntities.add(new ExcelExportEntity("经办人工号", "loginName", 20));
|
||||
exportEntities.add(new ExcelExportEntity("姓名", "userName", 20));
|
||||
exportEntities.add(new ExcelExportEntity("所属工会", "unionName", 20));
|
||||
exportEntities.add(new ExcelExportEntity("所属单位", "unitName", 20));
|
||||
exportEntities.add(new ExcelExportEntity("申请时间", "applyTime", 20));
|
||||
exportEntities.add(new ExcelExportEntity("报销项目", "reimbursementItemName", 20));
|
||||
exportEntities.add(new ExcelExportEntity("备注", "description", 20));
|
||||
exportEntities.add(new ExcelExportEntity("金额(元)", "money", 20));
|
||||
|
||||
String fileName = "报销汇总表.xlsx";
|
||||
String disposition = "attachment;filename=" + URLEncoder.encode(fileName, "utf-8");
|
||||
response.setCharacterEncoding("utf-8");
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", disposition);
|
||||
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, exportEntities, mapList);
|
||||
workbook.write(response.getOutputStream());
|
||||
}
|
||||
|
||||
@RequestMapping("printData")
|
||||
public void printData(String id, HttpServletResponse response) throws IOException {
|
||||
|
||||
response.setCharacterEncoding(StandardCharsets.UTF_8.name());
|
||||
response.setContentType(MediaType.APPLICATION_PDF_VALUE);
|
||||
|
||||
NutMap record = reimbursementManageService.findOne(id);
|
||||
|
||||
SysConfig configKey = ProModuleDS.exec(Ds.SYSTEM, () -> {
|
||||
return dao.fetch(SysConfig.class, Cnd.where("config_key", "=", "sys.schoolName"));
|
||||
});
|
||||
|
||||
record.setv("schoolName", configKey.getConfigValue());
|
||||
|
||||
record.setv("money_big", Convert.digitToChinese(record.getFloat("money")));
|
||||
|
||||
String wtAct = "□慰问 □活动 □建家 □日常 □劳务 □专家";
|
||||
if ("fyww".equals(record.getString("reimbursementItemId")) || "zfww".equals(record.getString("reimbursementItemId"))) {
|
||||
wtAct = wtAct.replace("□慰问", "√慰问");
|
||||
} else if ("fyhd".equals(record.getString("reimbursementItemId"))) {
|
||||
wtAct = wtAct.replace("□活动", "√活动");
|
||||
} else if ("fyjj".equals(record.getString("reimbursementItemId"))) {
|
||||
wtAct = wtAct.replace("□建家", "√建家");
|
||||
} else if ("fyrc".equals(record.getString("reimbursementItemId"))) {
|
||||
wtAct = wtAct.replace("□日常", "√日常");
|
||||
} else if ("zflw".equals(record.getString("reimbursementItemId"))) {
|
||||
wtAct = wtAct.replace("□劳务", "√劳务");
|
||||
} else if ("zfzj".equals(record.getString("reimbursementItemId"))) {
|
||||
wtAct = wtAct.replace("□专家", "√专家");
|
||||
}
|
||||
|
||||
record.setv("bxxm", wtAct);
|
||||
|
||||
InputStream inputStream;
|
||||
if ("zf".equals(record.getString("reimbursementItemSort"))) {
|
||||
inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("templates/reimbursement/reimbursementMoney.docx");
|
||||
} else {
|
||||
inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("templates/reimbursement/reimbursement.docx");
|
||||
}
|
||||
|
||||
assert inputStream != null;
|
||||
|
||||
FileItem item = new DiskFileItemFactory().createItem("file"
|
||||
, MediaType.MULTIPART_FORM_DATA_VALUE
|
||||
, true
|
||||
, System.currentTimeMillis() + ".docx");
|
||||
|
||||
XWPFTemplate.compile(inputStream).render(record).write(item.getOutputStream());
|
||||
|
||||
MultipartFile commonsMultipartFile = new CommonsMultipartFile(item);
|
||||
byte[] bytes = remoteFileService.convertToPdfByInputStream(commonsMultipartFile);
|
||||
|
||||
InputStream pdfStream = new ByteArrayInputStream(bytes);
|
||||
IOUtils.copy(pdfStream, response.getOutputStream());
|
||||
|
||||
pdfStream.close();
|
||||
inputStream.close();
|
||||
item.delete();
|
||||
}
|
||||
|
||||
@RequestMapping("exportData")
|
||||
public void exportData(String id, HttpServletResponse response) throws IOException {
|
||||
|
||||
response.setCharacterEncoding(StandardCharsets.UTF_8.name());
|
||||
response.setContentType(MediaType.APPLICATION_PDF_VALUE);
|
||||
|
||||
NutMap record = reimbursementManageService.findOne(id);
|
||||
|
||||
SysConfig configKey = ProModuleDS.exec(Ds.SYSTEM, () -> {
|
||||
return dao.fetch(SysConfig.class, Cnd.where("config_key", "=", "sys.schoolName"));
|
||||
});
|
||||
|
||||
record.setv("schoolName", configKey.getConfigValue());
|
||||
|
||||
record.setv("money_big", Convert.digitToChinese(record.getFloat("money")));
|
||||
|
||||
String wtAct = "□慰问 □活动 □建家 □日常 □劳务 □专家";
|
||||
if ("fyww".equals(record.getString("reimbursementItemId")) || "zfww".equals(record.getString("reimbursementItemId"))) {
|
||||
wtAct = wtAct.replace("□慰问", "√慰问");
|
||||
} else if ("fyhd".equals(record.getString("reimbursementItemId"))) {
|
||||
wtAct = wtAct.replace("□活动", "√活动");
|
||||
} else if ("fyjj".equals(record.getString("reimbursementItemId"))) {
|
||||
wtAct = wtAct.replace("□建家", "√建家");
|
||||
} else if ("fyrc".equals(record.getString("reimbursementItemId"))) {
|
||||
wtAct = wtAct.replace("□日常", "√日常");
|
||||
} else if ("zflw".equals(record.getString("reimbursementItemId"))) {
|
||||
wtAct = wtAct.replace("□劳务", "√劳务");
|
||||
} else if ("zfzj".equals(record.getString("reimbursementItemId"))) {
|
||||
wtAct = wtAct.replace("□专家", "√专家");
|
||||
}
|
||||
|
||||
record.setv("bxxm", wtAct);
|
||||
|
||||
InputStream inputStream;
|
||||
if ("zf".equals(record.getString("reimbursementItemSort"))) {
|
||||
inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("templates/reimbursement/reimbursementMoney.docx");
|
||||
} else {
|
||||
inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("templates/reimbursement/reimbursement.docx");
|
||||
}
|
||||
|
||||
String fileName = "";
|
||||
if ("zf".equals(record.getString("reimbursementItemSort"))) {
|
||||
fileName = configKey.getConfigValue() + "支付凭证.docx";
|
||||
} else {
|
||||
fileName = configKey.getConfigValue() + "工会凭证报销单.docx";
|
||||
}
|
||||
|
||||
String disposition = "attachment;filename=" + URLEncoder.encode(fileName, "utf-8");
|
||||
response.setCharacterEncoding("utf-8");
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", disposition);
|
||||
|
||||
Configure config = Configure.builder().build();
|
||||
|
||||
assert inputStream != null;
|
||||
XWPFTemplate.compile(inputStream, config).render(record, response.getOutputStream());
|
||||
inputStream.close();
|
||||
}
|
||||
}
|
||||
+170
@@ -0,0 +1,170 @@
|
||||
package com.ruoyi.additional.controller.reimbursement;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
||||
import com.ruoyi.additional.api.constant.reimbursement.ReimbursementState;
|
||||
import com.ruoyi.additional.api.domain.Audit;
|
||||
import com.ruoyi.additional.api.domain.reimbursement.ReimbursementNew;
|
||||
import com.ruoyi.additional.service.reimbursement.ReimbursementManageService;
|
||||
import com.ruoyi.common.core.constant.Roles;
|
||||
import com.ruoyi.common.core.constant.SecurityConstants;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.domain.R;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.member.api.constant.MemberApplyState;
|
||||
import com.ruoyi.system.api.RemoteSysLocalProcessService;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.ioc.aop.Aop;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/11
|
||||
* @Description
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/reimbursement/unionAudit")
|
||||
public class ReimbursementUnionAuditController {
|
||||
|
||||
@Autowired
|
||||
private Dao dao;
|
||||
|
||||
@Autowired
|
||||
private ReimbursementManageService reimbursementManageService;
|
||||
|
||||
|
||||
@Autowired
|
||||
private RemoteSysLocalProcessService localProcessService;
|
||||
|
||||
@PostMapping("pageData")
|
||||
@RequiresPermissions("additional:reimbursement:reimbursementUnionAudit")
|
||||
public AjaxResult pageData(@RequestBody PageForm pageForm,
|
||||
@RequestParam(value = "year", required = false) Integer year,
|
||||
@RequestParam(value = "unitId", required = false) String unitId,
|
||||
@RequestParam(value = "unionId", required = false) String unionId,
|
||||
@RequestParam(value = "reiItemId", required = false) String reiItemId,
|
||||
@RequestParam(value = "isAudit", required = false) Boolean isAudit) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (!AuthUtil.hasRole("admin")) {
|
||||
cnd.and("rei.unionId", "=", SecurityUtils.getUnionId());
|
||||
}
|
||||
if (isAudit == null) {
|
||||
cnd.and("rei.state", ">=", 110);
|
||||
} else if (isAudit) {
|
||||
cnd.and("rei.state", ">", 110);
|
||||
} else {
|
||||
cnd.and("rei.state", "=", 110);
|
||||
}
|
||||
|
||||
if (Strings.isNotBlank(reiItemId) && "ww".equals(reiItemId)) {
|
||||
cnd.and("rei.reimbursementItemId", "in", Lang.array("fyww", "zfww"));
|
||||
} else {
|
||||
cnd.andEX("rei.reimbursementItemId", "=", reiItemId);
|
||||
}
|
||||
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchName()) && StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
cnd.and(Cnd.likeEX(pageForm.getSearchName(), pageForm.getSearchKeyword()));
|
||||
}
|
||||
|
||||
cnd.andEX("YEAR ( rei.applyTime )", "=", year);
|
||||
cnd.andEX("rei.unitId", "=", unitId);
|
||||
cnd.andEX("rei.unionId", "=", unionId);
|
||||
|
||||
cnd.desc("rei.applyTime");
|
||||
Pagination pagination = reimbursementManageService.pageData(cnd, pageForm);
|
||||
return AjaxResult.success(pagination);
|
||||
}
|
||||
|
||||
@PostMapping("rollBack/{id}")
|
||||
@DSTransactional
|
||||
@RequiresPermissions("additional:reimbursement:reimbursementUnionAudit")
|
||||
public AjaxResult rollBack(@PathVariable String id) {
|
||||
String processUniqueId = "REIMBURSEMENT_APPLY@" + id;
|
||||
reimbursementManageService.update(Chain.make("state", ReimbursementState.UNION_READY), Cnd.where("id", "=", id));
|
||||
localProcessService.deleteTask(processUniqueId, String.valueOf(ReimbursementState.UNION_READY), SecurityConstants.INNER);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("doReview")
|
||||
@DSTransactional
|
||||
@RequiresPermissions("additional:reimbursement:reimbursementUnionAudit")
|
||||
public AjaxResult doReview(@RequestBody Audit audit,
|
||||
@RequestParam(name = "id", required = false) String id,
|
||||
@RequestParam(name = "pass", required = false) Integer pass) {
|
||||
audit.setAuditor(SecurityUtils.getUserId());
|
||||
audit.setLoginName(SecurityUtils.getUsername());
|
||||
audit.setUserName(SecurityUtils.getNickName());
|
||||
audit.setAuditTime(new Date());
|
||||
audit = dao.insert(audit);
|
||||
String taskNodeName = "";
|
||||
ReimbursementNew reimbursementNew = dao.fetch(ReimbursementNew.class, id);
|
||||
if (pass == 1) {
|
||||
taskNodeName = "分工会主席审核拒绝";
|
||||
reimbursementNew.setState(ReimbursementState.UNION_REJECTED);
|
||||
} else if (pass == 2) {
|
||||
taskNodeName = "分工会主席审核退回修改";
|
||||
reimbursementNew.setState(ReimbursementState.UNION_BACK_MODIFY);
|
||||
} else {
|
||||
taskNodeName = "待校工会会计审核";
|
||||
reimbursementNew.setState(ReimbursementState.ACCOUNTANT_READY);
|
||||
}
|
||||
reimbursementNew.setUnionAuditId(audit.getId());
|
||||
dao.updateIgnoreNull(reimbursementNew);
|
||||
|
||||
String processUniqueId = "REIMBURSEMENT_APPLY@" + id;
|
||||
// 先完成当前节点的任务
|
||||
localProcessService.completeTask(processUniqueId, String.valueOf(ReimbursementState.UNION_READY), taskNodeName, SecurityConstants.INNER);
|
||||
|
||||
if (pass == 1) {
|
||||
// 审核不通过,流程结束
|
||||
localProcessService.completeProcess(processUniqueId, true, SecurityConstants.INNER);
|
||||
}else if(pass==2){
|
||||
// 退回修改,流程继续
|
||||
Sql sql = Sqls.create("select loginName FROM `user` where userId=@userId").setParam("userId", reimbursementNew.getUserId());
|
||||
sql.setCallback(Sqls.callback.map());
|
||||
dao.execute(sql);
|
||||
NutMap userMap = (NutMap) sql.getResult();
|
||||
localProcessService.initCreateTask(
|
||||
processUniqueId,
|
||||
String.valueOf(ReimbursementState.UNION_BACK_MODIFY),
|
||||
taskNodeName,
|
||||
List.of(userMap.getString("loginName")),
|
||||
"/reimbursement/reimbursementMine",
|
||||
null,
|
||||
SecurityConstants.INNER
|
||||
);
|
||||
} else if (pass == 3) {
|
||||
// 审核通过,往下走流程
|
||||
R<List<String>> assignments = localProcessService.getAssignments(null, null, Roles.SCHOOL_ACCOUNTING, SecurityConstants.INNER);
|
||||
List<String> loginNameList = assignments.getData();
|
||||
|
||||
localProcessService.initCreateTask(
|
||||
processUniqueId,
|
||||
String.valueOf(ReimbursementState.ACCOUNTANT_READY),
|
||||
"校工会会计审核",
|
||||
loginNameList,
|
||||
"/reimbursement/reimbursementAccountantAudit",
|
||||
null,
|
||||
SecurityConstants.INNER
|
||||
);
|
||||
}
|
||||
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
+115
@@ -0,0 +1,115 @@
|
||||
package com.ruoyi.additional.handle.meeting;
|
||||
|
||||
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
|
||||
import com.ruoyi.additional.api.customEnum.CustomAuditTypeEnum;
|
||||
import com.ruoyi.additional.constant.Ds;
|
||||
import com.ruoyi.additional.util.ProModuleDS;
|
||||
import com.ruoyi.common.core.constant.Roles;
|
||||
import com.ruoyi.common.core.utils.SpringUtils;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.system.api.domain.SysUser;
|
||||
import com.ruoyi.system.api.domain.SysUserRole;
|
||||
import com.ruoyi.system.api.domain.club.Sys_club_user;
|
||||
import lombok.Getter;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.dao.util.Daos;
|
||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||
import org.nutz.lang.Lang;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/3/30
|
||||
* @Description
|
||||
*/
|
||||
@Getter
|
||||
public enum CustomAuditTypeHandle {
|
||||
|
||||
DW(CustomAuditTypeEnum.DW.getValue()) {
|
||||
@Override
|
||||
public SqlExpressionGroup next(SqlExpressionGroup sqlExpressionGroup) {
|
||||
DynamicDataSourceContextHolder.push("system");
|
||||
SysUser user = dao.fetch(SysUser.class, Cnd.where("userId", "=", SecurityUtils.getUserId()));
|
||||
sqlExpressionGroup.or("u.deptId", "in", user.getDeptId());
|
||||
DynamicDataSourceContextHolder.clear();
|
||||
return sqlExpressionGroup;
|
||||
}
|
||||
},
|
||||
FGH(CustomAuditTypeEnum.FGH.getValue()) {
|
||||
@Override
|
||||
public SqlExpressionGroup next(SqlExpressionGroup sqlExpressionGroup) {
|
||||
//查询当前登录用户管理的工会
|
||||
DynamicDataSourceContextHolder.push("system");
|
||||
List<SysUserRole> userRoles = dao.query(SysUserRole.class, Cnd.where("userId", "=", SecurityUtils.getUserId())
|
||||
.and("roleId", "in", Lang.array(Roles.FGH_ADMIN)));
|
||||
List<String> unionIds = userRoles.stream().map(SysUserRole::getUnionId).collect(Collectors.toList());
|
||||
if (Lang.isNotEmpty(unionIds)) {
|
||||
sqlExpressionGroup.or("u.unionid", "in", unionIds);
|
||||
}
|
||||
DynamicDataSourceContextHolder.clear();
|
||||
return sqlExpressionGroup;
|
||||
}
|
||||
},
|
||||
CLUB(CustomAuditTypeEnum.CLUB.getValue()) {
|
||||
@Override
|
||||
public SqlExpressionGroup next(SqlExpressionGroup sqlExpressionGroup) {
|
||||
//查询当前登录用户管理的协会
|
||||
DynamicDataSourceContextHolder.push("system");
|
||||
List<SysUserRole> userRoles = dao.query(SysUserRole.class, Cnd.where("userId", "=", SecurityUtils.getUserId())
|
||||
.and("roleId", "in", Lang.array(Roles.CLUB_PRESIDENT)));
|
||||
List<String> clubIds = userRoles.stream().map(SysUserRole::getStid).collect(Collectors.toList());
|
||||
List<Sys_club_user> clubUsers = dao.query(Sys_club_user.class, Cnd.where("stid", "in", clubIds));
|
||||
if (Lang.isNotEmpty(clubUsers)) {
|
||||
sqlExpressionGroup.or("u.userId", "in", clubUsers.stream().map(Sys_club_user::getUserid).collect(Collectors.toList()));
|
||||
}
|
||||
DynamicDataSourceContextHolder.clear();
|
||||
return sqlExpressionGroup;
|
||||
}
|
||||
},
|
||||
TZ(CustomAuditTypeEnum.TZ.getValue()) {
|
||||
@Override
|
||||
public SqlExpressionGroup next(SqlExpressionGroup sqlExpressionGroup) {
|
||||
DynamicDataSourceContextHolder.push("jdh");
|
||||
Sql sql = Sqls.fetchString("""
|
||||
SELECT
|
||||
dbtid
|
||||
FROM
|
||||
jdh_db
|
||||
WHERE
|
||||
jdhid = ( SELECT id FROM jdh_jdhxx WHERE jdhkqzt = 1 ORDER BY jdhkqsj DESC LIMIT 1 )
|
||||
AND dbid = @userId
|
||||
""");
|
||||
sql.setParam("userId", SecurityUtils.getUserId());
|
||||
dao.execute(sql);
|
||||
String dbtId = sql.getString();
|
||||
|
||||
Sql dbSql = Sqls.queryString("""
|
||||
select DISTINCT dbid from jdh_db where dbtid = @dbtid
|
||||
""");
|
||||
dbSql.setParam("dbtid", dbtId);
|
||||
dao.execute(dbSql);
|
||||
List<String> list = dbSql.getList(String.class);
|
||||
|
||||
if (Lang.isNotEmpty(list)) {
|
||||
sqlExpressionGroup.or("u.userId", "in", list);
|
||||
}
|
||||
DynamicDataSourceContextHolder.clear();
|
||||
return sqlExpressionGroup;
|
||||
}
|
||||
};
|
||||
|
||||
private final String name;
|
||||
|
||||
public Dao dao = SpringUtils.getBean(Dao.class);
|
||||
|
||||
CustomAuditTypeHandle(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public abstract SqlExpressionGroup next(SqlExpressionGroup sqlExpressionGroup);
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
package com.ruoyi.additional.service.aidFundMember;
|
||||
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
|
||||
public interface AidFundMemberApplyService extends BaseService {
|
||||
|
||||
NutMap applyInfo();
|
||||
|
||||
void signOut();
|
||||
|
||||
void doApply();
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
package com.ruoyi.additional.service.aidFundMember;
|
||||
|
||||
import com.ruoyi.additional.constant.aidFundMember.AidFundMemberPageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
|
||||
public interface AidFundMemberBatchJoinService extends BaseService {
|
||||
|
||||
/**
|
||||
* 页面数据
|
||||
*
|
||||
* @param pageForm 页面形式
|
||||
* @return {@link Pagination}
|
||||
*/
|
||||
Pagination pageData(AidFundMemberPageForm pageForm);
|
||||
|
||||
/**
|
||||
* 加入基金会
|
||||
*
|
||||
* @param userIds 用户id
|
||||
*/
|
||||
void batchSettings(String[] userIds);
|
||||
|
||||
}
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
package com.ruoyi.additional.service.aidFundMember;
|
||||
|
||||
import com.ruoyi.additional.api.domain.Audit;
|
||||
import com.ruoyi.additional.constant.aidFundMember.AidFundMemberPageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
|
||||
public interface AidFundMemberBranchUnionAuditService extends BaseService {
|
||||
|
||||
/**
|
||||
* 页面数据
|
||||
*
|
||||
* @param pageForm 页面形式
|
||||
* @return {@link Pagination}
|
||||
*/
|
||||
Pagination pageData(AidFundMemberPageForm pageForm);
|
||||
|
||||
/**
|
||||
* 做提交
|
||||
*
|
||||
* @param audit 审计
|
||||
* @param id id
|
||||
*/
|
||||
void doSubmit(Audit audit, String id);
|
||||
|
||||
/**
|
||||
* 撤销
|
||||
*
|
||||
* @param id id
|
||||
*/
|
||||
void doRevoke(String id);
|
||||
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
package com.ruoyi.additional.service.aidFundMember;
|
||||
|
||||
import com.ruoyi.additional.api.domain.aidFundMember.AidFundMemberAuditRecord;
|
||||
import com.ruoyi.additional.constant.aidFundMember.AidFundMemberPageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
|
||||
public interface AidFundMemberChangeRecordService extends BaseService<AidFundMemberAuditRecord> {
|
||||
|
||||
/**
|
||||
* 页面数据
|
||||
*
|
||||
* @param pageForm 页面形式
|
||||
* @return {@link Pagination}
|
||||
*/
|
||||
Pagination pageData(AidFundMemberPageForm pageForm);
|
||||
|
||||
void doDelete(String id);
|
||||
}
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
package com.ruoyi.additional.service.aidFundMember;
|
||||
|
||||
import com.ruoyi.additional.api.domain.Audit;
|
||||
import com.ruoyi.additional.constant.aidFundMember.AidFundMemberPageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface AidFundMemberFoundationAuditService extends BaseService {
|
||||
|
||||
/**
|
||||
* 页面数据
|
||||
*
|
||||
* @param pageForm 页面形式
|
||||
* @return {@link Pagination}
|
||||
*/
|
||||
Pagination pageData(AidFundMemberPageForm pageForm);
|
||||
|
||||
/**
|
||||
* 做提交
|
||||
*
|
||||
* @param audit 审计
|
||||
* @param ids ids
|
||||
*/
|
||||
void doSubmit(Audit audit, List<String> ids);
|
||||
|
||||
/**
|
||||
* 撤销
|
||||
*
|
||||
* @param id id
|
||||
*/
|
||||
void doRevoke(String id);
|
||||
|
||||
|
||||
/**
|
||||
* @param pageForm
|
||||
* @return {@link List}<{@link NutMap}>
|
||||
*/
|
||||
List<NutMap> exportAuditUser(AidFundMemberPageForm pageForm);
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package com.ruoyi.additional.service.aidFundMember;
|
||||
|
||||
import com.ruoyi.additional.api.domain.aidFundMember.AidFundMemberHistory;
|
||||
import com.ruoyi.additional.constant.aidFundMember.AidFundMemberPageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
|
||||
public interface AidFundMemberHistoryService extends BaseService<AidFundMemberHistory> {
|
||||
|
||||
Pagination pageData(AidFundMemberPageForm pageForm);
|
||||
|
||||
void backupMember(int year);
|
||||
|
||||
void doDelete(String id);
|
||||
}
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
package com.ruoyi.additional.service.aidFundMember;
|
||||
|
||||
import com.ruoyi.additional.api.constant.aidFundMember.AidFundMemberPayXlsMode;
|
||||
import com.ruoyi.additional.api.domain.aidFundMember.AidFundMemberPay;
|
||||
import com.ruoyi.additional.constant.aidFundMember.AidFundMemberPageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface AidFundMemberPayService extends BaseService<AidFundMemberPay> {
|
||||
|
||||
/**
|
||||
* 生成来年会员缴费名单
|
||||
*/
|
||||
void createMemberPayList();
|
||||
|
||||
/**
|
||||
* 页面数据
|
||||
*
|
||||
* @param pageForm 页面形式
|
||||
* @return {@link Pagination}
|
||||
*/
|
||||
Pagination pageData(AidFundMemberPageForm pageForm);
|
||||
|
||||
/**
|
||||
* 导出名单
|
||||
*
|
||||
* @param year 一年
|
||||
* @param userState 用户状态
|
||||
* @return {@link List}<{@link NutMap}>
|
||||
*/
|
||||
List<NutMap> exportPaysByYear(int year, List<String> userStates);
|
||||
|
||||
/**
|
||||
* 情况缴费记录
|
||||
*
|
||||
* @param year 一年
|
||||
*/
|
||||
void clearPays(int year);
|
||||
|
||||
/**
|
||||
* 导入缴费记录
|
||||
*
|
||||
* @param list 列表
|
||||
*/
|
||||
String importPayRecords(List<AidFundMemberPayXlsMode> list);
|
||||
}
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
package com.ruoyi.additional.service.aidFundMember;
|
||||
|
||||
import com.ruoyi.additional.api.domain.Audit;
|
||||
import com.ruoyi.additional.constant.aidFundMember.AidFundMemberPageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
|
||||
public interface AidFundMemberRetireAuditService extends BaseService {
|
||||
|
||||
/**
|
||||
* 页面数据
|
||||
*
|
||||
* @param pageForm 页面形式
|
||||
* @return {@link Pagination}
|
||||
*/
|
||||
Pagination pageData(AidFundMemberPageForm pageForm);
|
||||
|
||||
/**
|
||||
* 做提交
|
||||
*
|
||||
* @param audit 审计
|
||||
* @param id id
|
||||
*/
|
||||
void doSubmit(Audit audit, String id);
|
||||
|
||||
/**
|
||||
* 撤销
|
||||
*
|
||||
* @param id id
|
||||
*/
|
||||
void doRevoke(String id);
|
||||
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
package com.ruoyi.additional.service.aidFundMember;
|
||||
|
||||
import com.ruoyi.additional.constant.aidFundMember.AidFundMemberPageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface AidFundMemberStandingBookManageService extends BaseService {
|
||||
|
||||
Pagination pageData(AidFundMemberPageForm pageForm);
|
||||
|
||||
List<NutMap> exportNewMember();
|
||||
|
||||
void doChange(String userId, String changeType, String currentUnitId, String currentThreeUnitId);
|
||||
|
||||
void doDelete(String userId);
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
package com.ruoyi.additional.service.evaluate;
|
||||
|
||||
import com.ruoyi.additional.api.domain.evaluate.EvaluateApply;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import org.nutz.dao.Cnd;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/6
|
||||
* @Description
|
||||
*/
|
||||
public interface EvaluateApplyService extends BaseService<EvaluateApply> {
|
||||
|
||||
Pagination pageData(PageForm pageForm, Cnd cnd);
|
||||
|
||||
Object findOne(String id);
|
||||
|
||||
Object doDelete(String id);
|
||||
|
||||
AjaxResult verifyApply(String evaluateId);
|
||||
}
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
package com.ruoyi.additional.service.evaluate;
|
||||
|
||||
import com.ruoyi.additional.api.domain.evaluate.Evaluate;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
import org.nutz.dao.Cnd;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/6
|
||||
* @Description
|
||||
*/
|
||||
public interface EvaluateManageService extends BaseService<Evaluate> {
|
||||
|
||||
void add(Evaluate evaluate);
|
||||
|
||||
void edit(Evaluate evaluate);
|
||||
|
||||
Pagination pageData(PageForm pageForm, Cnd cnd);
|
||||
|
||||
Object findOne(String id);
|
||||
|
||||
Object getEvaluateList(String userId);
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
package com.ruoyi.additional.service.fund;
|
||||
|
||||
import com.ruoyi.additional.api.domain.fund.FundClub;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/10
|
||||
* @Description
|
||||
*/
|
||||
public interface ClubBudgetManageService extends BaseService<FundClub> {
|
||||
|
||||
AjaxResult issue();
|
||||
AjaxResult doAdd(FundClub club);
|
||||
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
package com.ruoyi.additional.service.fund;
|
||||
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/9
|
||||
* @Description
|
||||
*/
|
||||
public interface SchoolBudgetListService extends BaseService {
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package com.ruoyi.additional.service.fund;
|
||||
|
||||
import com.ruoyi.additional.api.domain.fund.FundUnion;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/9
|
||||
* @Description
|
||||
*/
|
||||
public interface UnionBudgetManageService extends BaseService<FundUnion> {
|
||||
|
||||
AjaxResult issue();
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
package com.ruoyi.additional.service.fund;
|
||||
|
||||
import com.ruoyi.additional.api.domain.fund.CostSet;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/9
|
||||
* @Description
|
||||
*/
|
||||
public interface YearCostSetService extends BaseService<CostSet> {
|
||||
|
||||
AjaxResult set(CostSet costsSet);
|
||||
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
package com.ruoyi.additional.service.honor;
|
||||
|
||||
import com.ruoyi.additional.api.domain.honor.HonorBasicSettings;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/3
|
||||
* @Description
|
||||
*/
|
||||
public interface HonorBasicSettingsService extends BaseService<HonorBasicSettings> {
|
||||
}
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
package com.ruoyi.additional.service.honor;
|
||||
|
||||
import com.ruoyi.additional.api.domain.honor.Honor;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/3
|
||||
* @Description
|
||||
*/
|
||||
public interface HonorBatchRegisterService extends BaseService {
|
||||
|
||||
/**
|
||||
* 检验数据合法性
|
||||
*
|
||||
* @param list
|
||||
* @return
|
||||
*/
|
||||
List<Honor> checkData(List<Honor> list, String lx);
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
package com.ruoyi.additional.service.honor;
|
||||
|
||||
import com.ruoyi.additional.api.domain.honor.Honor;
|
||||
import com.ruoyi.common.core.service.BaseService;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/3
|
||||
* @Description
|
||||
*/
|
||||
public interface HonorManageService extends BaseService<Honor> {
|
||||
}
|
||||
+171
@@ -0,0 +1,171 @@
|
||||
package com.ruoyi.additional.service.impl.aidFundMember;
|
||||
|
||||
import com.ruoyi.additional.api.constant.aidFundMember.AidFundMemberAuditState;
|
||||
import com.ruoyi.additional.api.constant.aidFundMember.AidFundMemberMode;
|
||||
import com.ruoyi.additional.api.constant.aidFundMember.AidFundMemberSource;
|
||||
import com.ruoyi.additional.api.domain.aidFundMember.AidFundMemberAuditRecord;
|
||||
import com.ruoyi.additional.service.aidFundMember.AidFundMemberApplyService;
|
||||
import com.ruoyi.common.core.service.BaseServiceImpl;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.system.api.RemoteConfigService;
|
||||
import com.ruoyi.system.api.domain.SysDept;
|
||||
import com.ruoyi.system.api.domain.SysUnion;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.dao.util.Daos;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.Optional;
|
||||
|
||||
@Service
|
||||
public class AidFundMemberApplyServiceImpl extends BaseServiceImpl implements AidFundMemberApplyService {
|
||||
|
||||
public AidFundMemberApplyServiceImpl(Dao dao) {
|
||||
super(dao);
|
||||
}
|
||||
|
||||
|
||||
@Autowired
|
||||
private RemoteConfigService remoteConfigService;
|
||||
|
||||
@Override
|
||||
public NutMap applyInfo() {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
userId,
|
||||
userName,
|
||||
loginName,
|
||||
sex,
|
||||
deptName,
|
||||
mobile,
|
||||
idcard,
|
||||
schoolTime,
|
||||
aidFundMember
|
||||
FROM
|
||||
`user`
|
||||
WHERE userId = @userId
|
||||
""");
|
||||
sql.setParam("userId", SecurityUtils.getUserId());
|
||||
NutMap applyInfo = fetch(sql);
|
||||
|
||||
AidFundMemberAuditRecord record = dao().fetch(AidFundMemberAuditRecord.class, Cnd.where("userId", "=", SecurityUtils.getUserId()).desc("applyTime"));
|
||||
dao().fetchLinks(record, null);
|
||||
if (Lang.isNotEmpty(record)) {
|
||||
applyInfo.setv("applyTime", record.getApplyTime());
|
||||
if (Lang.isNotEmpty(record.getAuditState())) {
|
||||
applyInfo.setv("stateName", record.getAuditState().getStateName());
|
||||
}
|
||||
|
||||
if (AidFundMemberAuditState.AUDIT_PASS_STATES.contains(record.getStateId())) {
|
||||
applyInfo.setv("status", "PASS");
|
||||
} else if (AidFundMemberAuditState.AUDIT_REJECTED_STATES.contains(record.getStateId())) {
|
||||
applyInfo.setv("status", "REJECTED");
|
||||
} else if (AidFundMemberAuditState.AUDIT_BACK_MODIFY_STATES.contains(record.getStateId())) {
|
||||
applyInfo.setv("status", "BACK_MODIFY");
|
||||
} else {
|
||||
applyInfo.setv("status", "AUDIT_ING");
|
||||
}
|
||||
} else {
|
||||
applyInfo.setv("status", "NEVER_APPLY");
|
||||
}
|
||||
return applyInfo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void signOut() {
|
||||
//判断是否是拒绝后申请还是退回后申请还是从来没申请
|
||||
AidFundMemberAuditRecord record = dao().fetch(AidFundMemberAuditRecord.class, Cnd.where("userId", "=", SecurityUtils.getUserId()).desc("applyTime"));
|
||||
dao().fetchLinks(record, null);
|
||||
if (Lang.isNotEmpty(record)) {
|
||||
Integer stateId = record.getStateId();
|
||||
if (AidFundMemberAuditState.AUDIT_REJECTED_STATES.contains(stateId)) {
|
||||
applyNewRecord(true);
|
||||
} else {
|
||||
modifyOldRecord(record);
|
||||
}
|
||||
} else {
|
||||
//从来没申请过
|
||||
applyNewRecord(true);
|
||||
}
|
||||
|
||||
applyNewRecord(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doApply() {
|
||||
Sql userSql = Sqls.create("select aidFundMember from `user` where userId = @userId");
|
||||
userSql.setParam("userId", SecurityUtils.getUserId());
|
||||
Integer aidFundMemberCode = (Integer) Daos.query(dao(), userSql.toString(), Sqls.callback.integer());
|
||||
|
||||
boolean isJoin = aidFundMemberCode == AidFundMemberMode.NONE.getCode();
|
||||
|
||||
AidFundMemberAuditRecord record = dao().fetch(AidFundMemberAuditRecord.class, Cnd.where("userId", "=", SecurityUtils.getUserId()).and("isJoin", "=", isJoin ? 1 : 0).desc("applyTime"));
|
||||
dao().fetchLinks(record, null);
|
||||
|
||||
//判断是否是拒绝后申请还是退回后申请还是从来没申请
|
||||
if (Lang.isNotEmpty(record)) {
|
||||
Integer stateId = record.getStateId();
|
||||
if (AidFundMemberAuditState.AUDIT_REJECTED_STATES.contains(stateId) || AidFundMemberAuditState.AUDIT_PASS_STATES.contains(stateId)) {
|
||||
applyNewRecord(isJoin);
|
||||
} else {
|
||||
modifyOldRecord(record);
|
||||
}
|
||||
} else {
|
||||
//从来没申请过
|
||||
applyNewRecord(isJoin);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void applyNewRecord(boolean isJoin) {
|
||||
// String retirementOfficeDeptId = remoteConfigService.selectConfigByKey("sys.retirementOfficeDeptId").getMsg();
|
||||
AidFundMemberAuditRecord applyRecord = new AidFundMemberAuditRecord();
|
||||
applyRecord.setUserId(String.valueOf(SecurityUtils.getUserId()));
|
||||
applyRecord.setApplyTime(new Date());
|
||||
applyRecord.setIsJoin(isJoin);
|
||||
applyRecord.setUnionId(SecurityUtils.getUnionId());
|
||||
applyRecord.setUnionName(Optional.ofNullable(SecurityUtils.getUnion()).map(SysUnion::getUnionName).orElse(null));
|
||||
applyRecord.setUnionCode(Optional.ofNullable(SecurityUtils.getUnion()).map(SysUnion::getUnionCode).orElse(null));
|
||||
applyRecord.setDeptId(String.valueOf(SecurityUtils.getDeptId()));
|
||||
applyRecord.setDeptName(Optional.ofNullable(SecurityUtils.getDept()).map(SysDept::getDeptName).orElse(null));
|
||||
applyRecord.setDeptCode(Optional.ofNullable(SecurityUtils.getDept()).map(SysDept::getDeptCode).orElse(null));
|
||||
applyRecord.setPersonType(SecurityUtils.getLoginUser().getSysUser().getPersonType());
|
||||
applyRecord.setUserState(SecurityUtils.getLoginUser().getSysUser().getUserState());
|
||||
|
||||
applyRecord.setSource(AidFundMemberSource.PERSONAL.getCode());
|
||||
|
||||
if (SecurityUtils.getLoginUser().getSysUser().getUserState().equals("在职")) {
|
||||
applyRecord.setStateId(AidFundMemberAuditState.BRANCH_UNION_READY);
|
||||
} else if (SecurityUtils.getLoginUser().getSysUser().getUserState().equals("退休")) {
|
||||
applyRecord.setStateId(AidFundMemberAuditState.RETIRED_READY);
|
||||
} else {
|
||||
applyRecord.setStateId(AidFundMemberAuditState.BRANCH_UNION_READY);
|
||||
}
|
||||
|
||||
// if (String.valueOf(SecurityUtils.getDeptId()).equals(retirementOfficeDeptId)) {
|
||||
// applyRecord.setStateId(AidFundMemberAuditState.RETIRED_READY);
|
||||
// } else {
|
||||
// applyRecord.setStateId(AidFundMemberAuditState.BRANCH_UNION_READY);
|
||||
// }
|
||||
dao().insert(applyRecord);
|
||||
}
|
||||
|
||||
//修改继续上次的申请
|
||||
private void modifyOldRecord(AidFundMemberAuditRecord applyRecord) {
|
||||
String retirementOfficeDeptId = remoteConfigService.selectConfigByKey("sys.retirementOfficeDeptId").getMsg();
|
||||
if (String.valueOf(SecurityUtils.getDeptId()).equals(retirementOfficeDeptId)) {
|
||||
applyRecord.setStateId(AidFundMemberAuditState.RETIRED_READY);
|
||||
} else {
|
||||
applyRecord.setStateId(AidFundMemberAuditState.BRANCH_UNION_READY);
|
||||
}
|
||||
dao().updateIgnoreNull(applyRecord);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+159
@@ -0,0 +1,159 @@
|
||||
package com.ruoyi.additional.service.impl.aidFundMember;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
||||
import com.ruoyi.additional.api.constant.aidFundMember.AidFundMemberAuditState;
|
||||
import com.ruoyi.additional.api.constant.aidFundMember.AidFundMemberMode;
|
||||
import com.ruoyi.additional.api.constant.aidFundMember.AidFundMemberSource;
|
||||
import com.ruoyi.additional.api.domain.Audit;
|
||||
import com.ruoyi.additional.api.domain.aidFundMember.AidFundMemberAuditRecord;
|
||||
import com.ruoyi.additional.constant.Ds;
|
||||
import com.ruoyi.additional.constant.aidFundMember.AidFundMemberPageForm;
|
||||
import com.ruoyi.additional.service.aidFundMember.AidFundMemberBatchJoinService;
|
||||
import com.ruoyi.additional.util.ProModuleDS;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.service.BaseServiceImpl;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import com.ruoyi.system.api.domain.SysUser;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class AidFundMemberBatchJoinServiceImpl extends BaseServiceImpl implements AidFundMemberBatchJoinService {
|
||||
|
||||
public AidFundMemberBatchJoinServiceImpl(Dao dao) {
|
||||
super(dao);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Pagination pageData(AidFundMemberPageForm pageForm) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
u.userId,
|
||||
u.loginName,
|
||||
u.userName,
|
||||
u.sex,
|
||||
u.mobile,
|
||||
u.userState,
|
||||
u.deptName,
|
||||
u.deptCode,
|
||||
u.unionId,
|
||||
u.unionCode,
|
||||
u.unionName,
|
||||
u.aidFundMemberQuitTime
|
||||
FROM
|
||||
`user` u
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (!AuthUtil.hasAnyRoles("HZ,admin")) {
|
||||
if (AuthUtil.hasRole("H04")) {
|
||||
cnd.and("u.unionId", "=", SecurityUtils.getUnionId());
|
||||
cnd.and("u.userState", "=", "在职");
|
||||
}
|
||||
if (AuthUtil.hasAnyRoles("ltxgbc")) {
|
||||
cnd.and("u.userState", "=", "退休");
|
||||
}
|
||||
}
|
||||
cnd.and("u.aidFundMember", "=", AidFundMemberMode.NONE.getCode());
|
||||
// cnd.and("""
|
||||
// (
|
||||
// SELECT
|
||||
// COUNT(1)
|
||||
// FROM aid_fund_member_audit_record
|
||||
// WHERE
|
||||
// userId = u.userId
|
||||
// AND stateId NOT IN (@applyIngStates)
|
||||
// )
|
||||
// """, "=", "0");
|
||||
//
|
||||
// sql.setParam("AUDIT_APPLYING_STATES", AidFundMemberAuditState.AUDIT_APPLYING_STATES);
|
||||
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.orLike("u.userName", pageForm.getSearchKeyword());
|
||||
seg.orLike("u.loginName", pageForm.getSearchKeyword());
|
||||
cnd.and(seg);
|
||||
}
|
||||
cnd.andEX("u.unionId", "=", pageForm.getUnionId());
|
||||
cnd.andEX("u.deptId", "=", pageForm.getUnitId());
|
||||
cnd.andEX("u.personType", "=", pageForm.getPersonType());
|
||||
cnd.andEX("u.userState", "=", pageForm.getUserState());
|
||||
|
||||
sql.setCondition(cnd);
|
||||
return listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
}
|
||||
|
||||
@Override
|
||||
@DSTransactional
|
||||
public void batchSettings(String[] userIds) {
|
||||
Audit audit = new Audit();
|
||||
audit.setAuditOpinion(AidFundMemberSource.BATCH.getDescription() + "通过");
|
||||
dao().insert(audit);
|
||||
|
||||
Sql userSql = Sqls.create("""
|
||||
select
|
||||
userName,
|
||||
loginName,
|
||||
userId,
|
||||
sex,
|
||||
personType,
|
||||
userState,
|
||||
deptName,
|
||||
deptCode,
|
||||
deptId,
|
||||
unionId,
|
||||
unionName,
|
||||
unionCode
|
||||
from `user`
|
||||
where
|
||||
userId in (@userIds)
|
||||
""").setParam("userIds", userIds);
|
||||
userSql.setCallback(Sqls.callback.entities());
|
||||
userSql.setEntity(dao().getEntity(AidFundMemberAuditRecord.class));
|
||||
dao().execute(userSql);
|
||||
List<AidFundMemberAuditRecord> records = userSql.getList(AidFundMemberAuditRecord.class);
|
||||
for (AidFundMemberAuditRecord record : records) {
|
||||
record.setIsJoin(true);
|
||||
record.setApplyTime(new Date());
|
||||
record.setSource(AidFundMemberSource.BATCH.getCode());
|
||||
if (AuthUtil.hasRole("admin")) {
|
||||
record.setFundAuditId(audit.getId());
|
||||
record.setFundAuditIds(Lang.list(audit.getId()));
|
||||
record.setStateId(AidFundMemberAuditState.AID_FUND_PASS);
|
||||
} else if (AuthUtil.hasRole("H04")) {
|
||||
record.setUnionAuditId(audit.getId());
|
||||
record.setUnionAuditIds(Lang.list(audit.getId()));
|
||||
record.setStateId(AidFundMemberAuditState.AID_FUND_READY);
|
||||
} else if (AuthUtil.hasRole("ltxgbc")) {
|
||||
record.setRetirementAuditId(audit.getId());
|
||||
record.setRetirementAuditIds(Lang.list(audit.getId()));
|
||||
record.setStateId(AidFundMemberAuditState.AID_FUND_READY);
|
||||
}
|
||||
}
|
||||
dao().insert(records);
|
||||
|
||||
ProModuleDS.execVoid(Ds.SYSTEM, () -> {
|
||||
if (AuthUtil.hasRole("admin")) {
|
||||
dao().update(SysUser.class,
|
||||
Chain.make("aidFundMember", AidFundMemberMode.NORMAL.getCode())
|
||||
.add("aidFundMemberJoinTime", new Date()),
|
||||
Cnd.where("userId", "in", userIds));
|
||||
} else {
|
||||
dao().update(SysUser.class,
|
||||
Chain.make("aidFundMember", AidFundMemberMode.NONE.getCode()),
|
||||
Cnd.where("userId", "in", userIds));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
+114
@@ -0,0 +1,114 @@
|
||||
package com.ruoyi.additional.service.impl.aidFundMember;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.additional.api.constant.aidFundMember.AidFundMemberAuditState;
|
||||
import com.ruoyi.additional.api.domain.Audit;
|
||||
import com.ruoyi.additional.api.domain.aidFundMember.AidFundMemberAuditRecord;
|
||||
import com.ruoyi.additional.constant.aidFundMember.AidFundMemberPageForm;
|
||||
import com.ruoyi.additional.service.aidFundMember.AidFundMemberBranchUnionAuditService;
|
||||
import com.ruoyi.common.core.constant.AuditConstants;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.service.BaseServiceImpl;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@Service
|
||||
public class AidFundMemberBranchUnionAuditServiceImpl extends BaseServiceImpl implements AidFundMemberBranchUnionAuditService {
|
||||
|
||||
public AidFundMemberBranchUnionAuditServiceImpl(Dao dao) {
|
||||
super(dao);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Pagination pageData(AidFundMemberPageForm pageForm) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
afmar.*,
|
||||
u.loginName,
|
||||
u.userName,
|
||||
u.sex,
|
||||
u.mobile,
|
||||
st.stateName,
|
||||
st.stateColor\s
|
||||
FROM
|
||||
`aid_fund_member_audit_record` afmar
|
||||
LEFT JOIN audit_state st ON st.stateId = afmar.stateId
|
||||
LEFT JOIN `user` u ON u.userId = afmar.userId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (pageForm.getIsAudit() == null) {
|
||||
cnd.and("afmar.stateId", ">=", AidFundMemberAuditState.BRANCH_UNION_READY);
|
||||
cnd.asc("afmar.stateId");
|
||||
} else if (pageForm.getIsAudit()) {
|
||||
cnd.and("afmar.stateId", ">", AidFundMemberAuditState.BRANCH_UNION_READY);
|
||||
cnd.asc("afmar.stateId");
|
||||
} else {
|
||||
cnd.and("afmar.stateId", "=", AidFundMemberAuditState.BRANCH_UNION_READY);
|
||||
}
|
||||
|
||||
if (!AuthUtil.hasRole("admin")) {
|
||||
cnd.and("afmar.unionId", "=", SecurityUtils.getUnionId());
|
||||
}
|
||||
cnd.andEX("YEAR(afmar.applyTime)", "=", pageForm.getYear());
|
||||
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.orLike("u.userName", pageForm.getSearchKeyword());
|
||||
seg.orLike("u.loginName", pageForm.getSearchKeyword());
|
||||
cnd.and(seg);
|
||||
}
|
||||
cnd.andEX("afmar.unionId", "=", pageForm.getUnionId());
|
||||
cnd.andEX("afmar.deptId", "=", pageForm.getUnitId());
|
||||
cnd.andEX("afmar.personType", "=", pageForm.getPersonType());
|
||||
cnd.andEX("afmar.userState", "=", pageForm.getUserState());
|
||||
sql.setCondition(cnd);
|
||||
return listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void doSubmit(Audit audit, String id) {
|
||||
dao().insert(audit);
|
||||
AidFundMemberAuditRecord auditRecord = dao().fetch(AidFundMemberAuditRecord.class, id);
|
||||
auditRecord.setUnionAuditId(audit.getId());
|
||||
|
||||
List<String> unionAuditIds = Optional.ofNullable(auditRecord.getUnionAuditIds()).orElse(new ArrayList<>());
|
||||
unionAuditIds.add(audit.getId());
|
||||
auditRecord.setUnionAuditIds(unionAuditIds);
|
||||
|
||||
switch (audit.getAuditResult()) {
|
||||
case AuditConstants.PASS -> auditRecord.setStateId(AidFundMemberAuditState.AID_FUND_READY);
|
||||
case AuditConstants.REJECT -> auditRecord.setStateId(AidFundMemberAuditState.BRANCH_UNION_REJECTED);
|
||||
case AuditConstants.BACK -> auditRecord.setStateId(AidFundMemberAuditState.BRANCH_UNION_BACK_MODIFY);
|
||||
}
|
||||
dao().updateIgnoreNull(auditRecord);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void doRevoke(String id) {
|
||||
AidFundMemberAuditRecord auditRecord = dao().fetch(AidFundMemberAuditRecord.class, id);
|
||||
List<String> unionAuditIds = auditRecord.getUnionAuditIds();
|
||||
String unionAuditId = auditRecord.getUnionAuditId();
|
||||
dao().delete(Audit.class, unionAuditId);
|
||||
unionAuditIds.remove(unionAuditId);
|
||||
|
||||
auditRecord.setStateId(AidFundMemberAuditState.BRANCH_UNION_READY);
|
||||
auditRecord.setUnionAuditId(null);
|
||||
auditRecord.setUnionAuditIds(unionAuditIds);
|
||||
dao().update(auditRecord);
|
||||
|
||||
}
|
||||
}
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
package com.ruoyi.additional.service.impl.aidFundMember;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.additional.api.domain.aidFundMember.AidFundMemberAuditRecord;
|
||||
import com.ruoyi.additional.constant.aidFundMember.AidFundMemberPageForm;
|
||||
import com.ruoyi.additional.service.aidFundMember.AidFundMemberChangeRecordService;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.service.BaseServiceImpl;
|
||||
import com.ruoyi.common.core.utils.sql.SqlUtil;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class AidFundMemberChangeRecordServiceImpl extends BaseServiceImpl<AidFundMemberAuditRecord> implements AidFundMemberChangeRecordService {
|
||||
|
||||
public AidFundMemberChangeRecordServiceImpl(Dao dao) {
|
||||
super(dao);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Pagination pageData(AidFundMemberPageForm pageForm) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
afmar.*,
|
||||
u.userName,
|
||||
u.loginName,
|
||||
u.sex
|
||||
FROM
|
||||
`aid_fund_member_audit_record` afmar
|
||||
LEFT JOIN `user` u on u.userId = afmar.userId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("YEAR(afmar.applyTime)", "=", pageForm.getYear());
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.orLike("u.userName", pageForm.getSearchKeyword());
|
||||
seg.orLike("u.loginName", pageForm.getSearchKeyword());
|
||||
cnd.and(seg);
|
||||
}
|
||||
cnd.andEX("afmar.unionId", "=", pageForm.getUnionId());
|
||||
cnd.andEX("afmar.deptId", "=", pageForm.getUnitId());
|
||||
cnd.andEX("afmar.personType", "=", pageForm.getPersonType());
|
||||
cnd.andEX("afmar.userState", "=", pageForm.getUserState());
|
||||
|
||||
if (StrUtil.isAllNotBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) {
|
||||
cnd.orderBy(pageForm.getPageOrderName(), SqlUtil.getOrderBy(pageForm.getPageOrderBy()));
|
||||
}
|
||||
|
||||
sql.setCondition(cnd);
|
||||
|
||||
return listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doDelete(String id) {
|
||||
dao().delete(AidFundMemberAuditRecord.class, id);
|
||||
}
|
||||
}
|
||||
+169
@@ -0,0 +1,169 @@
|
||||
package com.ruoyi.additional.service.impl.aidFundMember;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
||||
import com.ruoyi.additional.api.constant.aidFundMember.AidFundMemberAuditState;
|
||||
import com.ruoyi.additional.api.constant.aidFundMember.AidFundMemberMode;
|
||||
import com.ruoyi.additional.api.domain.Audit;
|
||||
import com.ruoyi.additional.api.domain.aidFundMember.AidFundMemberAuditRecord;
|
||||
import com.ruoyi.additional.constant.Ds;
|
||||
import com.ruoyi.additional.constant.aidFundMember.AidFundMemberPageForm;
|
||||
import com.ruoyi.additional.service.aidFundMember.AidFundMemberFoundationAuditService;
|
||||
import com.ruoyi.additional.util.ProModuleDS;
|
||||
import com.ruoyi.common.core.constant.AuditConstants;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.service.BaseServiceImpl;
|
||||
import com.ruoyi.system.api.domain.SysUser;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@Service
|
||||
public class AidFundMemberFoundationAuditServiceImpl extends BaseServiceImpl implements AidFundMemberFoundationAuditService {
|
||||
|
||||
public AidFundMemberFoundationAuditServiceImpl(Dao dao) {
|
||||
super(dao);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Pagination pageData(AidFundMemberPageForm pageForm) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
afmar.*,
|
||||
u.loginName,
|
||||
u.userName,
|
||||
u.sex,
|
||||
u.mobile,
|
||||
st.stateName,
|
||||
st.stateColor\s
|
||||
FROM
|
||||
`aid_fund_member_audit_record` afmar
|
||||
LEFT JOIN audit_state st ON st.stateId = afmar.stateId
|
||||
LEFT JOIN `user` u ON u.userId = afmar.userId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (pageForm.getIsAudit() == null) {
|
||||
cnd.and("afmar.stateId", ">=", AidFundMemberAuditState.AID_FUND_READY);
|
||||
cnd.asc("afmar.stateId");
|
||||
} else if (pageForm.getIsAudit()) {
|
||||
cnd.and("afmar.stateId", ">", AidFundMemberAuditState.AID_FUND_READY);
|
||||
cnd.asc("afmar.stateId");
|
||||
} else {
|
||||
cnd.and("afmar.stateId", "=", AidFundMemberAuditState.AID_FUND_READY);
|
||||
}
|
||||
|
||||
cnd.andEX("YEAR(afmar.applyTime)", "=", pageForm.getYear());
|
||||
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.orLike("u.userName", pageForm.getSearchKeyword());
|
||||
seg.orLike("u.loginName", pageForm.getSearchKeyword());
|
||||
cnd.and(seg);
|
||||
}
|
||||
cnd.andEX("afmar.unionId", "=", pageForm.getUnionId());
|
||||
cnd.andEX("afmar.deptId", "=", pageForm.getUnitId());
|
||||
cnd.andEX("afmar.personType", "=", pageForm.getPersonType());
|
||||
cnd.andEX("afmar.userState", "=", pageForm.getUserState());
|
||||
sql.setCondition(cnd);
|
||||
return listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
}
|
||||
|
||||
@Override
|
||||
@DSTransactional
|
||||
public void doSubmit(Audit audit, List<String> ids) {
|
||||
for (String id : ids) {
|
||||
dao().insert(audit);
|
||||
AidFundMemberAuditRecord auditRecord = dao().fetch(AidFundMemberAuditRecord.class, id);
|
||||
auditRecord.setFundAuditId(audit.getId());
|
||||
|
||||
List<String> fundAuditIds = Optional.ofNullable(auditRecord.getFundAuditIds()).orElse(new ArrayList<>());
|
||||
fundAuditIds.add(audit.getId());
|
||||
auditRecord.setFundAuditIds(fundAuditIds);
|
||||
|
||||
switch (audit.getAuditResult()) {
|
||||
case AuditConstants.PASS -> {
|
||||
auditRecord.setStateId(AidFundMemberAuditState.AID_FUND_PASS);
|
||||
//修改用户表状态
|
||||
ProModuleDS.execVoid(Ds.SYSTEM, () -> {
|
||||
Chain userChain = Chain.make("aidFundMember", auditRecord.getIsJoin() ? AidFundMemberMode.NORMAL.getCode() : AidFundMemberMode.NONE.getCode());
|
||||
userChain.add(auditRecord.getIsJoin() ? "aidFundMemberJoinTime" : "aidFundMemberQuitTime", new Date());
|
||||
dao().update(SysUser.class, userChain, Cnd.where("userId", "=", auditRecord.getUserId()));
|
||||
});
|
||||
}
|
||||
case AuditConstants.REJECT -> auditRecord.setStateId(AidFundMemberAuditState.AID_FUND_REJECTED);
|
||||
case AuditConstants.BACK -> auditRecord.setStateId(AidFundMemberAuditState.AID_FUND_BACK_MODIFY);
|
||||
}
|
||||
dao().updateIgnoreNull(auditRecord);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void doRevoke(String id) {
|
||||
AidFundMemberAuditRecord auditRecord = dao().fetch(AidFundMemberAuditRecord.class, id);
|
||||
List<String> fundAuditIds = auditRecord.getFundAuditIds();
|
||||
String fundAuditId = auditRecord.getFundAuditId();
|
||||
dao().delete(Audit.class, fundAuditId);
|
||||
fundAuditIds.remove(fundAuditId);
|
||||
|
||||
auditRecord.setStateId(AidFundMemberAuditState.AID_FUND_READY);
|
||||
auditRecord.setFundAuditId(null);
|
||||
auditRecord.setFundAuditIds(fundAuditIds);
|
||||
dao().update(auditRecord);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<NutMap> exportAuditUser(AidFundMemberPageForm pageForm) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
afmar.deptName,
|
||||
afmar.unionName,
|
||||
u.loginName,
|
||||
u.userName,
|
||||
u.idcard
|
||||
FROM
|
||||
`aid_fund_member_audit_record` afmar
|
||||
LEFT JOIN audit_state st ON st.stateId = afmar.stateId
|
||||
LEFT JOIN `user` u ON u.userId = afmar.userId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (pageForm.getIsAudit() == null) {
|
||||
cnd.and("afmar.stateId", ">=", AidFundMemberAuditState.AID_FUND_READY);
|
||||
} else if (pageForm.getIsAudit()) {
|
||||
cnd.and("afmar.stateId", ">", AidFundMemberAuditState.AID_FUND_READY);
|
||||
} else {
|
||||
cnd.and("afmar.stateId", "=", AidFundMemberAuditState.AID_FUND_READY);
|
||||
}
|
||||
|
||||
cnd.andEX("YEAR(afmar.applyTime)", "=", pageForm.getYear());
|
||||
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.orLike("u.userName", pageForm.getSearchKeyword());
|
||||
seg.orLike("u.loginName", pageForm.getSearchKeyword());
|
||||
cnd.and(seg);
|
||||
}
|
||||
cnd.andEX("afmar.unionId", "=", pageForm.getUnionId());
|
||||
cnd.andEX("afmar.deptId", "=", pageForm.getUnitId());
|
||||
cnd.andEX("afmar.personType", "=", pageForm.getPersonType());
|
||||
cnd.andEX("afmar.userState", "=", pageForm.getUserState());
|
||||
|
||||
cnd.asc("afmar.unionName");
|
||||
cnd.asc("afmar.deptName");
|
||||
sql.setCondition(cnd);
|
||||
return listMap(sql);
|
||||
}
|
||||
}
|
||||
+88
@@ -0,0 +1,88 @@
|
||||
package com.ruoyi.additional.service.impl.aidFundMember;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.additional.api.constant.aidFundMember.AidFundMemberMode;
|
||||
import com.ruoyi.additional.api.domain.aidFundMember.AidFundMemberHistory;
|
||||
import com.ruoyi.additional.constant.aidFundMember.AidFundMemberPageForm;
|
||||
import com.ruoyi.additional.service.aidFundMember.AidFundMemberHistoryService;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.service.BaseServiceImpl;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class AidFundMemberHistoryServiceImpl extends BaseServiceImpl<AidFundMemberHistory> implements AidFundMemberHistoryService {
|
||||
|
||||
public AidFundMemberHistoryServiceImpl(Dao dao) {
|
||||
super(dao);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Pagination pageData(AidFundMemberPageForm pageForm) {
|
||||
Sql sql = Sqls.create("select afmh.*,u.mobile from aid_fund_member_history afmh left join `user` u on u.userId = afmh.userId $condition");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
|
||||
cnd.andEX("afmh.unionId", "=", pageForm.getUnionId());
|
||||
cnd.andEX("afmh.deptId", "=", pageForm.getUnitId());
|
||||
cnd.andEX("afmh.personType", "=", pageForm.getPersonType());
|
||||
cnd.andEX("afmh.userState", "=", pageForm.getUserState());
|
||||
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.orLike("afmh.userName", pageForm.getSearchKeyword());
|
||||
seg.orLike("afmh.loginName", pageForm.getSearchKeyword());
|
||||
cnd.and(seg);
|
||||
}
|
||||
|
||||
cnd.and("afmh.`year`", "=", pageForm.getYear());
|
||||
|
||||
sql.setCondition(cnd);
|
||||
return listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void backupMember(int year) {
|
||||
dao().clear(AidFundMemberHistory.class, Cnd.where("year", "=", year));
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
userId,
|
||||
loginName,
|
||||
userName,
|
||||
deptId,
|
||||
deptName,
|
||||
deptCode,
|
||||
unionId,
|
||||
unionName,
|
||||
unionCode,
|
||||
sex,
|
||||
personType,
|
||||
userState,
|
||||
aidFundMemberJoinTime,
|
||||
@year as `year`
|
||||
FROM
|
||||
`user`
|
||||
WHERE aidFundMember = @aidFundMember
|
||||
""");
|
||||
sql.setParam("aidFundMember", AidFundMemberMode.NORMAL.getCode());
|
||||
sql.setParam("year", year);
|
||||
sql.setCallback(Sqls.callback.entities());
|
||||
sql.setEntity(dao().getEntity(AidFundMemberHistory.class));
|
||||
sql.forceExecQuery();
|
||||
dao().execute(sql);
|
||||
List<AidFundMemberHistory> histories = sql.getList(AidFundMemberHistory.class);
|
||||
dao().insert(histories);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doDelete(String id) {
|
||||
dao().delete(AidFundMemberHistory.class, id);
|
||||
}
|
||||
}
|
||||
+233
@@ -0,0 +1,233 @@
|
||||
package com.ruoyi.additional.service.impl.aidFundMember;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.additional.api.constant.aidFundMember.AidFundMemberMode;
|
||||
import com.ruoyi.additional.api.constant.aidFundMember.AidFundMemberPayXlsMode;
|
||||
import com.ruoyi.additional.api.domain.aidFundMember.AidFundMemberPay;
|
||||
import com.ruoyi.additional.constant.aidFundMember.AidFundMemberPageForm;
|
||||
import com.ruoyi.additional.service.aidFundMember.AidFundMemberPayService;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.service.BaseServiceImpl;
|
||||
import com.ruoyi.common.core.utils.sql.SqlUtil;
|
||||
import com.ruoyi.system.api.RemoteConfigService;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
public class AidFundMemberPayServiceImpl extends BaseServiceImpl<AidFundMemberPay> implements AidFundMemberPayService {
|
||||
|
||||
public AidFundMemberPayServiceImpl(Dao dao) {
|
||||
super(dao);
|
||||
}
|
||||
|
||||
@Autowired
|
||||
private RemoteConfigService remoteConfigService;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void createMemberPayList() {
|
||||
int nextYear = Calendar.getInstance().get(Calendar.YEAR) + 1;
|
||||
dao().clear(AidFundMemberPay.class, Cnd.where("year", "=", nextYear));
|
||||
|
||||
String welfareMemberMoney = remoteConfigService.selectConfigByKey("welfareMember.money").getMsg();
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
userId,
|
||||
loginName,
|
||||
userName,
|
||||
deptId,
|
||||
deptName,
|
||||
deptCode,
|
||||
unionId,
|
||||
unionName,
|
||||
unionCode,
|
||||
sex,
|
||||
personType,
|
||||
userState,
|
||||
aidFundMemberJoinTime,
|
||||
@year as `year`
|
||||
FROM
|
||||
`user`
|
||||
WHERE aidFundMember = @aidFundMember
|
||||
""");
|
||||
sql.setParam("aidFundMember", AidFundMemberMode.NORMAL.getCode());
|
||||
sql.setParam("year", nextYear);
|
||||
sql.setCallback(Sqls.callback.entities());
|
||||
sql.setEntity(dao().getEntity(AidFundMemberPay.class));
|
||||
sql.forceExecQuery();
|
||||
dao().execute(sql);
|
||||
List<AidFundMemberPay> pays = sql.getList(AidFundMemberPay.class);
|
||||
|
||||
for (AidFundMemberPay pay : pays) {
|
||||
pay.setPayed(false);
|
||||
pay.setMoney(Double.valueOf(welfareMemberMoney));
|
||||
}
|
||||
dao().insert(pays);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Pagination pageData(AidFundMemberPageForm pageForm) {
|
||||
Sql sql = Sqls.create("select afmp.*,u.mobile from aid_fund_member_pay afmp left join `user` u on u.userId = afmp.userId $condition");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
|
||||
cnd.andEX("afmp.payed", "=", pageForm.getIsPayed());
|
||||
|
||||
cnd.andEX("afmp.unionId", "=", pageForm.getUnionId());
|
||||
cnd.andEX("afmp.deptId", "=", pageForm.getUnitId());
|
||||
cnd.andEX("afmp.personType", "=", pageForm.getPersonType());
|
||||
cnd.andEX("afmp.userState", "=", pageForm.getUserState());
|
||||
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.orLike("afmp.userName", pageForm.getSearchKeyword());
|
||||
seg.orLike("afmp.loginName", pageForm.getSearchKeyword());
|
||||
cnd.and(seg);
|
||||
}
|
||||
|
||||
cnd.and("afmp.`year`", "=", pageForm.getYear());
|
||||
if (StrUtil.isAllNotBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) {
|
||||
cnd.orderBy(pageForm.getPageOrderName(), SqlUtil.getOrderBy(pageForm.getPageOrderBy()));
|
||||
}
|
||||
|
||||
sql.setCondition(cnd);
|
||||
return listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<NutMap> exportPaysByYear(int year, List<String> userStates) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
pay.*,
|
||||
YEAR ( u.aidFundMemberJoinTime ) aidYear\s
|
||||
FROM
|
||||
aid_fund_member_pay pay
|
||||
LEFT JOIN `user` u ON u.userId = pay.userId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("pay.`year` ", "=", year);
|
||||
cnd.andEX("u.userState", "in", userStates);
|
||||
cnd.desc("u.aidFundMemberJoinTime");
|
||||
sql.setCondition(cnd);
|
||||
|
||||
List<NutMap> list = listMap(sql);
|
||||
|
||||
for (NutMap v : list) {
|
||||
if (v.getInt("aidYear") == year) {
|
||||
v.setv("memberStatus", "新会员");
|
||||
} else {
|
||||
v.setv("memberStatus", "老会员");
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearPays(int year) {
|
||||
dao().clear(AidFundMemberPay.class, Cnd.where("year", "=", year));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public String importPayRecords(List<AidFundMemberPayXlsMode> list) {
|
||||
|
||||
|
||||
List<String> emptyDataRows = new ArrayList<>();
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
AidFundMemberPayXlsMode xlsMode = list.get(i);
|
||||
String loginName = xlsMode.getLoginName();
|
||||
String userName = xlsMode.getUserName();
|
||||
Integer year = xlsMode.getYear();
|
||||
if (StrUtil.isBlank(loginName) || StrUtil.isBlank(userName) || year == null) {
|
||||
emptyDataRows.add(String.valueOf(i + 1));
|
||||
}
|
||||
}
|
||||
if (!emptyDataRows.isEmpty()) {
|
||||
return "第" + String.join(",", emptyDataRows) + "行数据有空值,请检查!";
|
||||
}
|
||||
|
||||
List<String> repeatLoginNames = list.stream().collect(Collectors.groupingBy(AidFundMemberPayXlsMode::getLoginName, Collectors.counting()))
|
||||
.entrySet().stream().filter(e -> e.getValue() > 1)
|
||||
.map(Map.Entry::getKey).collect(Collectors.toList());
|
||||
|
||||
if (!repeatLoginNames.isEmpty()) {
|
||||
return "工号为" + String.join(",", repeatLoginNames) + "有重复数据,请检查!";
|
||||
}
|
||||
|
||||
Map<String, String> userMap = list.stream().collect(Collectors.toMap(AidFundMemberPayXlsMode::getLoginName, AidFundMemberPayXlsMode::getUserName));
|
||||
Set<String> loginNames = userMap.keySet();
|
||||
|
||||
Sql userSql = Sqls.create("""
|
||||
select
|
||||
userName,
|
||||
loginName,
|
||||
userId,
|
||||
sex,
|
||||
personType,
|
||||
userState,
|
||||
deptName,
|
||||
deptCode,
|
||||
deptId,
|
||||
unionId,
|
||||
unionName,
|
||||
unionCode
|
||||
from `user`
|
||||
where
|
||||
loginName in (@loginNames)
|
||||
""").setParam("loginNames", loginNames);
|
||||
List<NutMap> dbUserList = listMap(userSql);
|
||||
Map<String, String> userMapDB = dbUserList.stream().collect(Collectors.toMap(v -> v.getString("loginName"), v -> v.getString("userName")));
|
||||
|
||||
List<String> noneMatchLoginNames = new ArrayList<>();
|
||||
for (Map.Entry<String, String> xlsEntry : userMap.entrySet()) {
|
||||
String xlsUseName = xlsEntry.getValue();
|
||||
if (!userMapDB.containsKey(xlsEntry.getKey())) {
|
||||
noneMatchLoginNames.add(xlsEntry.getKey());
|
||||
continue;
|
||||
}
|
||||
|
||||
String dbUserName = userMapDB.get(xlsEntry.getKey());
|
||||
if (StrUtil.isBlank(dbUserName)) {
|
||||
noneMatchLoginNames.add(xlsEntry.getKey());
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!dbUserName.equals(xlsUseName)) {
|
||||
noneMatchLoginNames.add(xlsEntry.getKey());
|
||||
}
|
||||
|
||||
}
|
||||
if (!noneMatchLoginNames.isEmpty()) {
|
||||
return "工号为" + String.join(",", noneMatchLoginNames) + "的数据与姓名不匹配,请检查!";
|
||||
}
|
||||
|
||||
//删除之前的记录
|
||||
for (AidFundMemberPayXlsMode xlsMode : list) {
|
||||
dao().clear(AidFundMemberPay.class, Cnd.where("loginName", "=", xlsMode.getLoginName()).and("year", "=", xlsMode.getYear()));
|
||||
}
|
||||
|
||||
String welfareMemberMoney = remoteConfigService.selectConfigByKey("welfareMember.money").getMsg();
|
||||
|
||||
//插入新的缴费记录
|
||||
List<AidFundMemberPay> pays = Lang.collection2list(dbUserList, AidFundMemberPay.class);
|
||||
for (AidFundMemberPay pay : pays) {
|
||||
pay.setPayed(true);
|
||||
pay.setYear(list.stream().filter(v -> v.getLoginName().equals(pay.getLoginName())).findFirst().map(v -> v.getYear()).orElse(null));
|
||||
pay.setMoney(Double.valueOf(welfareMemberMoney));
|
||||
}
|
||||
dao().insert(pays);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
+121
@@ -0,0 +1,121 @@
|
||||
package com.ruoyi.additional.service.impl.aidFundMember;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.additional.api.constant.aidFundMember.AidFundMemberAuditState;
|
||||
import com.ruoyi.additional.api.domain.Audit;
|
||||
import com.ruoyi.additional.api.domain.aidFundMember.AidFundMemberAuditRecord;
|
||||
import com.ruoyi.additional.constant.aidFundMember.AidFundMemberPageForm;
|
||||
import com.ruoyi.additional.service.aidFundMember.AidFundMemberRetireAuditService;
|
||||
import com.ruoyi.common.core.constant.AuditConstants;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.service.BaseServiceImpl;
|
||||
import com.ruoyi.system.api.RemoteConfigService;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@Service
|
||||
public class AidFundMemberRetireAuditServiceImpl extends BaseServiceImpl implements AidFundMemberRetireAuditService {
|
||||
|
||||
public AidFundMemberRetireAuditServiceImpl(Dao dao) {
|
||||
super(dao);
|
||||
}
|
||||
|
||||
@Autowired
|
||||
private RemoteConfigService remoteConfigService;
|
||||
|
||||
@Override
|
||||
public Pagination pageData(AidFundMemberPageForm pageForm) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
afmar.*,
|
||||
u.loginName,
|
||||
u.userName,
|
||||
u.sex,
|
||||
u.mobile,
|
||||
st.stateName,
|
||||
st.stateColor\s
|
||||
FROM
|
||||
`aid_fund_member_audit_record` afmar
|
||||
LEFT JOIN audit_state st ON st.stateId = afmar.stateId
|
||||
LEFT JOIN `user` u ON u.userId = afmar.userId
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (pageForm.getIsAudit() == null) {
|
||||
cnd.and("afmar.stateId", ">=", AidFundMemberAuditState.RETIRED_READY);
|
||||
cnd.asc("afmar.stateId");
|
||||
} else if (pageForm.getIsAudit()) {
|
||||
cnd.and("afmar.stateId", ">", AidFundMemberAuditState.RETIRED_READY);
|
||||
cnd.asc("afmar.stateId");
|
||||
} else {
|
||||
cnd.and("afmar.stateId", "=", AidFundMemberAuditState.RETIRED_READY);
|
||||
}
|
||||
|
||||
// if (!AuthUtil.hasRole("admin")) {
|
||||
// cnd.and("afmar.unionId", "=", SecurityUtils.getUnionId());
|
||||
// }
|
||||
cnd.andEX("YEAR(afmar.applyTime)", "=", pageForm.getYear());
|
||||
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.orLike("u.userName", pageForm.getSearchKeyword());
|
||||
seg.orLike("u.loginName", pageForm.getSearchKeyword());
|
||||
cnd.and(seg);
|
||||
}
|
||||
// cnd.andEX("afmar.unionId", "=", pageForm.getUnionId());
|
||||
// cnd.andEX("afmar.deptId", "=", pageForm.getUnitId());
|
||||
cnd.andEX("afmar.personType", "=", pageForm.getPersonType());
|
||||
cnd.andEX("afmar.userState", "=", pageForm.getUserState());
|
||||
|
||||
|
||||
String retirementOfficeDeptId = remoteConfigService.selectConfigByKey("sys.retirementOfficeDeptId").getMsg();
|
||||
cnd.andEX("afmar.deptId", "=", retirementOfficeDeptId);
|
||||
|
||||
sql.setCondition(cnd);
|
||||
return listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void doSubmit(Audit audit, String id) {
|
||||
dao().insert(audit);
|
||||
AidFundMemberAuditRecord auditRecord = dao().fetch(AidFundMemberAuditRecord.class, id);
|
||||
auditRecord.setRetirementAuditId(audit.getId());
|
||||
|
||||
List<String> retirementAuditIds = Optional.ofNullable(auditRecord.getRetirementAuditIds()).orElse(new ArrayList<>());
|
||||
retirementAuditIds.add(audit.getId());
|
||||
auditRecord.setRetirementAuditIds(retirementAuditIds);
|
||||
|
||||
switch (audit.getAuditResult()) {
|
||||
case AuditConstants.PASS -> auditRecord.setStateId(AidFundMemberAuditState.AID_FUND_READY);
|
||||
case AuditConstants.REJECT -> auditRecord.setStateId(AidFundMemberAuditState.RETIRED_REJECTED);
|
||||
case AuditConstants.BACK -> auditRecord.setStateId(AidFundMemberAuditState.RETIRED_BACK_MODIFY);
|
||||
}
|
||||
dao().updateIgnoreNull(auditRecord);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void doRevoke(String id) {
|
||||
AidFundMemberAuditRecord auditRecord = dao().fetch(AidFundMemberAuditRecord.class, id);
|
||||
List<String> retirementAuditIds = auditRecord.getRetirementAuditIds();
|
||||
String retirementAuditId = auditRecord.getRetirementAuditId();
|
||||
dao().delete(Audit.class, retirementAuditId);
|
||||
retirementAuditIds.remove(retirementAuditId);
|
||||
|
||||
auditRecord.setStateId(AidFundMemberAuditState.RETIRED_READY);
|
||||
auditRecord.setRetirementAuditId(null);
|
||||
auditRecord.setRetirementAuditIds(retirementAuditIds);
|
||||
dao().update(auditRecord);
|
||||
}
|
||||
}
|
||||
+144
@@ -0,0 +1,144 @@
|
||||
package com.ruoyi.additional.service.impl.aidFundMember;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
||||
import com.ruoyi.additional.api.constant.aidFundMember.AidFundMemberAuditState;
|
||||
import com.ruoyi.additional.api.constant.aidFundMember.AidFundMemberChangeType;
|
||||
import com.ruoyi.additional.api.constant.aidFundMember.AidFundMemberMode;
|
||||
import com.ruoyi.additional.api.constant.aidFundMember.AidFundMemberSource;
|
||||
import com.ruoyi.additional.api.domain.Audit;
|
||||
import com.ruoyi.additional.api.domain.aidFundMember.AidFundMemberAuditRecord;
|
||||
import com.ruoyi.additional.constant.Ds;
|
||||
import com.ruoyi.additional.constant.aidFundMember.AidFundMemberPageForm;
|
||||
import com.ruoyi.additional.service.aidFundMember.AidFundMemberStandingBookManageService;
|
||||
import com.ruoyi.additional.util.ProModuleDS;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.service.BaseServiceImpl;
|
||||
import com.ruoyi.member.api.constant.UserChangeType;
|
||||
import com.ruoyi.member.api.domain.UserHistory;
|
||||
import com.ruoyi.system.api.domain.SysUser;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class AidFundMemberStandingBookManageServiceImpl extends BaseServiceImpl implements AidFundMemberStandingBookManageService {
|
||||
|
||||
public AidFundMemberStandingBookManageServiceImpl(Dao dao) {
|
||||
super(dao);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Pagination pageData(AidFundMemberPageForm pageForm) {
|
||||
Sql sql = Sqls.create("select * from user $condition");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("aidFundMember", "=", AidFundMemberMode.NORMAL.getCode());
|
||||
|
||||
cnd.andEX("unionId", "=", pageForm.getUnionId());
|
||||
cnd.andEX("deptId", "=", pageForm.getUnitId());
|
||||
cnd.andEX("personType", "=", pageForm.getPersonType());
|
||||
cnd.andEX("userState", "=", pageForm.getUserState());
|
||||
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.orLike("userName", pageForm.getSearchKeyword());
|
||||
seg.orLike("loginName", pageForm.getSearchKeyword());
|
||||
cnd.and(seg);
|
||||
}
|
||||
sql.setCondition(cnd);
|
||||
return listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<NutMap> exportNewMember() {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
loginName,
|
||||
userName,
|
||||
deptName,
|
||||
deptCode,
|
||||
unionName,
|
||||
unionCode,
|
||||
sex,
|
||||
personType,
|
||||
userState,
|
||||
aidFundMemberJoinTime,
|
||||
idcard
|
||||
FROM
|
||||
`user`
|
||||
WHERE aidFundMember = @aidFundMember
|
||||
AND YEAR(aidFundMemberJoinTime) = @year
|
||||
""");
|
||||
sql.setParam("aidFundMember", AidFundMemberMode.NORMAL.getCode());
|
||||
sql.setParam("year", DateUtil.thisYear());
|
||||
return listMap(sql);
|
||||
}
|
||||
|
||||
@Override
|
||||
@DSTransactional
|
||||
public void doChange(String userId, String changeType, String currentUnitId, String currentThreeUnitId) {
|
||||
if (AidFundMemberChangeType.UNIT_CHANGE.getCode().equals(changeType)) {
|
||||
SysUser user = ProModuleDS.exec(Ds.SYSTEM, () -> dao().fetch(SysUser.class, userId));
|
||||
|
||||
boolean deptIdEquals = String.valueOf(user.getDeptId() == null ? "" : user.getDeptId()).equals(currentUnitId);
|
||||
boolean threeUnitIdEquals = String.valueOf(user.getThreeUnitId() == null ? "" : user.getThreeUnitId()).equals(currentThreeUnitId);
|
||||
|
||||
if (!deptIdEquals || !threeUnitIdEquals) {
|
||||
Chain userChain = Chain.make("deptId", Long.valueOf(currentUnitId));
|
||||
userChain.add("threeUnitId", Long.valueOf(currentThreeUnitId));
|
||||
ProModuleDS.execVoid(Ds.SYSTEM, () -> dao().update(SysUser.class, userChain, Cnd.where("userId", "=", userId)));
|
||||
|
||||
UserHistory history = new UserHistory();
|
||||
BeanUtils.copyProperties(user, history);
|
||||
history.setChangeTime(new Date());
|
||||
history.setChangeType(UserChangeType.UNIT_CHANGE.getCode());
|
||||
dao().insert(history);
|
||||
}
|
||||
} else {
|
||||
Sql userSql = Sqls.create("select userId,deptId,deptName,deptCode,unionId,unionName,unionCode,personType,userState from `user` where userId = @userId");
|
||||
userSql.setParam("userId", userId);
|
||||
userSql.setCallback(Sqls.callback.entity());
|
||||
userSql.setEntity(dao().getEntity(AidFundMemberAuditRecord.class));
|
||||
dao().execute(userSql);
|
||||
|
||||
Audit audit = new Audit();
|
||||
audit.setAuditOpinion("台账直接变更");
|
||||
dao().insert(audit);
|
||||
|
||||
AidFundMemberAuditRecord record = (AidFundMemberAuditRecord) userSql.getResult();
|
||||
record.setIsJoin(false);
|
||||
record.setStateId(AidFundMemberAuditState.AID_FUND_PASS);
|
||||
record.setApplyTime(new Date());
|
||||
record.setSource(AidFundMemberSource.BATCH.getCode());
|
||||
record.setFundAuditId(audit.getId());
|
||||
dao().insert(record);
|
||||
|
||||
ProModuleDS.execVoid(Ds.SYSTEM, () -> {
|
||||
Chain userChain = Chain.make("aidFundMember", AidFundMemberMode.NONE.getCode());
|
||||
userChain.add("aidFundMemberQuitTime", new Date());
|
||||
ProModuleDS.execVoid(Ds.SYSTEM, () -> dao().update(SysUser.class, userChain, Cnd.where("userId", "=", userId)));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@DSTransactional
|
||||
public void doDelete(String userId) {
|
||||
ProModuleDS.execVoid(Ds.SYSTEM, () -> {
|
||||
Chain userChain = Chain.make("aidFundMember",AidFundMemberMode.NONE.getCode());
|
||||
userChain.add("aidFundMemberJoinTime",null);
|
||||
userChain.add("aidFundMemberQuitTime",null);
|
||||
dao().update(SysUser.class, userChain, Cnd.where("userId", "=", userId));
|
||||
});
|
||||
}
|
||||
}
|
||||
+82
@@ -0,0 +1,82 @@
|
||||
package com.ruoyi.additional.service.impl.evaluate;
|
||||
|
||||
import com.ruoyi.activity.api.domain.basic.ActivityUserScope;
|
||||
import com.ruoyi.additional.api.domain.evaluate.Evaluate;
|
||||
import com.ruoyi.additional.constant.Ds;
|
||||
import com.ruoyi.additional.service.evaluate.EvaluateManageService;
|
||||
import com.ruoyi.additional.util.ProModuleDS;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.service.BaseServiceImpl;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/6
|
||||
* @Description
|
||||
*/
|
||||
@Service
|
||||
public class EvaluateManageServiceImpl extends BaseServiceImpl<Evaluate> implements EvaluateManageService {
|
||||
|
||||
public EvaluateManageServiceImpl(Dao dao) {
|
||||
super(dao);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void add(Evaluate evaluate) {
|
||||
Evaluate eva = dao().insert(evaluate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void edit(Evaluate evaluate) {
|
||||
dao().updateIgnoreNull(evaluate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Pagination pageData(PageForm pageForm, Cnd cnd) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
e.*,
|
||||
s.groupName
|
||||
FROM
|
||||
evaluate e
|
||||
LEFT JOIN activity_user_scope s ON e.groupId = s.groupId
|
||||
$condition
|
||||
""");
|
||||
|
||||
sql.setCondition(cnd);
|
||||
return listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object findOne(String id) {
|
||||
Evaluate evaluate = dao().fetch(Evaluate.class, id);
|
||||
ActivityUserScope activityUserScope = ProModuleDS.exec(Ds.ACTIVITY, () -> {
|
||||
return dao().fetch(ActivityUserScope.class, Cnd.where("groupId", "=", evaluate.getGroupId()));
|
||||
});
|
||||
NutMap evaluateMap = Lang.obj2nutmap(evaluate);
|
||||
evaluateMap.put("groupName", activityUserScope.getGroupName());
|
||||
return evaluateMap;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getEvaluateList(String userId) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
evaluate
|
||||
$condition
|
||||
""");
|
||||
sql.setCondition(cnd);
|
||||
return listMap(sql);
|
||||
}
|
||||
}
|
||||
+134
@@ -0,0 +1,134 @@
|
||||
package com.ruoyi.additional.service.impl.evaluate;
|
||||
|
||||
import com.ruoyi.activity.api.domain.Audit;
|
||||
import com.ruoyi.additional.api.domain.evaluate.Evaluate;
|
||||
import com.ruoyi.additional.api.domain.evaluate.EvaluateApply;
|
||||
import com.ruoyi.additional.service.evaluate.EvaluateApplyService;
|
||||
import com.ruoyi.common.core.domain.PageForm;
|
||||
import com.ruoyi.common.core.page.Pagination;
|
||||
import com.ruoyi.common.core.service.BaseServiceImpl;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.auth.AuthUtil;
|
||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/6
|
||||
* @Description
|
||||
*/
|
||||
@Service
|
||||
public class EvaluateServiceApplyImpl extends BaseServiceImpl<EvaluateApply> implements EvaluateApplyService {
|
||||
|
||||
public EvaluateServiceApplyImpl(Dao dao) {
|
||||
super(dao);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Pagination pageData(PageForm pageForm, Cnd cnd) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
app.*,
|
||||
user.userName as username,
|
||||
user.deptName as unitName,
|
||||
state.stateName,
|
||||
state.stateColor,
|
||||
e.name as evaluateName
|
||||
FROM
|
||||
`evaluate_apply` app
|
||||
LEFT JOIN evaluate e on e.id = app.evaluateId
|
||||
LEFT JOIN `user` user ON app.userId = user.userId
|
||||
LEFT JOIN audit_state state ON state.stateId = app.stateId
|
||||
$condition
|
||||
""");
|
||||
|
||||
if (!AuthUtil.hasAnyRoles("admin, H06")) {
|
||||
cnd.and("app.userId", "=", SecurityUtils.getUserId());
|
||||
}
|
||||
|
||||
cnd.desc("app.applyTime");
|
||||
sql.setCondition(cnd);
|
||||
|
||||
return listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object findOne(String id) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
us.userName,
|
||||
us.loginName,
|
||||
us.deptName as unitName,
|
||||
us.unionName,
|
||||
ha.*,
|
||||
state.stateName,
|
||||
state.stateColor
|
||||
FROM
|
||||
`evaluate_apply` ha
|
||||
LEFT JOIN `user` us ON us.userId = ha.userId
|
||||
LEFT JOIN audit_state state ON state.stateId=ha.stateId
|
||||
where ha.id = @id
|
||||
""").setParam("id", id);
|
||||
NutMap map = listMap(sql).get(0);
|
||||
if (Strings.isNotBlank(map.getString("unitAuditId"))) {
|
||||
map.setv("unitAudit", dao().fetch(Audit.class, Cnd.where("id", "=", map.getString("unitAuditId"))));
|
||||
}
|
||||
if (Strings.isNotBlank(map.getString("unionAuditId"))) {
|
||||
map.setv("unionAudit", dao().fetch(Audit.class, Cnd.where("id", "=", map.getString("unionAuditId"))));
|
||||
}
|
||||
if (Strings.isNotBlank(map.getString("partyAuditId"))) {
|
||||
map.setv("partyAudit", dao().fetch(Audit.class, Cnd.where("id", "=", map.getString("partyAuditId"))));
|
||||
}
|
||||
if (Strings.isNotBlank(map.getString("schoolAuditId"))) {
|
||||
map.setv("schoolAudit", dao().fetch(Audit.class, Cnd.where("id", "=", map.getString("schoolAuditId"))));
|
||||
}
|
||||
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object doDelete(String id) {
|
||||
//EvaluateApply evaluateApply = dao().fetch(EvaluateApply.class, id);
|
||||
|
||||
dao().delete(EvaluateApply.class, id);
|
||||
//TODO:以后删附件
|
||||
/* if (evaluateApply.getFiles() != null) {
|
||||
evaluateApply.getFiles().forEach(item -> {
|
||||
fileService.delete(item.getId(), item.getFilepath());
|
||||
});
|
||||
}*/
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AjaxResult verifyApply(String evaluateId) {
|
||||
//申请人的工会分配的人数
|
||||
int limitCount = 0;
|
||||
Evaluate evaluate = dao().fetch(Evaluate.class, evaluateId);
|
||||
List<NutMap> unionLimit = evaluate.getUnionLimit();
|
||||
if (unionLimit != null && !unionLimit.isEmpty()) {
|
||||
NutMap map = unionLimit.stream().filter(o -> Objects.equals(o.getString("id"), SecurityUtils.getUnionId())).findFirst().orElse(null);
|
||||
limitCount = map != null ? map.getInt("limitCount") : 0;
|
||||
}
|
||||
|
||||
//申请人工会已经申请的人数
|
||||
int count = dao().count(EvaluateApply.class, Cnd.NEW().and("evaluateId", "=", evaluateId)
|
||||
.and("unionId", "=", SecurityUtils.getUnionId())
|
||||
.and("stateId", "in", List.of("1410", "1420", "1440", "1450", "1470", "1480", "1500", "1510", "1530")));
|
||||
|
||||
|
||||
if (count >= limitCount) {
|
||||
return AjaxResult.error("抱歉,此评优评先活动您所在分工会人数已满");
|
||||
}
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
+96
@@ -0,0 +1,96 @@
|
||||
package com.ruoyi.additional.service.impl.fund;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.baomidou.dynamic.datasource.annotation.DS;
|
||||
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
||||
import com.ruoyi.additional.api.domain.fund.CostSet;
|
||||
import com.ruoyi.additional.api.domain.fund.FundClub;
|
||||
import com.ruoyi.additional.constant.Ds;
|
||||
import com.ruoyi.additional.service.fund.ClubBudgetManageService;
|
||||
import com.ruoyi.additional.util.ProModuleDS;
|
||||
import com.ruoyi.common.core.service.BaseServiceImpl;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.system.api.domain.club.Sys_club;
|
||||
import com.ruoyi.system.api.domain.club.Sys_club_user;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.entity.Record;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author JyuHsin
|
||||
* @Date 2023/2/10
|
||||
* @Description
|
||||
*/
|
||||
@Service
|
||||
public class ClubBudgetManageServiceImpl extends BaseServiceImpl<FundClub> implements ClubBudgetManageService {
|
||||
|
||||
public ClubBudgetManageServiceImpl(Dao dao) {
|
||||
super(dao);
|
||||
}
|
||||
|
||||
@Override
|
||||
@DSTransactional
|
||||
public AjaxResult issue() {
|
||||
Sql sql = Sqls.create("""
|
||||
select
|
||||
jf.club_id,
|
||||
club.id cid
|
||||
from
|
||||
`club` club
|
||||
left join jf_club jf ON jf.club_id = club.id AND jf.`year` = @year
|
||||
""").setParam("year", Calendar.getInstance().get(Calendar.YEAR));
|
||||
|
||||
List<Record> list = list(sql);
|
||||
List<Sys_club_user> clubList = ProModuleDS.exec(Ds.SYSTEM, () -> {
|
||||
return dao().query(Sys_club_user.class, Cnd.where("status", "=", "5"));
|
||||
});
|
||||
|
||||
list.forEach(l -> {
|
||||
int cynum = clubList.stream().filter(c -> c.getClubid().equals(l.getString("club_id"))).collect(Collectors.toList()).size();
|
||||
String cid = l.getString("cid");
|
||||
CostSet costsSet = dao().fetch(CostSet.class, Cnd.where("year", "=", DateUtil.thisYear()));
|
||||
Float clubLeastMoney = costsSet.getClubLeastMoney();
|
||||
Float clubAtMostMoney = costsSet.getClubAtMostMoney();
|
||||
Float money = clubLeastMoney;
|
||||
if (cynum > costsSet.getClubExceedNum()) {
|
||||
money = clubLeastMoney + (cynum - costsSet.getClubExceedNum()) * costsSet.getClub_avg();
|
||||
}
|
||||
if (money > clubAtMostMoney) {
|
||||
money = clubAtMostMoney;
|
||||
}
|
||||
|
||||
Chain add = Chain.make("total_quota", money)
|
||||
.add("state", 1)
|
||||
.add("history_club_avg", costsSet.getClub_avg())
|
||||
.add("history_member", cynum);
|
||||
update(add, Cnd.where("year", "=", DateUtil.thisYear()).and("club_id", "=", cid));
|
||||
});
|
||||
|
||||
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@Override
|
||||
@DSTransactional
|
||||
public AjaxResult doAdd(FundClub club) {
|
||||
|
||||
int clubCount = ProModuleDS.exec(Ds.SYSTEM, () -> {
|
||||
return dao().count(Sys_club_user.class, Cnd.where("clubid", "=", club.getClub_id()));
|
||||
});
|
||||
|
||||
club.setHistory_member(clubCount);
|
||||
club.setYear(DateUtil.thisYear());
|
||||
club.setState(1);
|
||||
insert(club);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user