Commit 2f269595 authored by 位宇华's avatar 位宇华

钱家营电--代码提交

parent 1ad81a23
package com.ruoyi.system.controller; package com.ruoyi.system.controller;
import com.ruoyi.system.mapper.SalaryMapper; import com.ruoyi.system.mapper.SalaryMapper;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
...@@ -80,4 +81,40 @@ public class ConfigSaveController { ...@@ -80,4 +81,40 @@ public class ConfigSaveController {
map.forEach((k,v)-> salaryMapper.insertSourceMap(k,v)); map.forEach((k,v)-> salaryMapper.insertSourceMap(k,v));
} }
@PostMapping("/save/filter/str")
public void saveFilterStr() {
Map<String,Object> map = new HashMap<>();
map.put("洗煤厂","");
map.put("物资管理中心","");
map.put("煤管科","货车队");
map.put("机采科","");
map.put("工会","");
map.put("工业电光","办公大楼");
map.put("档案楼","");
map.put("井运区","");
map.put("准备队","");
map.put("救护队","");
map.put("地测科","");
map.put("信息科","");
map.put("教培科","");
map.put("后勤服务中心","职工食堂,车队");
map.put("通风区","");
map.put("文体中心","");
map.put("机电科井上部位","");
map.put("瓦斯区","");
map.put("皮带区井上部位","");
map.put("生产压风","");
map.put("开拓延伸","");
map.put("保卫部","");
map.put("采掘小库","");
map.put("煤质科","");
map.put("综合办","宾馆");
map.put("设备科","");
map.put("唐钱社区电量","");
map.put("经贸公司","");
map.put("开大集团","");
map.forEach((k,v)-> salaryMapper.saveDept(k,v));
}
} }
package com.ruoyi.system.mapper; package com.ruoyi.system.mapper;
import com.ruoyi.system.model.power.FilterModel;
import com.ruoyi.system.model.power.PowerConvertSourceModel; import com.ruoyi.system.model.power.PowerConvertSourceModel;
import com.ruoyi.system.model.power.PowerSourceModel; import com.ruoyi.system.model.power.PowerSourceModel;
import com.ruoyi.system.model.power.dao.PowerClassificationQueryDao; import com.ruoyi.system.model.power.dao.PowerClassificationQueryDao;
...@@ -35,4 +36,6 @@ public interface PowerDisplayMapper { ...@@ -35,4 +36,6 @@ public interface PowerDisplayMapper {
void deleteRepeat(@Param("month") String month,@Param("minId") String minId); void deleteRepeat(@Param("month") String month,@Param("minId") String minId);
List<PowerConvertSourceModel> selectConvertSource(@Param("number") String number); List<PowerConvertSourceModel> selectConvertSource(@Param("number") String number);
List<FilterModel> selectExist(@Param("minId") String minId);
} }
...@@ -40,4 +40,6 @@ public interface SalaryMapper { ...@@ -40,4 +40,6 @@ public interface SalaryMapper {
List<ConfigModel> getConfig(); List<ConfigModel> getConfig();
void insertSourceMap(@Param("k") String k, @Param("v") Object v); void insertSourceMap(@Param("k") String k, @Param("v") Object v);
void saveDept(@Param("k") String k, @Param("v") Object v);
} }
package com.ruoyi.system.model.power;
import java.io.Serializable;
public class FilterModel implements Serializable {
private String dept;
private String secondDept;
public String getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
}
public String getSecondDept() {
return secondDept;
}
public void setSecondDept(String secondDept) {
this.secondDept = secondDept;
}
}
package com.ruoyi.system.model.power;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
public class PowerCalModel implements Serializable {
private String keyName;
private List<BigDecimal> bigDecimalList;
public String getKeyName() {
return keyName;
}
public void setKeyName(String keyName) {
this.keyName = keyName;
}
public List<BigDecimal> getBigDecimalList() {
return bigDecimalList;
}
public void setBigDecimalList(List<BigDecimal> bigDecimalList) {
this.bigDecimalList = bigDecimalList;
}
}
...@@ -36,12 +36,11 @@ public class ImportExpenseSourceServiceImpl implements ImportExpenseSourceServic ...@@ -36,12 +36,11 @@ public class ImportExpenseSourceServiceImpl implements ImportExpenseSourceServic
@Override @Override
@SneakyThrows @SneakyThrows
public AjaxResult save(MultipartFile multipartFile) { public AjaxResult save(MultipartFile multipartFile) {
List<PowerImportSourceModel> powerImportSourceModelList = EasyExcelFactory.read(multipartFile.getInputStream(), PowerImportSourceModel.class, new ExcelListener<>()).sheet("Sheet3").headRowNumber(1).doReadSync(); List<PowerImportSourceModel> powerImportSourceModelList = EasyExcelFactory.read(multipartFile.getInputStream(), PowerImportSourceModel.class, new ExcelListener<>()).sheet("Sheet4").headRowNumber(1).doReadSync();
powerImportSourceModelList.forEach(v->{ powerImportSourceModelList.forEach(v->{
v.setClassificationName(v.getClassificationName().replaceAll(StringUtils.SPACE,StringUtils.EMPTY)); v.setClassificationName(v.getClassificationName().replaceAll(StringUtils.SPACE,StringUtils.EMPTY));
v.setLevelOneClassification(v.getLevelOneClassification().replaceAll(StringUtils.SPACE,StringUtils.EMPTY)); v.setLevelOneClassification(v.getLevelOneClassification().replaceAll(StringUtils.SPACE,StringUtils.EMPTY));
}); });
System.err.println(JSON.toJSONString(powerImportSourceModelList));
importExpenseSourceMapper.saveSource(powerImportSourceModelList); importExpenseSourceMapper.saveSource(powerImportSourceModelList);
return AjaxResult.success(); return AjaxResult.success();
} }
......
package com.ruoyi.system.service.impl; package com.ruoyi.system.service.impl;
import com.alibaba.fastjson.JSON;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.system.mapper.PowerDisplayMapper; import com.ruoyi.system.mapper.PowerDisplayMapper;
import com.ruoyi.system.model.newrule.NewRuleRequestModel; import com.ruoyi.system.model.newrule.NewRuleRequestModel;
import com.ruoyi.system.model.power.FilterModel;
import com.ruoyi.system.model.power.PowerConvertSourceModel; import com.ruoyi.system.model.power.PowerConvertSourceModel;
import com.ruoyi.system.model.power.PowerSourceModel; import com.ruoyi.system.model.power.PowerSourceModel;
import com.ruoyi.system.model.power.SourceIndfoModel; import com.ruoyi.system.model.power.SourceIndfoModel;
...@@ -267,27 +267,103 @@ public class PowerDisplayServiceImpl implements PowerDisplayService { ...@@ -267,27 +267,103 @@ public class PowerDisplayServiceImpl implements PowerDisplayService {
public AjaxResult save(List<NewRuleRequestModel> newRuleRequestModelList) { public AjaxResult save(List<NewRuleRequestModel> newRuleRequestModelList) {
if (!CollectionUtils.isEmpty(newRuleRequestModelList)) { if (!CollectionUtils.isEmpty(newRuleRequestModelList)) {
String mineid = newRuleRequestModelList.get(0).getMineid(); String mineid = newRuleRequestModelList.get(0).getMineid();
//吕家坨
if (StringUtils.equals("011702", mineid)) { if (StringUtils.equals("011702", mineid)) {
saveLJTPowerData(newRuleRequestModelList); saveLJTPowerData(newRuleRequestModelList);
} }
//范各庄
if (StringUtils.equals("011701", mineid)) { if (StringUtils.equals("011701", mineid)) {
saveFGZPowerData(newRuleRequestModelList); saveFGZPowerData(newRuleRequestModelList);
} }
//唐山矿
if (StringUtils.equals("010101", mineid)) { if (StringUtils.equals("010101", mineid)) {
saveTsPowerData(newRuleRequestModelList); saveTsPowerData(newRuleRequestModelList);
} }
//东欢坨
if (StringUtils.equals("010102", mineid)) { if (StringUtils.equals("010102", mineid)) {
saveDHTPowerData(newRuleRequestModelList); saveDHTPowerData(newRuleRequestModelList);
} }
//中润
if (StringUtils.equals("011706", mineid)) { if (StringUtils.equals("011706", mineid)) {
saveZRPowerData(newRuleRequestModelList); saveZRPowerData(newRuleRequestModelList);
} }
//中浩
if (StringUtils.equals("011708", mineid)) {
saveZHPowerData(newRuleRequestModelList);
}
//钱家营
if (StringUtils.equals("010105", mineid)) {
saveQJYPowerData(newRuleRequestModelList);
}
} else { } else {
return AjaxResult.error(); return AjaxResult.error();
} }
return AjaxResult.success(); return AjaxResult.success();
} }
/**
* 钱家营
*
* @param newRuleRequestModelList
*/
private void saveQJYPowerData(List<NewRuleRequestModel> newRuleRequestModelList) {
String month = newRuleRequestModelList.get(0).getWageMonth();
String minId = newRuleRequestModelList.get(0).getMineid();
ReplaceBlank(newRuleRequestModelList);
List<PowerDisplayDto> displayDtoList = this.getPowerDisplayDtoList(newRuleRequestModelList);
List<String> stringList = new ArrayList<>();
List<FilterModel> filterModelList = powerDisplayMapper.selectExist(minId);
filterModelList.forEach(v -> {
stringList.add(v.getDept());
if (StringUtils.isNotBlank(v.getSecondDept())) {
stringList.add(v.getSecondDept());
}
if (StringUtils.contains(v.getSecondDept(), ",")) {
stringList.addAll(Arrays.asList(v.getSecondDept().split(",")));
}
stringList.removeIf(value -> StringUtils.contains(value, ","));
});
List<PowerDisplayDto> disposeList = displayDtoList.stream().filter(v -> stringList.stream().anyMatch(value -> StringUtils.equals(v.getClassificationName(), value))).collect(Collectors.toList());
String[] array = new String[]{"煤管科", "货车队", "后勤服务中心", "职工食堂", "车队", "工业电光", "办公大楼", "综合办", "宾馆"};
List<PowerDisplayDto> collect = disposeList.stream().filter(v -> StringUtils.equalsAny(v.getClassificationName(), array)).collect(Collectors.toList());
//数据操作
disposeData(collect);
disposeList.forEach(v -> v.setElectricityTotal(getAddValue(v)));
getPowerSource(month,minId,disposeList);
}
/**
* 中浩
*
* @param newRuleRequestModelList
*/
private void saveZHPowerData(List<NewRuleRequestModel> newRuleRequestModelList) {
String month = newRuleRequestModelList.get(0).getWageMonth();
String minId = newRuleRequestModelList.get(0).getMineid();
ReplaceBlank(newRuleRequestModelList);
List<PowerDisplayDto> displayDtoList = this.getPowerDisplayDtoList(newRuleRequestModelList);
List<PowerSourceModel> powerSourceModelList = powerDisplayMapper.selectSource("011708");
List<PowerDisplayDto> calculateCollect = displayDtoList.stream().filter(v -> powerSourceModelList.stream().noneMatch(powerSourceModel -> StringUtils.equals(v.getClassificationName(), powerSourceModel.getClassificationName()))).collect(Collectors.toList());
List<PowerDisplayDto> dataCollect = displayDtoList.stream().filter(v -> powerSourceModelList.stream().anyMatch(powerSourceModel -> StringUtils.equals(v.getClassificationName(), powerSourceModel.getClassificationName()))).collect(Collectors.toList());
List<PowerDisplayDto> collect = calculateCollect.stream().filter(v -> StringUtils.containsAny(v.getClassificationName(), "供电", "转供电")).collect(Collectors.toList());
collect.forEach(v -> v.setClassificationName(StringUtils.substringAfterLast(v.getClassificationName(), ".")));
Optional<PowerDisplayDto> powerSupplyOptional = collect.stream().filter(v -> StringUtils.equals("供电", v.getClassificationName())).findFirst();
BigDecimal powerSupply = powerSupplyOptional.map(powerDisplayDto -> new BigDecimal(powerDisplayDto.getElectricityTotal()).divide(new BigDecimal(powerDisplayDto.getPowerTotal()), 4, RoundingMode.HALF_UP)).orElse(null);
Optional<PowerDisplayDto> transferPowerSupplyOptional = collect.stream().filter(v -> StringUtils.equals("外供电", v.getClassificationName())).findFirst();
BigDecimal transferPowerSupply = transferPowerSupplyOptional.map(powerDisplayDto -> new BigDecimal(powerDisplayDto.getElectricityTotal()).divide(new BigDecimal(powerDisplayDto.getPowerTotal()), 4, RoundingMode.HALF_UP)).orElse(null);
List<PowerDisplayDto> transferPowerCollect = dataCollect.stream().filter(v -> StringUtils.equals("外购电量", v.getClassificationName())).collect(Collectors.toList());
List<PowerDisplayDto> powerSupplyCollect = dataCollect.stream().filter(v -> !StringUtils.equals("外购电量", v.getClassificationName())).collect(Collectors.toList());
transferPowerCollect.forEach(v -> v.setElectricityTotal(String.valueOf(new BigDecimal(v.getPowerTotal()).multiply(transferPowerSupply))));
powerSupplyCollect.forEach(v -> v.setElectricityTotal(String.valueOf(new BigDecimal(v.getPowerTotal()).multiply(powerSupply))));
List<PowerDisplayDto> finalPowerDisplayDtoList = new ArrayList<>();
finalPowerDisplayDtoList.addAll(transferPowerCollect);
finalPowerDisplayDtoList.addAll(powerSupplyCollect);
List<PowerDisplayDto> powerDisplayDtoList = groupData(finalPowerDisplayDtoList);
getPowerSource(month, minId, powerDisplayDtoList);
}
/** /**
* 中润 * 中润
* *
...@@ -323,7 +399,7 @@ public class PowerDisplayServiceImpl implements PowerDisplayService { ...@@ -323,7 +399,7 @@ public class PowerDisplayServiceImpl implements PowerDisplayService {
})).collect(Collectors.toList()); })).collect(Collectors.toList());
collect.forEach(v -> { collect.forEach(v -> {
if (!StringUtils.contains(v.getClassificationName(), "开滦")) { if (!StringUtils.contains(v.getClassificationName(), "开滦")) {
v.setClassificationName(v.getClassificationName().replaceAll(".*\\)", StringUtils.EMPTY).replaceAll(".*)", StringUtils.EMPTY).replaceAll("\\u3000",StringUtils.EMPTY)); v.setClassificationName(v.getClassificationName().replaceAll(".*\\)", StringUtils.EMPTY).replaceAll(".*)", StringUtils.EMPTY).replaceAll("\\u3000", StringUtils.EMPTY));
} else { } else {
v.setClassificationName(StringUtils.substringAfterLast(v.getClassificationName(), ".")); v.setClassificationName(StringUtils.substringAfterLast(v.getClassificationName(), "."));
} }
...@@ -393,6 +469,80 @@ public class PowerDisplayServiceImpl implements PowerDisplayService { ...@@ -393,6 +469,80 @@ public class PowerDisplayServiceImpl implements PowerDisplayService {
powerDisplayMapper.insert(collect); powerDisplayMapper.insert(collect);
} }
private void disposeData(List<PowerDisplayDto> collect) {
//煤管科
List<PowerDisplayDto> coalAdminCollect = collect.stream().filter(v -> StringUtils.equalsAny(v.getClassificationName(), "煤管科", "货车队")).collect(Collectors.toList());
collect.forEach(v -> {
if (StringUtils.equals("煤管科", v.getClassificationName())) {
v.setMotivation(getSubtrctValue(coalAdminCollect, "0"));
v.setLighting(getSubtrctValue(coalAdminCollect, "1"));
}
});
//后勤服务中心
List<PowerDisplayDto> logisticsList = collect.stream().filter(v -> StringUtils.equalsAny(v.getClassificationName(), "后勤服务中心", "职工食堂", "车队")).collect(Collectors.toList());
collect.forEach(v -> {
if (StringUtils.equals("后勤服务中心", v.getClassificationName())) {
v.setMotivation(getSubtrctValue(logisticsList, "0"));
v.setLighting(getSubtrctValue(logisticsList, "1"));
}
});
//工业电光
List<PowerDisplayDto> industryCollect = collect.stream().filter(v -> StringUtils.equalsAny(v.getClassificationName(), "工业电光", "办公大楼")).collect(Collectors.toList());
collect.forEach(v -> {
if (StringUtils.equals("工业电光", v.getClassificationName())) {
v.setMotivation(getSubtrctValue(industryCollect, "0"));
v.setLighting(getSubtrctValue(industryCollect, "1"));
}
});
//综合办
List<PowerDisplayDto> compositeCollect = collect.stream().filter(v -> StringUtils.equalsAny(v.getClassificationName(), "综合办", "宾馆")).collect(Collectors.toList());
collect.forEach(v -> {
if (StringUtils.equals("综合办", v.getClassificationName())) {
v.setMotivation(getSubtrctValue(compositeCollect, "0"));
v.setLighting(getSubtrctValue(compositeCollect, "1"));
}
});
}
private String getSubtrctValue(List<PowerDisplayDto> coalAdminCollect, String str) {
BigDecimal difference = null;
if (StringUtils.equals("0", str)) {
List<BigDecimal> collect = coalAdminCollect.stream().map(v -> StringUtils.isBlank(v.getMotivation()) ? new BigDecimal(0) : new BigDecimal(v.getMotivation())).sorted(Comparator.reverseOrder()).collect(Collectors.toList());
difference = getBigDecimalValue(collect);
}
if (StringUtils.equals("1", str)) {
List<BigDecimal> collect = coalAdminCollect.stream().map(v -> StringUtils.isBlank(v.getLighting()) ? new BigDecimal(0) : new BigDecimal(v.getLighting())).sorted(Comparator.reverseOrder()).collect(Collectors.toList());
difference = getBigDecimalValue(collect);
}
assert difference != null;
return String.valueOf(difference.abs());
}
private BigDecimal getBigDecimalValue(List<BigDecimal> collect) {
BigDecimal difference;
BigDecimal maxValue = collect.stream().reduce(BigDecimal.ZERO, BigDecimal::max);
List<BigDecimal> otherDataCollect = collect.stream().skip(1).collect(Collectors.toList());
if (CollectionUtils.isEmpty(otherDataCollect)) {
difference = maxValue.subtract(new BigDecimal(0));
} else {
difference = maxValue.subtract(otherDataCollect.stream().reduce(BigDecimal.ZERO, BigDecimal::add));
}
return difference;
}
private String getAddValue(PowerDisplayDto powerDisplayDto) {
BigDecimal motivation = StringUtils.isBlank(powerDisplayDto.getMotivation()) ? new BigDecimal(0) : new BigDecimal(powerDisplayDto.getMotivation());
BigDecimal lighting = StringUtils.isBlank(powerDisplayDto.getLighting()) ? new BigDecimal(0) : new BigDecimal(powerDisplayDto.getLighting());
BigDecimal powerTip = StringUtils.isBlank(powerDisplayDto.getPowerTip()) ? new BigDecimal(0) : new BigDecimal(powerDisplayDto.getPowerTip());
BigDecimal powerPeak = StringUtils.isBlank(powerDisplayDto.getPowerPeak()) ? new BigDecimal(0) : new BigDecimal(powerDisplayDto.getPowerPeak());
BigDecimal powerFlat = StringUtils.isBlank(powerDisplayDto.getPowerFlat()) ? new BigDecimal(0) : new BigDecimal(powerDisplayDto.getPowerFlat());
BigDecimal powerValley = StringUtils.isBlank(powerDisplayDto.getPowerValley()) ? new BigDecimal(0) : new BigDecimal(powerDisplayDto.getPowerValley());
List<BigDecimal> bigDecimalList = Arrays.asList(motivation, lighting, powerTip, powerPeak, powerFlat, powerValley);
return String.valueOf(bigDecimalList.stream().reduce(BigDecimal.ZERO, BigDecimal::add));
}
private void getPowerSource(String month, String minId, List<PowerDisplayDto> powerDisplayDtoList) { private void getPowerSource(String month, String minId, List<PowerDisplayDto> powerDisplayDtoList) {
List<PowerSourceModel> powerSourceModelList = powerDisplayMapper.selectSource(minId); List<PowerSourceModel> powerSourceModelList = powerDisplayMapper.selectSource(minId);
powerDisplayDtoList.forEach(v -> powerSourceModelList.forEach(source -> { powerDisplayDtoList.forEach(v -> powerSourceModelList.forEach(source -> {
......
...@@ -124,5 +124,10 @@ ...@@ -124,5 +124,10 @@
from power_source_convert from power_source_convert
where org_code = #{number} where org_code = #{number}
</select> </select>
<select id="selectExist" resultType="com.ruoyi.system.model.power.FilterModel">
select dept as dept,second_dept as secondDept
from power_filter_table
where org_code = #{minId}
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -207,9 +207,14 @@ ...@@ -207,9 +207,14 @@
INSERT INTO power_source_convert (need_convert_source, convert_source,org_code) INSERT INTO power_source_convert (need_convert_source, convert_source,org_code)
values (#{k}, #{v},'011701') values (#{k}, #{v},'011701')
</insert> </insert>
<select id="getConfig" resultType="com.ruoyi.system.model.salary.ConfigModel"> <select id="getConfig" resultType="com.ruoyi.system.model.salary.ConfigModel">
select key_name as keyName, select key_name as keyName,
col_name as colName col_name as colName
from salary_col_config from salary_col_config
</select> </select>
<insert id="saveDept">
INSERT INTO power_filter_table (dept, second_dept,org_code)
values (#{k}, #{v},'010105')
</insert>
</mapper> </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