Commit 321b806f authored by 位宇华's avatar 位宇华

范各庄电--代码提交

parent d63a5e1e
......@@ -64,4 +64,20 @@ public class ConfigSaveController {
map.forEach((k,v)-> salaryMapper.insertMap(k,v));
}
@PostMapping("/test/source")
public void source() {
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.forEach((k,v)-> salaryMapper.insertSourceMap(k,v));
}
}
......@@ -26,4 +26,5 @@ public class ImportExpenseSourceController {
public AjaxResult powerSource(@RequestParam("multipartFile")MultipartFile multipartFile) {
return importExpenseSourceService.save(multipartFile);
}
}
package com.ruoyi.system.mapper;
import com.ruoyi.system.model.power.PowerConvertSourceModel;
import com.ruoyi.system.model.power.PowerSourceModel;
import com.ruoyi.system.model.power.dao.PowerClassificationQueryDao;
import com.ruoyi.system.model.power.dao.PowerControlDao;
......@@ -30,4 +31,8 @@ public interface PowerDisplayMapper {
List<ConfigModel> seletPowerConfig();
List<PowerSourceModel> selectSource(@Param("number") String number);
void deleteRepeat(@Param("month") String month,@Param("minId") String minId);
List<PowerConvertSourceModel> selectConvertSource(@Param("number") String number);
}
......@@ -38,4 +38,6 @@ public interface SalaryMapper {
void insertMap(@Param("k") String k, @Param("v") Object v);
List<ConfigModel> getConfig();
void insertSourceMap(@Param("k") String k, @Param("v") Object v);
}
package com.ruoyi.system.model.power;
import java.io.Serializable;
public class PowerConvertSourceModel implements Serializable {
private String needConvertSource;
private String convertSourceName;
private String orgCode;
public String getNeedConvertSource() {
return needConvertSource;
}
public void setNeedConvertSource(String needConvertSource) {
this.needConvertSource = needConvertSource;
}
public String getConvertSourceName() {
return convertSourceName;
}
public void setConvertSourceName(String convertSourceName) {
this.convertSourceName = convertSourceName;
}
public String getOrgCode() {
return orgCode;
}
public void setOrgCode(String orgCode) {
this.orgCode = orgCode;
}
}
package com.ruoyi.system.model.power;
import java.io.Serializable;
import java.math.BigDecimal;
public class SourceIndfoModel implements Serializable {
private String sourceName;
private String keyName;
private String valueName;
private BigDecimal unitPrice;
public String getKeyName() {
return keyName;
}
public void setKeyName(String keyName) {
this.keyName = keyName;
}
public String getValueName() {
return valueName;
}
public void setValueName(String valueName) {
this.valueName = valueName;
}
public String getSourceName() {
return sourceName;
}
public void setSourceName(String sourceName) {
this.sourceName = sourceName;
}
public BigDecimal getUnitPrice() {
return unitPrice;
}
public void setUnitPrice(BigDecimal unitPrice) {
this.unitPrice = unitPrice;
}
}
package com.ruoyi.system.service.impl;
import com.alibaba.fastjson.JSON;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.system.mapper.PowerDisplayMapper;
import com.ruoyi.system.model.newrule.NewRuleRequestModel;
import com.ruoyi.system.model.power.PowerConvertSourceModel;
import com.ruoyi.system.model.power.PowerSourceModel;
import com.ruoyi.system.model.power.SourceIndfoModel;
import com.ruoyi.system.model.power.dao.PowerClassificationQueryDao;
import com.ruoyi.system.model.power.dao.PowerControlDao;
import com.ruoyi.system.model.power.dto.PowerDisplayDto;
......@@ -22,6 +25,8 @@ import redis.clients.jedis.Jedis;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;
......@@ -37,6 +42,7 @@ public class PowerDisplayServiceImpl implements PowerDisplayService {
this.powerDisplayMapper = powerDisplayMapper;
}
@Override
public void peek(List<NewRuleRequestModel> electricityIntoTheParameterDtoDtoList) {
Jedis redis = new Jedis("192.168.111.226", 6379);
......@@ -129,10 +135,7 @@ public class PowerDisplayServiceImpl implements PowerDisplayService {
} else if (dongHuanTuo.contains(mindId)) {
saveOnTheLargeScreen = new SaveOnTheLargeScreenImpl(new DongHuanTuo());
} else if (qianJiaYing.contains(mindId)) {
List<NewRuleRequestModel> collect = electricityIntoTheParameterDtoDtoList
.parallelStream()
.filter(v -> v.getRow().contains("(尖)") || v.getRow().contains("(峰)") || v.getRow().contains("(平)") || v.getRow().contains("(谷)"))
.collect(Collectors.toList());
List<NewRuleRequestModel> collect = electricityIntoTheParameterDtoDtoList.parallelStream().filter(v -> v.getRow().contains("(尖)") || v.getRow().contains("(峰)") || v.getRow().contains("(平)") || v.getRow().contains("(谷)")).collect(Collectors.toList());
if (!collect.isEmpty()) {
PowerDisplayDto displayDto;
for (NewRuleRequestModel dto : collect) {
......@@ -222,10 +225,8 @@ public class PowerDisplayServiceImpl implements PowerDisplayService {
String electricityPricesForLighting = electricityIntoTheParameterDtoDtoList.parallelStream().filter(v -> v.getColoumn().equals("照明电价")).findFirst().get().getValue();
String powerTariff = electricityIntoTheParameterDtoDtoList.parallelStream().filter(v -> v.getColoumn().equals("动力电价")).findFirst().get().getValue();
list.parallelStream().forEach(v -> {
if ((v.getElectricityPriceFlat() != null && !v.getElectricityPriceFlat().isEmpty()) ||
(v.getElectricityPricePeak() != null && !v.getElectricityPricePeak().isEmpty()) ||
(v.getElectricityPriceTip() != null && !v.getElectricityPriceTip().isEmpty()) ||
(v.getElectricityPriceValley() != null && !v.getElectricityPriceValley().isEmpty())) return;
if ((v.getElectricityPriceFlat() != null && !v.getElectricityPriceFlat().isEmpty()) || (v.getElectricityPricePeak() != null && !v.getElectricityPricePeak().isEmpty()) || (v.getElectricityPriceTip() != null && !v.getElectricityPriceTip().isEmpty()) || (v.getElectricityPriceValley() != null && !v.getElectricityPriceValley().isEmpty()))
return;
if (v.getLevelThreeClassification().equals("动力用电")) {
v.setElectricityPriceValley(powerTariff);
v.setElectricityPriceFlat(powerTariff);
......@@ -249,8 +250,7 @@ public class PowerDisplayServiceImpl implements PowerDisplayService {
*/
private void method(List<PowerDisplayDto> list, List<NewRuleRequestModel> electricityIntoTheParameterDtoDtoList) {
for (PowerDisplayDto dto : list) {
if ((dto.getElectricityPriceFlat() == null || dto.getElectricityPriceFlat().isEmpty()) && (dto.getElectricityPricePeak() == null || dto.getElectricityPricePeak().isEmpty()) &&
(dto.getElectricityPriceTip() == null || dto.getElectricityPriceTip().isEmpty()) && (dto.getElectricityPriceValley() == null || dto.getElectricityPriceValley().isEmpty())) {
if ((dto.getElectricityPriceFlat() == null || dto.getElectricityPriceFlat().isEmpty()) && (dto.getElectricityPricePeak() == null || dto.getElectricityPricePeak().isEmpty()) && (dto.getElectricityPriceTip() == null || dto.getElectricityPriceTip().isEmpty()) && (dto.getElectricityPriceValley() == null || dto.getElectricityPriceValley().isEmpty())) {
Optional<NewRuleRequestModel> first = electricityIntoTheParameterDtoDtoList.parallelStream().filter(v -> (v.getRow().equals(dto.getLevelOneClassification()) || v.getRow().equals(dto.getLevelTwoClassification())) && v.getColoumn().equals("单价")).findFirst();
if (first.isPresent()) {
NewRuleRequestModel model = first.get();
......@@ -285,9 +285,13 @@ public class PowerDisplayServiceImpl implements PowerDisplayService {
* @param powerDisplayDtoList
*/
private void saveFGZPowerData(List<NewRuleRequestModel> powerDisplayDtoList) {
ReplaceBlank(powerDisplayDtoList);
List<PowerDisplayDto> displayDtoList = getPowerDisplayDtoList(powerDisplayDtoList);
List<PowerConvertSourceModel> sourceModelList = powerDisplayMapper.selectConvertSource("011701");
List<NewRuleRequestModel> sourceDataList = powerDisplayDtoList.stream().filter(v -> sourceModelList.stream().anyMatch(source -> StringUtils.equals(v.getRow(), source.getNeedConvertSource()))).collect(Collectors.toList());
List<NewRuleRequestModel> dataList = powerDisplayDtoList.stream().filter(v -> sourceModelList.stream().noneMatch(source -> StringUtils.equals(v.getRow(), source.getNeedConvertSource()))).collect(Collectors.toList());
List<PowerDisplayDto> displayDtoList = getPowerDisplayDtoList(dataList);
//计算部门电费
calculateEleFeeByDept(sourceDataList, displayDtoList, sourceModelList);
}
......@@ -297,29 +301,91 @@ public class PowerDisplayServiceImpl implements PowerDisplayService {
* @param powerDisplayDtoList
*/
private void saveLJTPowerData(List<NewRuleRequestModel> powerDisplayDtoList) {
String month = powerDisplayDtoList.get(0).getWageMonth();
String minId = powerDisplayDtoList.get(0).getMineid();
ReplaceBlank(powerDisplayDtoList);
List<PowerDisplayDto> displayDtoList = getPowerDisplayDtoList(powerDisplayDtoList);
disposeParamter(displayDtoList);
Map<String, List<PowerDisplayDto>> map = displayDtoList.stream().collect(Collectors.groupingBy(PowerDisplayDto::getClassificationName));
List<PowerDisplayDto> finalList = new ArrayList<>();
map.forEach((k, v) -> {
PowerDisplayDto pd = megreData(v);
PowerDisplayDto pd = meagreData(v);
finalList.add(pd);
});
List<PowerDisplayDto> collect = finalList.stream().filter(v -> !StringUtils.contains(v.getClassificationName(), "合计")).collect(Collectors.toList());
List<PowerSourceModel> powerSourceModelList = powerDisplayMapper.selectSource("011702");
collect = collect.stream().filter(v -> powerSourceModelList.stream().noneMatch(powerSourceModel -> StringUtils.equals(v.getClassificationName(), powerSourceModel.getLevelOneClassification()))).collect(Collectors.toList());
collect.forEach(v->{
collect.forEach(v -> {
for (PowerSourceModel powerSourceModel : powerSourceModelList) {
if (StringUtils.equals(v.getClassificationName(),powerSourceModel.getClassificationName())){
if (StringUtils.equals(v.getClassificationName(), powerSourceModel.getClassificationName())) {
v.setLevelOneClassification(powerSourceModel.getLevelOneClassification());
}
}
});
powerDisplayMapper.deleteRepeat(month, minId);
powerDisplayMapper.insert(collect);
}
private PowerDisplayDto megreData(List<PowerDisplayDto> powerDisplayDtoList) {
private void calculateEleFeeByDept(List<NewRuleRequestModel> sourceDataList, List<PowerDisplayDto> displayDtoList, List<PowerConvertSourceModel> sourceModelList) {
String month = sourceDataList.get(0).getWageMonth();
String mindId = sourceDataList.get(0).getMineid();
sourceDataList.forEach(v -> sourceModelList.forEach(s -> {
if (StringUtils.equals(v.getRow(), s.getNeedConvertSource())) {
v.setRow(s.getConvertSourceName());
}
}));
Map<String, List<NewRuleRequestModel>> map = sourceDataList.stream().collect(Collectors.groupingBy(NewRuleRequestModel::getRow));
List<SourceIndfoModel> sourceIndfoModelList = new ArrayList<>();
map.forEach((k, v) -> v.forEach(a -> {
SourceIndfoModel sourceIndfoModel = new SourceIndfoModel();
if (v.size() > 2) {
if (StringUtils.equals("电费总额", a.getColoumn())) {
sourceIndfoModel.setValueName(a.getValue());
sourceIndfoModel.setKeyName(a.getColoumn());
sourceIndfoModel.setSourceName(k);
sourceIndfoModelList.add(sourceIndfoModel);
}
if (StringUtils.equals("电量总额", a.getColoumn())) {
sourceIndfoModel.setValueName(a.getValue());
sourceIndfoModel.setKeyName(a.getColoumn());
sourceIndfoModel.setSourceName(k);
sourceIndfoModelList.add(sourceIndfoModel);
}
} else {
sourceIndfoModel.setValueName(a.getValue());
sourceIndfoModel.setKeyName(a.getColoumn());
sourceIndfoModel.setSourceName(k);
sourceIndfoModelList.add(sourceIndfoModel);
}
}));
Map<String, List<SourceIndfoModel>> stringListMap = sourceIndfoModelList.stream().collect(Collectors.groupingBy(SourceIndfoModel::getSourceName));
List<SourceIndfoModel> sourceIndfoModels = new ArrayList<>();
stringListMap.forEach((k, v) -> {
SourceIndfoModel sourceIndfoModel = new SourceIndfoModel();
List<BigDecimal> capacityList = v.stream().filter(a -> StringUtils.equals("电量总额", a.getKeyName())).map(a -> new BigDecimal(a.getValueName())).collect(Collectors.toList());
List<BigDecimal> feeList = v.stream().filter(a -> StringUtils.equals("电费总额", a.getKeyName())).map(a -> new BigDecimal(a.getValueName())).collect(Collectors.toList());
BigDecimal capacityReduce = capacityList.stream().reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal feeReduce = feeList.stream().reduce(BigDecimal.ZERO, BigDecimal::add);
sourceIndfoModel.setSourceName(k);
sourceIndfoModel.setUnitPrice(feeReduce.divide(capacityReduce, 2, RoundingMode.HALF_UP));
sourceIndfoModels.add(sourceIndfoModel);
});
List<PowerSourceModel> powerSourceModelList = powerDisplayMapper.selectSource("011701");
displayDtoList.forEach(v -> powerSourceModelList.forEach(s -> {
if (StringUtils.equals(v.getClassificationName(), s.getClassificationName())) {
v.setLevelOneClassification(s.getLevelOneClassification());
}
}));
displayDtoList.forEach(v -> sourceIndfoModels.forEach(s -> {
if (StringUtils.equals(v.getLevelOneClassification(), s.getSourceName())) {
v.setElectricityTotal(String.valueOf(new BigDecimal(v.getPowerTotal()).multiply(s.getUnitPrice()).setScale(2, RoundingMode.HALF_UP)));
}
}));
powerDisplayMapper.deleteRepeat(month, mindId);
powerDisplayMapper.insert(displayDtoList);
}
private PowerDisplayDto meagreData(List<PowerDisplayDto> powerDisplayDtoList) {
return powerDisplayDtoList.stream().collect(Collectors.collectingAndThen(Collectors.toMap(data -> data.getMindId() + data.getClassificationName() + data.getDateColumn(), data -> data, (existingData, newData) -> {
existingData.setPowerTotal(StringUtils.isEmpty(existingData.getPowerTotal()) ? newData.getPowerTotal() : existingData.getPowerTotal());
existingData.setPowerTip(StringUtils.isEmpty(existingData.getPowerTip()) ? newData.getPowerTip() : existingData.getPowerTip());
......@@ -352,7 +418,7 @@ public class PowerDisplayServiceImpl implements PowerDisplayService {
PowerDisplayDto powerDisplayDto = new PowerDisplayDto();
for (NewRuleRequestModel newRuleRequestModel : v) {
for (ConfigModel configModel : configModelList) {
if (StringUtils.contains(newRuleRequestModel.getColoumn(), configModel.getColName())) {
if (StringUtils.contains(configModel.getColName(), newRuleRequestModel.getColoumn())) {
Field field;
try {
field = PowerDisplayDto.class.getDeclaredField(configModel.getKeyName());
......@@ -379,12 +445,16 @@ public class PowerDisplayServiceImpl implements PowerDisplayService {
v.setRow(v.getRow().replaceAll(StringUtils.SPACE, StringUtils.EMPTY));
v.setValue(v.getValue().replaceAll(StringUtils.SPACE, StringUtils.EMPTY));
v.setColoumn(v.getColoumn().replaceAll(StringUtils.SPACE, StringUtils.EMPTY));
if (StringUtils.equalsAny(v.getMineid(), "011702", "011701")) {
v.setColoumn(v.getColoumn().replaceAll("\\(.*?\\)", StringUtils.EMPTY));
v.setColoumn(v.getColoumn().replaceAll("(.*?)", StringUtils.EMPTY));
}
});
}
private void disposeParamter(List<PowerDisplayDto> displayDtoList) {
for (PowerDisplayDto powerDisplayDto : displayDtoList) {
if (org.apache.commons.lang3.StringUtils.contains(powerDisplayDto.getClassificationName(), "其中")) {
if (StringUtils.contains(powerDisplayDto.getClassificationName(), "其中")) {
powerDisplayDto.setClassificationName(powerDisplayDto.getClassificationName().replaceAll("其中:", StringUtils.EMPTY));
}
powerDisplayDto.setClassificationName(powerDisplayDto.getClassificationName().replaceAll("[^\\u4e00-\\u9fa5]", StringUtils.EMPTY));
......
......@@ -111,4 +111,17 @@
from power_classification_query
where mind_id = #{number}
</select>
<delete id="deleteRepeat">
delete
from power_large_screen_display
where mind_id = #{minId}
and date_column = #{month}
</delete>
<select id="selectConvertSource" resultType="com.ruoyi.system.model.power.PowerConvertSourceModel">
select need_convert_source as needConvertSource,
convert_source as convertSourceName
from power_source_convert
where org_code = #{number}
</select>
</mapper>
\ No newline at end of file
......@@ -203,6 +203,10 @@
INSERT INTO power_col_config (key_name, col_name)
values (#{k}, #{v})
</insert>
<insert id="insertSourceMap">
INSERT INTO power_source_convert (need_convert_source, convert_source,org_code)
values (#{k}, #{v},'011701')
</insert>
<select id="getConfig" resultType="com.ruoyi.system.model.salary.ConfigModel">
select key_name as keyName,
col_name as colName
......
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