Explorar el Código

Merge remote-tracking branch 'origin/dev' into dev

纪新园 hace 3 años
padre
commit
c4a3b52d94
Se han modificado 15 ficheros con 297 adiciones y 76 borrados
  1. 3 1
      blade-service-api/blade-box-tube-api/src/main/java/org/springblade/box/tube/entity/DeclareCustoms.java
  2. 7 0
      blade-service-api/blade-check-api/src/main/java/org/springblade/check/feign/ICheckClient.java
  3. 147 75
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/DeclareCustomsServiceImpl.java
  4. 8 0
      blade-service/blade-check/src/main/java/org/springblade/check/controller/AuditProecessController.java
  5. 2 0
      blade-service/blade-check/src/main/java/org/springblade/check/mapper/AuditProecessMapper.java
  6. 3 0
      blade-service/blade-check/src/main/java/org/springblade/check/mapper/AuditProecessMapper.xml
  7. 2 0
      blade-service/blade-check/src/main/java/org/springblade/check/service/IAuditProecessService.java
  8. 5 0
      blade-service/blade-check/src/main/java/org/springblade/check/service/impl/AuditProecessServiceImpl.java
  9. 27 0
      blade-service/blade-client/src/main/java/org/springblade/client/school/controller/SchoolTeacherController.java
  10. 34 0
      blade-service/blade-client/src/main/java/org/springblade/client/school/excel/SchoolQuitExcel.java
  11. 1 0
      blade-service/blade-client/src/main/java/org/springblade/client/school/mapper/SchoolConfigMapper.java
  12. 2 0
      blade-service/blade-client/src/main/java/org/springblade/client/school/mapper/SchoolTeacherMapper.java
  13. 4 0
      blade-service/blade-client/src/main/java/org/springblade/client/school/mapper/SchoolTeacherMapper.xml
  14. 8 0
      blade-service/blade-client/src/main/java/org/springblade/client/school/service/ISchoolTeacherService.java
  15. 44 0
      blade-service/blade-client/src/main/java/org/springblade/client/school/service/impl/SchoolTeacherServiceImpl.java

+ 3 - 1
blade-service-api/blade-box-tube-api/src/main/java/org/springblade/box/tube/entity/DeclareCustoms.java

