Commit 556a5e9d authored by 位宇华's avatar 位宇华

林西矿工资代码提交

parent 29960b05
package com.ruoyi.system.constant;
public class CoalConstant {
public final static String TS_MINE = "010101";
public final static String LX_MINE = "011704";
}
......@@ -3,7 +3,6 @@ package com.ruoyi.system.listener;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.fastjson.JSON;
import com.ruoyi.system.model.salary.LxSalaryModel;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
......
package com.ruoyi.system.listener;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.ruoyi.system.model.salary.LxInsuranceModel;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.List;
public class LxInsuranceListener<T> extends AnalysisEventListener<T> {
private final static Logger logger = LoggerFactory.getLogger(LxInsuranceListener.class);
List<LxInsuranceModel> lxInsuranceModels = new ArrayList<>();
private int endRow;
@Override
public void invoke(T t, AnalysisContext analysisContext) {
LxInsuranceModel lxInsuranceModel = (LxInsuranceModel) t;
if (StringUtils.equals("小计", lxInsuranceModel.getOrg())) {
endRow = analysisContext.getCurrentRowNum();
}
int count = analysisContext.getCurrentRowNum();
if (endRow == 0 || (endRow == count)) {
lxInsuranceModels.add(lxInsuranceModel);
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
logger.info("解析完成!");
}
public List<LxInsuranceModel> getLxInsuranceModels() {
return lxInsuranceModels;
}
}
......@@ -6,11 +6,16 @@ import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface SalaryMapper {
/**
* 唐山矿
*
* @param salaryExcelModelList
*/
void save(@Param("salaryExcelModelList") List<SalaryExcelModel> salaryExcelModelList);
void delete(@Param("salaryDate") String salaryDate, @Param("code") String code);
List<SalaryExcelModel> querySalarySheet(@Param("salaryDate") String salaryDate, @Param("code") String code);
void updateEmpty(@Param("empty") String empty, @Param("salaryDate") String salaryDate, @Param("code") String code);
List<SalaryExcelModel> queryInsuranceSheet(@Param("salaryDate") String salaryDate, @Param("code") String code);
void updateInsurance(@Param("v") SalaryExcelModel v);
}
package com.ruoyi.system.model.salary;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import java.io.Serializable;
@ExcelIgnoreUnannotated
public class LxInsuranceModel implements Serializable {
@ExcelProperty(value = "部门名称")
private String org;
private String personCount;
@ExcelProperty(value = "基本养老保险")
private String oldInsurance;
@ExcelProperty(value = "基本医疗保险")
private String medicalInsurance;
@ExcelProperty(value = "补充医疗保险")
private String supplyMedicalInsurance;
@ExcelProperty(value = "失业保险")
private String unemploymentInsurance;
@ExcelProperty(value = "工伤保险")
private String injuryInsurance;
public String getOrg() {
return org;
}
public void setOrg(String org) {
this.org = org;
}
public String getPersonCount() {
return personCount;
}
public void setPersonCount(String personCount) {
this.personCount = personCount;
}
public String getOldInsurance() {
return oldInsurance;
}
public void setOldInsurance(String oldInsurance) {
this.oldInsurance = oldInsurance;
}
public String getMedicalInsurance() {
return medicalInsurance;
}
public void setMedicalInsurance(String medicalInsurance) {
this.medicalInsurance = medicalInsurance;
}
public String getSupplyMedicalInsurance() {
return supplyMedicalInsurance;
}
public void setSupplyMedicalInsurance(String supplyMedicalInsurance) {
this.supplyMedicalInsurance = supplyMedicalInsurance;
}
public String getUnemploymentInsurance() {
return unemploymentInsurance;
}
public void setUnemploymentInsurance(String unemploymentInsurance) {
this.unemploymentInsurance = unemploymentInsurance;
}
public String getInjuryInsurance() {
return injuryInsurance;
}
public void setInjuryInsurance(String injuryInsurance) {
this.injuryInsurance = injuryInsurance;
}
}
......@@ -31,6 +31,8 @@ public class SalaryExcelModel implements Serializable {
//年金
@ExcelProperty(value = "年金")
private String annuity;
//一次性补缴的补充医疗保险(按上年度0.5%)
private String singleSupplyMedicalInsurance;
//基本医疗保险
@ExcelProperty(value = "基本医疗保险")
private String medicalInsurance;
......@@ -312,4 +314,12 @@ public class SalaryExcelModel implements Serializable {
public void setSalaryDate(String salaryDate) {
this.salaryDate = salaryDate;
}
public String getSingleSupplyMedicalInsurance() {
return singleSupplyMedicalInsurance;
}
public void setSingleSupplyMedicalInsurance(String singleSupplyMedicalInsurance) {
this.singleSupplyMedicalInsurance = singleSupplyMedicalInsurance;
}
}
......@@ -2,19 +2,24 @@ package com.ruoyi.system.service.impl;
import com.alibaba.excel.EasyExcel;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.system.constant.CoalConstant;
import com.ruoyi.system.listener.LxExcelListener;
import com.ruoyi.system.listener.LxInsuranceListener;
import com.ruoyi.system.mapper.SalaryMapper;
import com.ruoyi.system.model.salary.LxInsuranceModel;
import com.ruoyi.system.model.salary.LxSalaryModel;
import com.ruoyi.system.model.salary.SalaryExcelModel;
import com.ruoyi.system.service.LxSalaryService;
import com.ruoyi.system.support.LxSupport;
import lombok.SneakyThrows;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
@Service
......@@ -28,6 +33,7 @@ public class LxSalaryServiceImpl implements LxSalaryService {
@Override
@SneakyThrows
@Transactional
public AjaxResult lxSave(MultipartFile multipartFile, String salaryDate) {
String originalFilename = multipartFile.getOriginalFilename();
InputStream inputStream = multipartFile.getInputStream();
......@@ -36,34 +42,46 @@ public class LxSalaryServiceImpl implements LxSalaryService {
LxExcelListener<LxSalaryModel> lxExcelListener = new LxExcelListener<>();
EasyExcel.read(inputStream, LxSalaryModel.class, lxExcelListener).sheet(1).headRowNumber(2).doRead();
List<LxSalaryModel> lxSalaryModelList = lxExcelListener.getLxSalaryModelList();
List<SalaryExcelModel> salaryExcelModelList = getSalaryExcelModelList(lxSalaryModelList).stream().peek(v->{
v.setBelongToCoal("011704");
List<SalaryExcelModel> salaryExcelModelList = LxSupport.getSalaryExcelModelList(lxSalaryModelList).stream().map(v -> {
v.setBelongToCoal(CoalConstant.LX_MINE);
v.setSalaryDate(salaryDate);
}).collect(Collectors.toList());
salaryMapper.save(salaryExcelModelList);
v.setSourceExpenses(LxSupport.CHANNEL_MAP.get(v.getOrg()));
return v;
}).filter(v -> !StringUtils.equalsAny(v.getOrg(), "小计", "总计", "合计")).collect(Collectors.toList());
//查询是否已经导入保险表
List<SalaryExcelModel> list = salaryMapper.queryInsuranceSheet(salaryDate, CoalConstant.LX_MINE);
if (CollectionUtils.isEmpty(list)) {
salaryMapper.save(salaryExcelModelList);
} else {
salaryMapper.updateEmpty(StringUtils.EMPTY, salaryDate, CoalConstant.LX_MINE);
List<SalaryExcelModel> salaryExcelModels = LxSupport.getSalaryExcelModels(list, salaryExcelModelList, salaryDate);
salaryExcelModels.forEach(salaryMapper::updateInsurance);
}
}
//传入社会保险缴费表
if(StringUtils.equals("保险",originalFilename)){
if (StringUtils.contains(originalFilename, "保险")) {
LxInsuranceListener<LxInsuranceModel> lxInsuranceListener = new LxInsuranceListener<>();
EasyExcel.read(inputStream, LxInsuranceModel.class, lxInsuranceListener).sheet(0).headRowNumber(2).doRead();
List<LxInsuranceModel> lxInsuranceModelList = lxInsuranceListener.getLxInsuranceModels();
List<SalaryExcelModel> salaryExcelModelList = LxSupport.getInsuranceList(lxInsuranceModelList).stream().map(v -> {
v.setSalaryDate(salaryDate);
v.setBelongToCoal(CoalConstant.LX_MINE);
v.setSourceExpenses(LxSupport.CHANNEL_MAP.get(v.getOrg()));
return v;
}).filter(v -> !StringUtils.equalsAny(v.getOrg(), "小计", "总计", "合计")).collect(Collectors.toList());
//查询是否已经导入工资表
List<SalaryExcelModel> list = salaryMapper.querySalarySheet(salaryDate, CoalConstant.LX_MINE);
if (CollectionUtils.isEmpty(list)) {
salaryMapper.save(salaryExcelModelList);
} else {
//重复上传先更新为空 再去插入
salaryMapper.updateEmpty(StringUtils.EMPTY, salaryDate, CoalConstant.LX_MINE);
List<SalaryExcelModel> salaryExcelModels = LxSupport.getSalaryExcelModels(salaryExcelModelList, list, salaryDate);
salaryExcelModels.forEach(salaryMapper::updateInsurance);
}
}
return AjaxResult.success("保存成功!");
}
private List<SalaryExcelModel> getSalaryExcelModelList(List<LxSalaryModel> lxSalaryModelList) {
List<SalaryExcelModel> salaryExcelModelList = new ArrayList<>();
for (LxSalaryModel lxSalaryModel : lxSalaryModelList) {
SalaryExcelModel salaryExcelModel = new SalaryExcelModel();
salaryExcelModel.setOrg(lxSalaryModel.getOrg());
salaryExcelModel.setPersonCount(lxSalaryModel.getPersonCount());
salaryExcelModel.setSumSalary(lxSalaryModel.getSumSalary());
salaryExcelModel.setLunch(lxSalaryModel.getLunch());
salaryExcelModel.setOneChild(lxSalaryModel.getOneChild());
salaryExcelModel.setHonorMoney(lxSalaryModel.getHonorMoney());
salaryExcelModel.setHeatPreventSubsidy(lxSalaryModel.getHeatPreventSubsidy());
salaryExcelModelList.add(salaryExcelModel);
}
return salaryExcelModelList;
}
}
......@@ -2,6 +2,7 @@ package com.ruoyi.system.service.impl;
import com.alibaba.excel.EasyExcel;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.system.constant.CoalConstant;
import com.ruoyi.system.listener.TsExcelListener;
import com.ruoyi.system.mapper.SalaryMapper;
import com.ruoyi.system.model.salary.SalaryExcelModel;
......@@ -39,13 +40,15 @@ public class TsSalarySaveServiceImpl implements TsSalarySaveService {
if (StringUtils.isNotBlank(project.getOrg())) {
project.setOrg(project.getOrg().replaceAll("[.、0-9()()]", StringUtils.EMPTY));
}
project.setBelongToCoal("010101");
project.setBelongToCoal(CoalConstant.TS_MINE);
project.setSalaryDate(salaryDate);
// project.setCreator(SecurityUtils.getLoginUser().getUsername());
// project.setModify(SecurityUtils.getLoginUser().getUsername());
return project;
}).collect(Collectors.toList());
List<SalaryExcelModel> list=salaryExcelModelList.stream().filter(v-> !COST_CHANNEL_SET.contains(v.getOrg())).filter(v->StringUtils.isNotBlank(v.getOrg())).collect(Collectors.toList());
List<SalaryExcelModel> list = salaryExcelModelList.stream().filter(v -> !COST_CHANNEL_SET.contains(v.getOrg())).filter(v -> StringUtils.isNotBlank(v.getOrg())).filter(v -> !StringUtils.equalsAny(v.getOrg(), "唐山矿合计", "汇总合计")).collect(Collectors.toList());
//如果重复导入先删除后增加
salaryMapper.delete(salaryDate, CoalConstant.TS_MINE);
salaryMapper.save(list);
return AjaxResult.success("保存成功!");
}
......
package com.ruoyi.system.support;
import com.ruoyi.system.constant.CoalConstant;
import com.ruoyi.system.model.salary.LxInsuranceModel;
import com.ruoyi.system.model.salary.LxSalaryModel;
import com.ruoyi.system.model.salary.SalaryExcelModel;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class LxSupport {
/**
* 林西矿费用渠道
*/
public final static Map<String, String> CHANNEL_MAP = new HashMap<>();
static {
CHANNEL_MAP.put("物管科", "原煤");
CHANNEL_MAP.put("生活后勤服务中心", "原煤");
CHANNEL_MAP.put("环保迁建科", "原煤");
CHANNEL_MAP.put("机电制造分公司", "原煤");
CHANNEL_MAP.put("洗煤厂", "基本生产洗煤");
CHANNEL_MAP.put("外借公司", "其他业务成本");
CHANNEL_MAP.put("机关", "管理费用");
CHANNEL_MAP.put("矿领导", "管理费用");
CHANNEL_MAP.put("培训中心", "管理费用");
CHANNEL_MAP.put("退休", "管理费用");
CHANNEL_MAP.put("煤管科", "销售费用");
CHANNEL_MAP.put("研发支出", "其他");
CHANNEL_MAP.put("离岗休息", "辞退福利");
CHANNEL_MAP.put("长病", "其他长期职工福利");
CHANNEL_MAP.put("长伤", "其他长期职工福利");
CHANNEL_MAP.put("综采一区", "基本生产原煤");
CHANNEL_MAP.put("综采二区", "基本生产原煤");
CHANNEL_MAP.put("掘进一区", "基本生产原煤");
CHANNEL_MAP.put("掘进二区", "基本生产原煤");
CHANNEL_MAP.put("掘进三区", "基本生产原煤");
CHANNEL_MAP.put("开拓区", "基本生产原煤");
CHANNEL_MAP.put("准备区", "基本生产原煤");
CHANNEL_MAP.put("皮带区", "基本生产原煤");
CHANNEL_MAP.put("通风区", "基本生产原煤");
CHANNEL_MAP.put("救护队", "基本生产原煤");
CHANNEL_MAP.put("井运区", "基本生产原煤");
CHANNEL_MAP.put("机电科", "基本生产原煤");
CHANNEL_MAP.put("机采科", "基本生产原煤");
CHANNEL_MAP.put("设备通讯科", "基本生产原煤");
CHANNEL_MAP.put("地测科", "基本生产原煤");
CHANNEL_MAP.put("保卫科", "基本生产原煤");
CHANNEL_MAP.put("水处理厂", "基本生产原煤");
}
public static List<SalaryExcelModel> getSalaryExcelModelList(List<LxSalaryModel> lxSalaryModelList) {
List<SalaryExcelModel> salaryExcelModelList = new ArrayList<>();
for (LxSalaryModel lxSalaryModel : lxSalaryModelList) {
SalaryExcelModel salaryExcelModel = new SalaryExcelModel();
salaryExcelModel.setOrg(lxSalaryModel.getOrg());
salaryExcelModel.setPersonCount(lxSalaryModel.getPersonCount());
salaryExcelModel.setSumSalary(lxSalaryModel.getSumSalary());
salaryExcelModel.setLunch(lxSalaryModel.getLunch());
salaryExcelModel.setOneChild(lxSalaryModel.getOneChild());
salaryExcelModel.setHonorMoney(lxSalaryModel.getHonorMoney());
salaryExcelModel.setHeatPreventSubsidy(lxSalaryModel.getHeatPreventSubsidy());
salaryExcelModelList.add(salaryExcelModel);
}
return salaryExcelModelList;
}
public static List<SalaryExcelModel> getInsuranceList(List<LxInsuranceModel> lxInsuranceModelList) {
List<SalaryExcelModel> salaryExcelModelList = new ArrayList<>();
for (LxInsuranceModel insuranceModel : lxInsuranceModelList) {
SalaryExcelModel salaryExcelModel = new SalaryExcelModel();
salaryExcelModel.setOrg(insuranceModel.getOrg());
salaryExcelModel.setPersonCount(insuranceModel.getPersonCount());
salaryExcelModel.setOldInsurance(insuranceModel.getOldInsurance());
salaryExcelModel.setMedicalInsurance(insuranceModel.getMedicalInsurance());
salaryExcelModel.setSupplyMedicalInsurance(insuranceModel.getSupplyMedicalInsurance());
salaryExcelModel.setUnemploymentInsurance(insuranceModel.getUnemploymentInsurance());
salaryExcelModel.setInjuryInsurance(insuranceModel.getInjuryInsurance());
salaryExcelModelList.add(salaryExcelModel);
}
return salaryExcelModelList;
}
public static List<SalaryExcelModel> getSalaryExcelModels(List<SalaryExcelModel> salaryExcelModelList, List<SalaryExcelModel> list, String salaryDate) {
List<SalaryExcelModel> salaryExcelModels = new ArrayList<>();
for (SalaryExcelModel salaryExcelModel : salaryExcelModelList) {
SalaryExcelModel model = new SalaryExcelModel();
for (SalaryExcelModel excelModel : list) {
if (StringUtils.equals(salaryExcelModel.getOrg(), excelModel.getOrg())) {
model.setOrg(excelModel.getOrg());
model.setSalaryDate(salaryDate);
model.setPersonCount(excelModel.getPersonCount());
model.setSumSalary(excelModel.getSumSalary());
model.setLunch(excelModel.getLunch());
model.setOneChild(excelModel.getOneChild());
model.setHonorMoney(excelModel.getHonorMoney());
model.setHeatPreventSubsidy(excelModel.getHeatPreventSubsidy());
model.setOldInsurance(salaryExcelModel.getOldInsurance());
model.setMedicalInsurance(salaryExcelModel.getMedicalInsurance());
model.setSupplyMedicalInsurance(salaryExcelModel.getSupplyMedicalInsurance());
model.setUnemploymentInsurance(salaryExcelModel.getUnemploymentInsurance());
model.setInjuryInsurance(salaryExcelModel.getInjuryInsurance());
model.setBelongToCoal(CoalConstant.LX_MINE);
}
}
salaryExcelModels.add(model);
}
return salaryExcelModels;
}
}
......@@ -12,7 +12,7 @@
VALUES
<foreach collection="salaryExcelModelList" item="item" index="index" separator=",">
(#{item.org},#{item.personCount},#{item.medicalSubsidy},
#{item.sumSalary},#{item.oldInsurance},#{item.annuity},#{item.supplyMedicalInsurance},
#{item.sumSalary},#{item.oldInsurance},#{item.annuity},#{item.singleSupplyMedicalInsurance},
#{item.medicalInsurance},#{item.supplyMedicalInsurance},#{item.birthInsurance},#{item.sourceExpenses},
#{item.unemploymentInsurance},#{item.injuryInsurance},#{item.companyHouseFund},#{item.houseFund},
#{item.laborUnionDues},#{item.edufFees},#{item.oneChild},#{item.longAccountInsurance},#{item.lunch},
......@@ -20,4 +20,65 @@
</foreach>
</insert>
<delete id="delete">
delete
from salary
where salary_date = #{salaryDate}
and belong_to_coal = #{code}
</delete>
<select id="querySalarySheet" resultType="com.ruoyi.system.model.salary.SalaryExcelModel">
select org as org,
person_count as personCount,
sum_salary as SumSalary,
one_child as oneChild,
lunch as lunch,
honor_money as honorMoney,
heat_prevent_subsidy as heatPreventSubsidy,
belong_to_coal as belongToCoal
from salary
where salary_date = #{salaryDate}
and belong_to_coal = #{code}
</select>
<update id="updateEmpty">
update salary
set old_insurance=#{empty},
medical_insurance=#{empty},
supply_medical_insurance=#{empty},
unemployment_insurance=#{empty},
injury_insurance=#{empty}
where salary_date = #{salaryDate}
and belong_to_coal = #{code}
</update>
<select id="queryInsuranceSheet" resultType="com.ruoyi.system.model.salary.SalaryExcelModel">
select org as org,
person_count as personCount,
old_insurance as oldInsurance,
medical_insurance as medicalInsurance,
supply_medical_insurance as supplyMedicalInsurance,
unemployment_insurance as unemploymentInsurance,
injury_insurance as injuryInsurance
from salary
where salary_date = #{salaryDate}
and belong_to_coal = #{code}
</select>
<update id="updateInsurance">
update salary
set supply_medical_insurance =#{v.supplyMedicalInsurance},
unemployment_insurance=#{v.unemploymentInsurance},
belong_to_coal=#{v.belongToCoal},
old_insurance=#{v.oldInsurance},
medical_insurance=#{v.medicalInsurance},
injury_insurance=#{v.injuryInsurance},
person_count=#{v.personCount},
lunch=#{v.lunch},
one_child=#{v.oneChild},
honor_money=#{v.honorMoney},
sum_salary=#{v.sumSalary},
heat_prevent_subsidy=#{v.heatPreventSubsidy}
where org = #{v.org}
and salary_date = #{v.salaryDate}
and belong_to_coal = #{v.belongToCoal}
</update>
</mapper>
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment