|
@@ -1,11 +1,13 @@
|
|
|
package com.jisco.dynamicweight.dynamicworkupdata.service.impl;
|
|
package com.jisco.dynamicweight.dynamicworkupdata.service.impl;
|
|
|
|
|
|
|
|
import cn.hutool.core.lang.Assert;
|
|
import cn.hutool.core.lang.Assert;
|
|
|
|
|
+import com.jisco.dynamicweight.dtcrb.mapper.DtcrbMapper;
|
|
|
import com.jisco.dynamicweight.dynamicbasebatchstation.mapper.DynamicBaseBatchStationMapper;
|
|
import com.jisco.dynamicweight.dynamicbasebatchstation.mapper.DynamicBaseBatchStationMapper;
|
|
|
import com.jisco.dynamicweight.dynamicbasebatchstation.model.DynamicBaseBatchStation;
|
|
import com.jisco.dynamicweight.dynamicbasebatchstation.model.DynamicBaseBatchStation;
|
|
|
import com.jisco.dynamicweight.dynamicbasereciever.model.DynamicBaseReciever;
|
|
import com.jisco.dynamicweight.dynamicbasereciever.model.DynamicBaseReciever;
|
|
|
import com.jisco.dynamicweight.dynamicworkdata.model.DynamicWorkData;
|
|
import com.jisco.dynamicweight.dynamicworkdata.model.DynamicWorkData;
|
|
|
import com.jisco.dynamicweight.dynamicworkdata.service.IDynamicWorkDataService;
|
|
import com.jisco.dynamicweight.dynamicworkdata.service.IDynamicWorkDataService;
|
|
|
|
|
+import com.jisco.dynamicweight.dynamicworkupdata.dto.CalNewCokeDto;
|
|
|
import com.jisco.dynamicweight.dynamicworkupdata.dto.CokeComputeDto;
|
|
import com.jisco.dynamicweight.dynamicworkupdata.dto.CokeComputeDto;
|
|
|
import com.jisco.dynamicweight.dynamicworkupdata.dto.InbatchDto;
|
|
import com.jisco.dynamicweight.dynamicworkupdata.dto.InbatchDto;
|
|
|
import com.jisco.dynamicweight.dynamicworkupdata.dto.ReturnedDustDto;
|
|
import com.jisco.dynamicweight.dynamicworkupdata.dto.ReturnedDustDto;
|
|
@@ -19,6 +21,9 @@ import com.steerinfo.baseinfo.combaseinfo.model.ComBaseInfo;
|
|
|
import com.steerinfo.baseinfo.combaseinfo.service.IComBaseInfoService;
|
|
import com.steerinfo.baseinfo.combaseinfo.service.IComBaseInfoService;
|
|
|
import com.steerinfo.framework.mapper.IBaseMapper;
|
|
import com.steerinfo.framework.mapper.IBaseMapper;
|
|
|
import com.steerinfo.framework.service.impl.BaseServiceImpl;
|
|
import com.steerinfo.framework.service.impl.BaseServiceImpl;
|
|
|
|
|
+import com.steerinfo.framework.service.pagehelper.PageList;
|
|
|
|
|
+import com.steerinfo.meterwork.meterworkcaractual.model.MeterWorkCarActual;
|
|
|
|
|
+import com.steerinfo.meterwork.meterworkcaractual.service.IMeterWorkCarActualService;
|
|
|
import org.apache.commons.collections.map.HashedMap;
|
|
import org.apache.commons.collections.map.HashedMap;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
import org.springframework.beans.BeanUtils;
|
|
@@ -29,6 +34,7 @@ import org.springframework.util.CollectionUtils;
|
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
|
|
|
+import java.math.RoundingMode;
|
|
|
import java.text.ParseException;
|
|
import java.text.ParseException;
|
|
|
import java.text.SimpleDateFormat;
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
@@ -60,11 +66,14 @@ public class DynamicWorkUpdataServiceImpl extends BaseServiceImpl<DynamicWorkUpd
|
|
|
private IDynamicWorkDataService dynamicWorkDataService;
|
|
private IDynamicWorkDataService dynamicWorkDataService;
|
|
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
|
- private DynamicBaseBatchStationMapper stationMapper;
|
|
|
|
|
|
|
+ private DtcrbMapper dtcrbMapper;
|
|
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private IComBaseInfoService comBaseInfoService;
|
|
private IComBaseInfoService comBaseInfoService;
|
|
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ IMeterWorkCarActualService meterWorkCarActualService;
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
protected IBaseMapper<DynamicWorkUpdata, String> getMapper() {
|
|
protected IBaseMapper<DynamicWorkUpdata, String> getMapper() {
|
|
|
return dynamicWorkUpdataMapper;
|
|
return dynamicWorkUpdataMapper;
|
|
@@ -428,4 +437,148 @@ public class DynamicWorkUpdataServiceImpl extends BaseServiceImpl<DynamicWorkUpd
|
|
|
this.delete(id);
|
|
this.delete(id);
|
|
|
dynamicWorkDataService.delete(byId.getOriginalValue());
|
|
dynamicWorkDataService.delete(byId.getOriginalValue());
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 新焦炭计算
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param calNewCokeDto
|
|
|
|
|
+ */
|
|
|
|
|
+ @Transactional
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public synchronized void calNewCoke(CalNewCokeDto calNewCokeDto) {
|
|
|
|
|
+ Assert.notNull(calNewCokeDto, "参数不能为空");
|
|
|
|
|
+ Assert.notNull(calNewCokeDto.getStartTime(), "开始时间不能为空");
|
|
|
|
|
+ Assert.notNull(calNewCokeDto.getEndTime(), "结束时间不能为空");
|
|
|
|
|
+ Assert.isTrue(!CollectionUtils.isEmpty(calNewCokeDto.getStationNums()), "3-6#高炉料斗秤列表不能为空");
|
|
|
|
|
+ //必须先计算3-6炉,再计算7炉,因为计算7炉时会修改料斗秤编号列表
|
|
|
|
|
+ calNewCoke3_6(calNewCokeDto);
|
|
|
|
|
+ // 计算7炉新焦炭
|
|
|
|
|
+ calNewCoke7(calNewCokeDto);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void calNewCoke7(CalNewCokeDto calNewCokeDto) {
|
|
|
|
|
+ // 二、7#高炉焦炭结算
|
|
|
|
|
+// 1、统计“动态秤称重数据维护”内,综1A、综1B、综1C、综1D皮带秤,物料品名包含“焦”,收货库房为“2546”的数据,并求和;假设结果为A,并作废原始数据
|
|
|
|
|
+ calNewCokeDto.setReceiverCode("2546");
|
|
|
|
|
+ BigDecimal a = dynamicWorkUpdataMapper.getTotalCoke(calNewCokeDto);
|
|
|
|
|
+// 2、查询“动态秤日报”内返焦4皮带总量;假设结果为B
|
|
|
|
|
+ calNewCokeDto.setStationNums(Arrays.asList("001336"));
|
|
|
|
|
+ BigDecimal b = dtcrbMapper.getTotalWeight(calNewCokeDto);
|
|
|
|
|
+ ;
|
|
|
|
|
+// 3、统计“物资量系统”内,汽车衡,物料品名包含“焦”,发货库房为“2548”的数据;并求和;假设结果为C
|
|
|
|
|
+ calNewCokeDto.setReceiverCode(null);
|
|
|
|
|
+ calNewCokeDto.setSenderCode("2548");
|
|
|
|
|
+ BigDecimal c = getTotalCokeOfCar(calNewCokeDto);
|
|
|
|
|
+// 4、统计“动态称日报”内,7#高炉14-19#料斗秤数据,并求和;假设结果为D
|
|
|
|
|
+ calNewCokeDto.setStationNums(Arrays.asList("002063", "002064", "002065", "002066", "002067", "002068"));
|
|
|
|
|
+ BigDecimal d = dtcrbMapper.getTotalWeight(calNewCokeDto);
|
|
|
|
|
+// 5、统计“动态称日报”内,煤焦E皮带秤,物料品名包含“焦”的数据(不包含粉焦),并求和;假设结果为E,并作废原始数据
|
|
|
|
|
+ List<String> stationNums = dtcrbMapper.getMJEStationNums();
|
|
|
|
|
+ calNewCokeDto.setStationNums(stationNums);
|
|
|
|
|
+ BigDecimal e = dtcrbMapper.getTotalWeight(calNewCokeDto);
|
|
|
|
|
+ ;
|
|
|
|
|
+// 6、计算系数K=(C+D+B)/ (A+E)
|
|
|
|
|
+ BigDecimal k = c.add(d).add(b).divide(a.add(e), 5, RoundingMode.HALF_UP);
|
|
|
|
|
+// 7、分别用“动态秤称重数据维护”内,综1A、综1B、综1C、综1D皮带秤,物料品名包含“焦”,收货库房为“2546”的数据,和煤焦E皮带秤,物料品名包含“焦”的数据乘以计算系数K,并将结果汇总存放“动态称数据审核”
|
|
|
|
|
+ calNewCokeDto.setReceiverCode("2546");
|
|
|
|
|
+ List<DynamicWorkUpdata> dynamicWorkUpdataList = dynamicWorkUpdataMapper.getCokeRecords(calNewCokeDto);
|
|
|
|
|
+ //插入乘完k系统的新数据
|
|
|
|
|
+ saveNewCoke(dynamicWorkUpdataList, k);
|
|
|
|
|
+ // 作废原始数据
|
|
|
|
|
+ int i = dynamicWorkUpdataMapper.batchDisableByIds(dynamicWorkUpdataList.stream().map(item -> item.getUpdataNo()).collect(Collectors.toList()));
|
|
|
|
|
+ Assert.isTrue(i == dynamicWorkUpdataList.size(), "作废原数据失败");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void calNewCoke3_6(CalNewCokeDto calNewCokeDto) {
|
|
|
|
|
+ // 一、3#-6#高炉焦炭结算
|
|
|
|
|
+// 1、统计“动态秤称重数据维护”内,综1A、综1B、综1C、综1D皮带秤,物料品名包含“焦”,收货库房为“2531”的数据,并求和;假设结果为A,并作废原始数据
|
|
|
|
|
+ calNewCokeDto.setReceiverCode("2531");
|
|
|
|
|
+ BigDecimal a = dynamicWorkUpdataMapper.getTotalCoke(calNewCokeDto);
|
|
|
|
|
+// 2、统计“物资量系统”内,汽车衡,物料品名包含“焦”,收货库房为“2531”的数据;并求和;假设结果为B
|
|
|
|
|
+ BigDecimal b = getTotalCokeOfCar(calNewCokeDto);
|
|
|
|
|
+// 3、统计“物资量系统”内,汽车衡,物料品名包含“焦”,发货库房为“2533”的数据;并求和;假设结果为C
|
|
|
|
|
+ calNewCokeDto.setReceiverCode(null);
|
|
|
|
|
+ calNewCokeDto.setSenderCode("2533");
|
|
|
|
|
+ BigDecimal c = getTotalCokeOfCar(calNewCokeDto);
|
|
|
|
|
+// 4、统计“动态称日报”内,3#、4#、5#、6#高炉焦炭料斗秤(因3#料斗秤上料经常变料,故每座高炉的1#、2#、3#料斗秤应设置可勾选界面,由岗位根据权限可进行是否为焦炭勾选)、焦丁皮带秤数据,并求和;假设结果为D
|
|
|
|
|
+ BigDecimal d = dtcrbMapper.getTotalWeight(calNewCokeDto);
|
|
|
|
|
+// 5、统计“动态秤称重数据维护”内,36B1计量焦炭数据(不包含粉焦),并求和;假设结果为E,并作废原始数据
|
|
|
|
|
+ BigDecimal e = getCokeByStation("PD0039", calNewCokeDto.getStartTime(), calNewCokeDto.getEndTime());
|
|
|
|
|
+// 6、计算系数K=(C+D-E-B)/ A
|
|
|
|
|
+ BigDecimal k = c.add(d).subtract(b).subtract(e).divide(a, 5, RoundingMode.HALF_UP);
|
|
|
|
|
+// 7、用“动态秤称重数据维护”内,综1A、综1B、综1C、综1D皮带秤,物料品名包含“焦”,收货库房为“2531”的数据,每条数据乘以系数K,并将结果汇总存放“动态称数据审核”
|
|
|
|
|
+ calNewCokeDto.setReceiverCode("2531");
|
|
|
|
|
+ List<DynamicWorkUpdata> dynamicWorkUpdataList = dynamicWorkUpdataMapper.getCokeRecords(calNewCokeDto);
|
|
|
|
|
+ //插入乘完k系统的新数据
|
|
|
|
|
+ saveNewCoke(dynamicWorkUpdataList, k);
|
|
|
|
|
+ // 作废原始数据
|
|
|
|
|
+ int i = dynamicWorkUpdataMapper.batchDisableByIds(dynamicWorkUpdataList.stream().map(item -> item.getUpdataNo()).collect(Collectors.toList()));
|
|
|
|
|
+ Assert.isTrue(i == dynamicWorkUpdataList.size(), "作废原数据失败");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void saveNewCoke(List<DynamicWorkUpdata> dynamicWorkUpdataList, BigDecimal k) {
|
|
|
|
|
+ List<DynamicWorkUpdata> list = new ArrayList<>();
|
|
|
|
|
+ for (DynamicWorkUpdata dynamicWorkUpdata : dynamicWorkUpdataList) {
|
|
|
|
|
+ DynamicWorkUpdata data = new DynamicWorkUpdata();
|
|
|
|
|
+ data.setUpdataNo(null);
|
|
|
|
|
+ data.setMaterialName(dynamicWorkUpdata.getMaterialName());
|
|
|
|
|
+ data.setMaterialCode(dynamicWorkUpdata.getMaterialCode());
|
|
|
|
|
+ data.setStationName(dynamicWorkUpdata.getStationName());
|
|
|
|
|
+ data.setStationCode(dynamicWorkUpdata.getStationCode());
|
|
|
|
|
+ data.setRecieverName(dynamicWorkUpdata.getRecieverName());
|
|
|
|
|
+ data.setRecieverCode(dynamicWorkUpdata.getRecieverCode());
|
|
|
|
|
+ data.setRecieverType(dynamicWorkUpdata.getRecieverType());
|
|
|
|
|
+ data.setSenderName(dynamicWorkUpdata.getSenderName());
|
|
|
|
|
+ data.setSenderCode(dynamicWorkUpdata.getSenderCode());
|
|
|
|
|
+ data.setSenderType(dynamicWorkUpdata.getSenderType());
|
|
|
|
|
+ data.setWeight(dynamicWorkUpdata.getWeight().multiply(k));
|
|
|
|
|
+ data.setUploaded(null);
|
|
|
|
|
+ data.setStartTime(dynamicWorkUpdata.getStartTime());
|
|
|
|
|
+ data.setEndTime(dynamicWorkUpdata.getEndTime());
|
|
|
|
|
+ data.setMemo(null);
|
|
|
|
|
+ data.setAuditingManNo(null);
|
|
|
|
|
+ data.setAuditingManName(null);
|
|
|
|
|
+ data.setAuditingTime(null);
|
|
|
|
|
+ data.setAuditingFlag("0");
|
|
|
|
|
+ data.setOriginalValue(null);
|
|
|
|
|
+ data.setSyslog(null);
|
|
|
|
|
+ data.setValidFlag("1");
|
|
|
|
|
+ data.setCreateManNo(UserUtil.getCurrentUserId());
|
|
|
|
|
+ data.setCreateManName(UserUtil.getCurrentUserName());
|
|
|
|
|
+ data.setCreateTime(new Date());
|
|
|
|
|
+ data.setUpdateManNo(null);
|
|
|
|
|
+ data.setUpdateManName(null);
|
|
|
|
|
+ data.setUpdateTime(null);
|
|
|
|
|
+ list.add(data);
|
|
|
|
|
+ }
|
|
|
|
|
+ int batchAdd = this.batchAdd(list);
|
|
|
|
|
+ Assert.isTrue(batchAdd == dynamicWorkUpdataList.size(), "插入新焦炭数据失败");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private BigDecimal getCokeByStation(String stationCode, Date startTime, Date endTime) {
|
|
|
|
|
+ return dynamicWorkUpdataMapper.getCokeByStation(stationCode, startTime, endTime);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private BigDecimal getTotalCokeOfCar(CalNewCokeDto calNewCokeDto) {
|
|
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
+ HashMap<String, Object> params = new HashMap<>();
|
|
|
|
|
+ params.put("startTime", sdf.format(calNewCokeDto.getStartTime()));
|
|
|
|
|
+ params.put("endTime", sdf.format(calNewCokeDto.getEndTime()));
|
|
|
|
|
+ params.put("matterName", "焦");
|
|
|
|
|
+ params.put("validFlag", "1");
|
|
|
|
|
+ if (calNewCokeDto.getReceiverCode() != null) {
|
|
|
|
|
+ params.put("receivingUintNo", calNewCokeDto.getReceiverCode());
|
|
|
|
|
+ } else if (calNewCokeDto.getSenderCode() != null) {
|
|
|
|
|
+ params.put("forwardingUnitNo", calNewCokeDto.getSenderCode());
|
|
|
|
|
+ } else {
|
|
|
|
|
+ throw new RuntimeException("必须选择发货库房或者收货库房");
|
|
|
|
|
+ }
|
|
|
|
|
+ BigDecimal b = BigDecimal.ZERO;
|
|
|
|
|
+ PageList<MeterWorkCarActual> meterWorkCarActualPageList = meterWorkCarActualService.likeByDesc(params, 1, 2000);
|
|
|
|
|
+ List<MeterWorkCarActual> meterWorkCarActuals = meterWorkCarActualPageList.getList();
|
|
|
|
|
+ for (MeterWorkCarActual meterWorkCarActual : meterWorkCarActuals) {
|
|
|
|
|
+ b = b.add(meterWorkCarActual.getNetWeight());
|
|
|
|
|
+ }
|
|
|
|
|
+ return b.divide(new BigDecimal(1000));
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|