@@ -547,7 +547,9 @@ public class DeclareCustoms implements Serializable {
 	@TableField(exist = false)
 	private List<String> declareDateList;
 
-
+	//请核标识(1初审 2复审)
+	@TableField(exist = false)
+	private Integer checkFlag;
 	//跳转对应页面的路由
 	@TableField(exist = false)
 	private String url;

+ 7 - 0
blade-service-api/blade-check-api/src/main/java/org/springblade/check/feign/ICheckClient.java

@@ -51,6 +51,13 @@ public interface ICheckClient {
 	 */
 	@PostMapping("/auditproecess/deteleByBillId")
 	R deteleByBillId(@RequestParam("billId") Long billId);
+
+	/**
+	 * 通过billid和第几次提交审批删除审批流数据
+	 */
+	@PostMapping("/auditproecess/deteleByBillIdOrGrade")
+	R deteleByBillIdOrGrade(@RequestParam("billId") Long billId, @RequestParam("grade") Integer times);
+
 	/**
 	 * 通过唯一的actId查询审批等级
 	 */

+ 147 - 75
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/DeclareCustomsServiceImpl.java

@@ -16,9 +16,7 @@ import org.springblade.check.dto.AuditProecessDTO;
 import org.springblade.check.entity.AuditPathsActs;
 import org.springblade.check.entity.AuditPathsLevels;
 import org.springblade.check.feign.ICheckClient;
-import org.springblade.client.entity.CommonFile;
 import org.springblade.client.entity.Message;
-import org.springblade.client.feign.ICommonFileClient;
 import org.springblade.client.feign.IMessageClient;
 import org.springblade.client.feign.ISerialClient;
 import org.springblade.core.secure.utils.AuthUtil;
@@ -38,10 +36,7 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import java.math.BigDecimal;
 import java.math.MathContext;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 /**
  * 报关表 服务实现类
@@ -62,7 +57,6 @@ public class DeclareCustomsServiceImpl extends ServiceImpl<DeclareCustomsMapper,
 	private final DeclareCustomsFilesMapper filesMapper;//报关附件
 
 	private final ICheckClient iCheckClient;//审批
-	private final ICommonFileClient commonFileClient;//附件
 	private final IFinanceClient financeClient;//财务
 	private final ISysClient sysClient;
 
@@ -278,38 +272,53 @@ public class DeclareCustomsServiceImpl extends ServiceImpl<DeclareCustomsMapper,
 	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public DeclareCustoms checkDeclareCustoms(DeclareCustoms declareCustoms) {
 		DeclareCustoms declare = baseMapper.selectById(declareCustoms.getId());
-		if (declare.getStatus() == 1){
-			throw new SecurityException("订单已请核,请勿重复请核");
+		if (declare.getStatus() == 1) {
+			throw new SecurityException("订单已开启审核,请勿重复提交");
+		}else if (declare.getStatus() == 5){
+			throw new SecurityException("订单已开启复审,请勿重复提交");
 		}
 
 		//审批数据
 		AuditProecessDTO auditProecessDTO = new AuditProecessDTO();
 		//获取审批级次
-		List<AuditPathsLevels> auditPathsLevels;
+		List<AuditPathsLevels> auditPathsLevels = null;
 		// 判断是否有审批流,如果审批流已开启就进入审批流,否则直接走申请通过
-		AuditPathsActs pathsActs;
+		AuditPathsActs pathsActs = null;
 
 		//报关进口审批流程
 		if ("BGJK".equals(declareCustoms.getImportExportSigns())){
-			if (declare.getStatus() == 1) {
-				throw new SecurityException("订单已开启审核,请勿重复提交");
+			if (declare.getStatus() == 0){
+				//是否开启流程
+				pathsActs = iCheckClient.getActsByActId(17, "status");
+				//获取审批信息
+				auditPathsLevels = iCheckClient.listLevelsByActId(17, "status");
+				auditProecessDTO.setTimes(1);
+				auditProecessDTO.setProcessType("报关进口审批");
+			}else if (declare.getStatus() == 4){
+				//是否开启流程
+				pathsActs = iCheckClient.getActsByActId(19, "status");
+				//获取审批信息
+				auditPathsLevels = iCheckClient.listLevelsByActId(19, "status");
+				auditProecessDTO.setTimes(2);
+				auditProecessDTO.setProcessType("报关进口复审审批");
 			}
-			//是否开启流程
-			pathsActs = iCheckClient.getActsByActId(17, "status");
-			//获取审批信息
-			auditPathsLevels = iCheckClient.listLevelsByActId(17, "status");
 
-			auditProecessDTO.setProcessType("报关进口审批");
 		}else if ("BGCK".equals(declareCustoms.getImportExportSigns())){//报关出口审批流程
-			if (declare.getStatus() == 1) {
-				throw new SecurityException("订单已开启审核,请勿重复提交");
+			if(declare.getStatus() == 0){
+				//是否开启流程
+				pathsActs = iCheckClient.getActsByActId(18, "status");
+				//获取审批信息
+				auditPathsLevels = iCheckClient.listLevelsByActId(18, "status");
+				auditProecessDTO.setTimes(1);
+				auditProecessDTO.setProcessType("报关出口审批");
+			}else if (declare.getStatus() == 4){
+				//是否开启流程
+				pathsActs = iCheckClient.getActsByActId(20, "status");
+				//获取审批信息
+				auditPathsLevels = iCheckClient.listLevelsByActId(20, "status");
+				auditProecessDTO.setTimes(2);
+				auditProecessDTO.setProcessType("报关出口复审审批");
 			}
-			//是否开启流程
-			pathsActs = iCheckClient.getActsByActId(18, "status");
-			//获取审批信息
-			auditPathsLevels = iCheckClient.listLevelsByActId(18, "status");
-
-			auditProecessDTO.setProcessType("报关出口审批");
 		}else {
 			throw new SecurityException("缺少必要参数,审批失败");
 		}
@@ -330,6 +339,24 @@ public class DeclareCustomsServiceImpl extends ServiceImpl<DeclareCustomsMapper,
 			auditProecessDTO.setPageStatus(declareCustoms.getPageStatus());
 			auditProecessDTO.setPageLabel(declareCustoms.getPageLabel());
 
+			//获得明细信息
+			LambdaQueryWrapper<DeclareCustomsItem> itemLambdaQueryWrapper = new LambdaQueryWrapper<>();
+			itemLambdaQueryWrapper.eq(DeclareCustomsItem::getTenantId, AuthUtil.getTenantId())
+				.eq(DeclareCustomsItem::getIsDeleted, 0)
+				.eq(DeclareCustomsItem::getPid, declare.getId());
+			List<DeclareCustomsItem> itemList = declareCustomsItemMapper.selectList(itemLambdaQueryWrapper);
+
+			if (ObjectUtil.isNotEmpty(itemList)){
+				//数量
+				auditProecessDTO.setOrderQuantity(itemList.stream().map(DeclareCustomsItem::getTransactionsNumber).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				//金额
+				auditProecessDTO.setAmount(itemList.stream().map(DeclareCustomsItem::getTotalPrice).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			}else {
+				auditProecessDTO.setOrderQuantity(BigDecimal.ZERO);
+				auditProecessDTO.setAmount(BigDecimal.ZERO);
+			}
+
+
 			//应付
 			LambdaQueryWrapper<DeclareCustomsFees> receivableLambdaQueryWrapper = new LambdaQueryWrapper<>();
 			receivableLambdaQueryWrapper.eq(DeclareCustomsFees::getIsDeleted, 0);
@@ -377,8 +404,14 @@ public class DeclareCustomsServiceImpl extends ServiceImpl<DeclareCustomsMapper,
 			}
 		}
 
-		declare.setStatus(1);
-		declare.setAuditStatus("提交审核");
+		if (declare.getStatus() == 0){
+			declare.setStatus(1);
+			declare.setAuditStatus("初审提交审核");
+		}else if (declare.getStatus() == 4){
+			declare.setStatus(5);
+			declare.setAuditStatus("复审提交审核");
+		}
+
 		declare.setAuditTime(new Date());
 		baseMapper.updateById(declare);
 
@@ -394,17 +427,24 @@ public class DeclareCustomsServiceImpl extends ServiceImpl<DeclareCustomsMapper,
 		if (declareCustoms == null){
 			throw new SecurityException("审批通过失败");
 		}
-		if (declareCustoms.getStatus() == 3){
+		if (declareCustoms.getStatus() == 4){
 			throw new SecurityException("订单已审批通过请勿重复审批");
+		}else if (declareCustoms.getStatus() == 7){
+			throw new SecurityException("订单已复审通过请勿重复审批");
 		}
 
-		//生成账单
-		this.paymentApply(declareCustoms, declareCustoms.getImportExportSigns(), declareCustoms.getImportExportSigns());
-		declareCustoms.setStatus(3);
-		declareCustoms.setAuditStatus("审批通过");
+		if (declareCustoms.getStatus() == 1 || declareCustoms.getStatus() == 2){
+			declareCustoms.setStatus(4);
+			declareCustoms.setAuditStatus("初审完成");
+		}else if (declareCustoms.getStatus() == 5 || declareCustoms.getStatus() == 6){
+			//生成账单
+			this.paymentApply(declareCustoms, declareCustoms.getImportExportSigns(), declareCustoms.getImportExportSigns());
+			declareCustoms.setStatus(7);
+			declareCustoms.setAuditStatus("复审通过");
+		}
 		baseMapper.updateById(declareCustoms);
 
-		return R.success("审批通过");
+		return R.success("操作成功");
 	}
 
 	/**
@@ -417,8 +457,14 @@ public class DeclareCustomsServiceImpl extends ServiceImpl<DeclareCustomsMapper,
 			throw new SecurityException("审批通过失败");
 		}
 
-		declareCustoms.setStatus(2);
-		declareCustoms.setAuditStatus("审批中");
+		if (declareCustoms.getStatus() == 1 || declareCustoms.getStatus() == 2){
+			declareCustoms.setStatus(2);
+			declareCustoms.setAuditStatus("初审审批中");
+		}else if (declareCustoms.getStatus() == 5 || declareCustoms.getStatus() == 6){
+			declareCustoms.setStatus(6);
+			declareCustoms.setAuditStatus("复审审批中");
+		}
+
 		baseMapper.updateById(declareCustoms);
 
 		return R.success("操作成功");
@@ -435,10 +481,18 @@ public class DeclareCustomsServiceImpl extends ServiceImpl<DeclareCustomsMapper,
 		}
 		if (declareCustoms.getStatus() == 0){
 			throw new SecurityException("订单已驳回或未提交审批,请勿重复操作");
+		}else if (declareCustoms.getStatus() == 4){
+			throw new SecurityException("订单已驳回或未提交复审,请勿重复操作");
+		}
+
+		if (declareCustoms.getStatus() == 1 || declareCustoms.getStatus() == 2){
+			declareCustoms.setStatus(0);
+			declareCustoms.setAuditStatus("录入");
+		}else if (declareCustoms.getStatus() == 5 || declareCustoms.getStatus() == 6){
+			declareCustoms.setStatus(4);
+			declareCustoms.setAuditStatus("初审完成");
 		}
 
-		declareCustoms.setStatus(0);
-		declareCustoms.setAuditStatus("录入");
 		baseMapper.updateById(declareCustoms);
 
 		return R.success("操作成功");
@@ -461,51 +515,69 @@ public class DeclareCustomsServiceImpl extends ServiceImpl<DeclareCustomsMapper,
 			throw new SecurityException("撤销失败,订单已审核通过");
 		}else if (customs.getStatus().equals(0)){
 			throw new SecurityException("撤销失败,订单未提交审核");
+		}else if (customs.getStatus().equals(6)){
+			throw new SecurityException("撤销失败,订单正在复审审批中");
+		}else if (customs.getStatus().equals(7)){
+			throw new SecurityException("撤销失败,订单复审已审核通过");
+		}else if (customs.getStatus().equals(4)){
+			throw new SecurityException("撤销失败,订单未提交复审审核");
 		}
 
-		//获取账单信息
-		Acc acc = new Acc();
-		acc.setSrcParentId(customs.getId());
-		if ("BGJK".equals(customs.getImportExportSigns())) {
-			acc.setBillType("申请");
-		} else {
-			acc.setBillType("收费");
-		}
-		acc.setTradeType("JGBG");
-		acc.setSrcType(8);
-		R<List<Acc>> r = financeClient.getAccListByCondition(acc);
-		if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
-			for (Acc acc_ : r.getData()) {
-				//判断是否有结算 true 不允许撤销审核  false 删除账单信息并撤销审核
-				if (!acc_.getSettlementAmount().equals(new BigDecimal("0.00"))) {
-					throw new SecurityException("订单已结算,不允许撤销");
-				} else {
-					financeClient.remove(acc_.getId() + "");
+		if (customs.getStatus() == 1){
+			//修改单据状态
+			customs.setStatus(0);
+			customs.setAuditStatus("初审撤销");
+			customs.setUpdateUser(AuthUtil.getUserId());
+			customs.setUpdateTime(new Date());
+			//撤销
+			iCheckClient.deteleByBillIdOrGrade(declareCustoms.getId(), 1);
+		}else if (customs.getStatus() == 5){
+			//获取账单信息
+			Acc acc = new Acc();
+			acc.setSrcParentId(customs.getId());
+			if ("BGJK".equals(customs.getImportExportSigns())) {
+				acc.setBillType("申请");
+			} else {
+				acc.setBillType("收费");
+			}
+			acc.setTradeType("JGBG");
+			acc.setSrcType(8);
+			R<List<Acc>> r = financeClient.getAccListByCondition(acc);
+			if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
+				for (Acc acc_ : r.getData()) {
+					//判断是否有结算 true 不允许撤销审核  false 删除账单信息并撤销审核
+					if (!acc_.getSettlementAmount().equals(new BigDecimal("0.00"))) {
+						throw new SecurityException("订单已结算,不允许撤销");
+					} else {
+						financeClient.remove(acc_.getId() + "");
+					}
 				}
 			}
-		}
 
-		//修改单据状态
-		customs.setStatus(0);
-		customs.setAuditStatus("审核撤销");
-		customs.setUpdateUser(AuthUtil.getUserId());
-		customs.setUpdateTime(new Date());
-		baseMapper.updateById(customs);
+			//修改单据状态
+			customs.setStatus(4);
+			customs.setAuditStatus("复审撤销");
+			customs.setUpdateUser(AuthUtil.getUserId());
+			customs.setUpdateTime(new Date());
+
+			//获取订单费用信息
+			LambdaQueryWrapper<DeclareCustomsFees> feesLambdaQueryWrapper = new LambdaQueryWrapper<>();
+			feesLambdaQueryWrapper.eq(DeclareCustomsFees::getIsDeleted, 0);
+			feesLambdaQueryWrapper.eq(DeclareCustomsFees::getPid, customs.getId());
+			feesLambdaQueryWrapper.eq(DeclareCustomsFees::getTenantId, AuthUtil.getTenantId());
+			feesLambdaQueryWrapper.eq(DeclareCustomsFees::getSubmitPay, 1);
+			List<DeclareCustomsFees> feesList = feesMapper.selectList(feesLambdaQueryWrapper);
+			for (DeclareCustomsFees declareCustomsFees : feesList) {
+				declareCustomsFees.setSubmitPay(0);
+				feesMapper.updateById(declareCustomsFees);
+			}
+			//撤销
+			iCheckClient.deteleByBillIdOrGrade(declareCustoms.getId(), 2);
 
-		//获取订单费用信息
-		LambdaQueryWrapper<DeclareCustomsFees> feesLambdaQueryWrapper = new LambdaQueryWrapper<>();
-		feesLambdaQueryWrapper.eq(DeclareCustomsFees::getIsDeleted, 0);
-		feesLambdaQueryWrapper.eq(DeclareCustomsFees::getPid, customs.getId());
-		feesLambdaQueryWrapper.eq(DeclareCustomsFees::getTenantId, AuthUtil.getTenantId());
-		feesLambdaQueryWrapper.eq(DeclareCustomsFees::getSubmitPay, 1);
-		List<DeclareCustomsFees> feesList = feesMapper.selectList(feesLambdaQueryWrapper);
-		for (DeclareCustomsFees declareCustomsFees : feesList) {
-			declareCustomsFees.setSubmitPay(0);
-			feesMapper.updateById(declareCustomsFees);
 		}
 
-		//撤销
-		iCheckClient.deteleByBillId(declareCustoms.getId());
+		baseMapper.updateById(customs);
+
 		return customs;
 	}
 

+ 8 - 0
blade-service/blade-check/src/main/java/org/springblade/check/controller/AuditProecessController.java

@@ -477,6 +477,14 @@ public class AuditProecessController extends BladeController {
 		return R.success("删除成功");
 	}
 
+	@PostMapping("/deteleByBillIdOrGrade")
+	@ApiOperationSupport(order = 10)
+	@ApiOperation(value = "修改", notes = "传入billId,times")
+	public R deteleByBillIdOrGrade(@RequestParam("billId") Long billId, @RequestParam("grade") Integer times) {
+		auditProecessService.deteleByBillIdOrGrade(billId, times);
+		return R.success("删除成功");
+	}
+
 	@GetMapping("/getByOrderFiles")
 	@ApiOperationSupport(order = 11)
 	@ApiOperation(value = "查询", notes = "传入srcBillId")

+ 2 - 0
blade-service/blade-check/src/main/java/org/springblade/check/mapper/AuditProecessMapper.java

@@ -42,4 +42,6 @@ public interface AuditProecessMapper extends BaseMapper<AuditProecess> {
 	List<AuditProecessVO> selectAuditProecessPage(IPage page, AuditProecessVO auditProecess);
 
     void deteleByBillId(@Param("billId") Long billId);
+
+	void deteleByBillIdOrGrade(@Param("billId") Long billId, @Param("times") Integer times);
 }

+ 3 - 0
blade-service/blade-check/src/main/java/org/springblade/check/mapper/AuditProecessMapper.xml

@@ -27,6 +27,9 @@
         delete from audit_proecess where bill_id = #{billId}
     </delete>
 
+    <delete id="deteleByBillIdOrGrade">
+        delete from audit_proecess where bill_id = #{billId} and times = #{times}
+    </delete>
 
     <select id="selectAuditProecessPage" resultMap="auditProecessResultMap">
         select * from audit_proecess where is_deleted = 0

+ 2 - 0
blade-service/blade-check/src/main/java/org/springblade/check/service/IAuditProecessService.java

@@ -105,6 +105,8 @@ public interface IAuditProecessService extends IService<AuditProecess> {
 
     void deteleByBillId(Long billId);
 
+	void deteleByBillIdOrGrade(Long billId, Integer times);
+
 	/**
 	 * 箱管审批(吉永)买卖箱
 	 * @param auditProecess

+ 5 - 0
blade-service/blade-check/src/main/java/org/springblade/check/service/impl/AuditProecessServiceImpl.java

@@ -2856,6 +2856,11 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 	}
 
 	@Override
+	public void deteleByBillIdOrGrade(Long billId, Integer times) {
+		baseMapper.deteleByBillIdOrGrade(billId, times);
+	}
+
+	@Override
 	public void tradingBoxCheck(AuditProecess auditProecess) {
 		//查看最新操作记录,防止重复提交
 		AuditProecess proecessTemp = baseMapper.selectById(auditProecess.getId());

+ 27 - 0
blade-service/blade-client/src/main/java/org/springblade/client/school/controller/SchoolTeacherController.java

@@ -32,6 +32,7 @@ import javax.validation.Valid;
 
 import org.springblade.client.corps.excel.CorpsSupplierExcel;
 import org.springblade.client.entity.SchoolTeacherCause;
+import org.springblade.client.school.excel.SchoolQuitExcel;
 import org.springblade.client.school.excel.SchoolTeacherExcel;
 import org.springblade.client.school.service.ISchoolTeacherCauseService;
 import org.springblade.client.school.service.ISchoolTeacherService;
@@ -187,6 +188,7 @@ public class SchoolTeacherController extends BladeController {
 	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
 		return R.status(schoolTeacherService.removeByIds(Func.toLongList(ids)));
 	}
+
 	/**
 	 * 导入模板
 	 */
@@ -290,5 +292,30 @@ public class SchoolTeacherController extends BladeController {
 		return schoolTeacherService.calculateList(schoolTeacher);
 	}
 
+	/**
+	 * 导出职工离职状态模板
+	 */
+	@GetMapping("/export/quit")
+	@ApiOperationSupport(order = 12)
+	@ApiOperation(value = "导出职工离职状态模板")
+	public void quit(HttpServletResponse response){
+		List<SchoolQuitExcel> list = new ArrayList<SchoolQuitExcel>();
+		ExcelUtil.export(response, "导入模板-教职工离职资料", "导入模板-教职工离职资料", list, SchoolQuitExcel.class);
+	}
+
+	/**
+	 * 导入职工离职状态
+	 */
+	@PostMapping("/importQuit")
+	@ApiOperationSupport(order = 13)
+	@ApiOperation(value = "导入职工离职状态", notes = "传入excel")
+	public R importQuit(@RequestParam("file") MultipartFile file){
+		List<SchoolQuitExcel> excelList = ExcelUtil.read(file, SchoolQuitExcel.class);
+		if(CollectionUtils.isEmpty(excelList))
+		{
+			throw new SecurityException("数据不能为空");
+		}
+		return schoolTeacherService.importQuit(excelList,false);
+	}
 
 }

+ 34 - 0
blade-service/blade-client/src/main/java/org/springblade/client/school/excel/SchoolQuitExcel.java

@@ -0,0 +1,34 @@
+package org.springblade.client.school.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@ColumnWidth(35)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class SchoolQuitExcel implements Serializable {
+
+	/**
+	 * 姓名
+	 */
+	@ExcelProperty(value = "姓名(必填)")
+	private String cname;
+
+	/**
+	 * 身份证号
+	 */
+	@ExcelProperty(value = "身份证号(必填)")
+	private String idNumber;
+
+	/**
+	 * 状态
+	 */
+	@ExcelProperty(value = "在职状态(在职0 离职1)")
+	private Integer isDeleted;
+}

+ 1 - 0
blade-service/blade-client/src/main/java/org/springblade/client/school/mapper/SchoolConfigMapper.java

@@ -17,6 +17,7 @@
 package org.springblade.client.school.mapper;
 
 import org.springblade.client.entity.SchoolConfig;
+import org.springblade.client.entity.SchoolTeacher;
 import org.springblade.client.vo.SchoolConfigVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;

+ 2 - 0
blade-service/blade-client/src/main/java/org/springblade/client/school/mapper/SchoolTeacherMapper.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.client.school.mapper;
 
+import org.apache.ibatis.annotations.Param;
 import org.springblade.client.entity.SchoolTeacher;
 import org.springblade.client.vo.SchoolTeacherVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -39,4 +40,5 @@ public interface SchoolTeacherMapper extends BaseMapper<SchoolTeacher> {
 	 */
 	List<SchoolTeacherVO> selectSchoolTeacherPage(IPage page, SchoolTeacherVO schoolTeacher);
 
+	void updateByIsDeleted(@Param("schoolTeacher") SchoolTeacher schoolTeacher);
 }

+ 4 - 0
blade-service/blade-client/src/main/java/org/springblade/client/school/mapper/SchoolTeacherMapper.xml

@@ -93,4 +93,8 @@
         select * from basic_school_teacher where is_deleted = 0
     </select>
 
+    <update id="updateByIsDeleted">
+        update basic_school_teacher set is_deleted = #{schoolTeacher.isDeleted} where id = #{schoolTeacher.id}
+    </update>
+
 </mapper>

+ 8 - 0
blade-service/blade-client/src/main/java/org/springblade/client/school/service/ISchoolTeacherService.java

@@ -17,6 +17,7 @@
 package org.springblade.client.school.service;
 
 import org.springblade.client.entity.SchoolTeacher;
+import org.springblade.client.school.excel.SchoolQuitExcel;
 import org.springblade.client.school.excel.SchoolTeacherExcel;
 import org.springblade.client.vo.SchoolTeacherVO;
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -82,4 +83,11 @@ public interface ISchoolTeacherService extends IService<SchoolTeacher> {
 	 */
 	SchoolTeacher copyConfigMessage(SchoolTeacher schoolTeacher);
 
+	/**
+	 * 导入教职工离职信息
+	 * @param data
+	 * @param isCovered
+	 * @return
+	 */
+	R importQuit(List<SchoolQuitExcel> data, Boolean isCovered);
 }

+ 44 - 0
blade-service/blade-client/src/main/java/org/springblade/client/school/service/impl/SchoolTeacherServiceImpl.java

@@ -29,6 +29,7 @@ import org.springblade.client.entity.GoodsType;
 import org.springblade.client.entity.SchoolConfigItem;
 import org.springblade.client.entity.SchoolTeacher;
 import org.springblade.client.goods.excel.GoodsExcel;
+import org.springblade.client.school.excel.SchoolQuitExcel;
 import org.springblade.client.school.excel.SchoolTeacherExcel;
 import org.springblade.client.school.mapper.SchoolConfigItemMapper;
 import org.springblade.client.school.mapper.SchoolTeacherCauseMapper;
@@ -40,6 +41,7 @@ import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.DateUtil;
+import org.springblade.core.tool.utils.ObjectUtil;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springframework.transaction.annotation.Transactional;
@@ -777,4 +779,46 @@ public class SchoolTeacherServiceImpl extends ServiceImpl<SchoolTeacherMapper, S
 		}
 		return schoolTeacher;
 	}
+
+	@Override
+	@Transactional
+	public R importQuit(List<SchoolQuitExcel> data, Boolean isCovered) {
+		if (org.springframework.util.CollectionUtils.isEmpty(data)) {
+			throw new SecurityException("导入数据不能为空");
+		}
+		StringBuffer errMsg = new StringBuffer();
+		for (int i = 0; i < data.size(); i++) {
+			SchoolQuitExcel schoolQuitExcel = data.get(i);
+			if (StringUtils.isBlank(schoolQuitExcel.getIdNumber())) {
+				errMsg.append("第" + (i + 2) + "行,身份证号码为空,");
+				continue;
+			}
+			if (StringUtils.isBlank(schoolQuitExcel.getCname())) {
+				errMsg.append("第" + (i + 2) + "行,姓名为空,");
+				continue;
+			}
+			SchoolTeacher schoolTeacher = new SchoolTeacher();
+			BeanUtil.copy(schoolQuitExcel, schoolTeacher);
+
+			if (ObjectUtil.isNotEmpty(schoolTeacher.getIsDeleted())){
+				//根据身份证号查询教职工信息是否存在存在更新不存在新增
+				SchoolTeacher teacher = baseMapper.selectOne(new QueryWrapper<SchoolTeacher>().eq("id_number", schoolTeacher.getIdNumber()).eq("tenant_id", SecureUtil.getTenantId())
+				.eq("is_deleted", 0));
+				if (teacher == null) {
+					errMsg.append("第" + (i + 2) + "行,教职工信息不存在,");
+					continue;
+				} else {
+					teacher.setId(teacher.getId());
+					teacher.setIsDeleted(schoolTeacher.getIsDeleted());
+					teacher.setUpdateUser(SecureUtil.getUserId());
+					teacher.setUpdateTime(new Date());
+					baseMapper.updateByIsDeleted(teacher);
+				}
+			}
+		}
+		if (StringUtils.isNotBlank(errMsg)) {
+			return R.success("导入部分成功,未导入成功的有" + errMsg.toString());
+		}
+		return R.success("导入成功");
+	}
 }