|
@@ -1,27 +1,39 @@
|
|
|
package com.steerinfo.meterwork.meterworkhookactfirst.service.impl;
|
|
package com.steerinfo.meterwork.meterworkhookactfirst.service.impl;
|
|
|
|
|
|
|
|
|
|
+import com.steerinfo.baseinfo.meterbasevideoinfo.mapper.MeterBaseVideoinfoMapper;
|
|
|
|
|
+import com.steerinfo.baseinfo.meterbasevideoinfo.model.MeterBaseVideoinfo;
|
|
|
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.PageHelper;
|
|
import com.steerinfo.framework.service.pagehelper.PageHelper;
|
|
|
import com.steerinfo.framework.service.pagehelper.PageList;
|
|
import com.steerinfo.framework.service.pagehelper.PageList;
|
|
|
import com.steerinfo.framework.user.UserPayload;
|
|
import com.steerinfo.framework.user.UserPayload;
|
|
|
|
|
+import com.steerinfo.framework.utils.collection.ListUtils;
|
|
|
import com.steerinfo.meterwork.constants.DbConstants;
|
|
import com.steerinfo.meterwork.constants.DbConstants;
|
|
|
import com.steerinfo.meterwork.except.MarkerMetException;
|
|
import com.steerinfo.meterwork.except.MarkerMetException;
|
|
|
import com.steerinfo.meterwork.meterworkhookactfirst.mapper.MeterWorkHookActFirstMapper;
|
|
import com.steerinfo.meterwork.meterworkhookactfirst.mapper.MeterWorkHookActFirstMapper;
|
|
|
import com.steerinfo.meterwork.meterworkhookactfirst.model.MeterWorkHookActFirst;
|
|
import com.steerinfo.meterwork.meterworkhookactfirst.model.MeterWorkHookActFirst;
|
|
|
import com.steerinfo.meterwork.meterworkhookactfirst.service.IMeterWorkHookActFirstService;
|
|
import com.steerinfo.meterwork.meterworkhookactfirst.service.IMeterWorkHookActFirstService;
|
|
|
|
|
+import com.steerinfo.meterwork.meterworkhookactual.mapper.MeterWorkHookActualMapper;
|
|
|
|
|
+import com.steerinfo.meterwork.meterworkhookactual.model.MeterWorkHookActual;
|
|
|
|
|
+import com.steerinfo.meterwork.meterworkimage.mapper.MeterWorkImageMapper;
|
|
|
|
|
+import com.steerinfo.meterwork.meterworkimage.model.MeterWorkImage;
|
|
|
|
|
+import com.steerinfo.meterwork.meterworkrailwayactfirst.model.MeterWorkRailwayActFirst;
|
|
|
|
|
+import com.steerinfo.meterwork.meterworkrailwayactual.model.MeterWorkRailwayActual;
|
|
|
import com.steerinfo.pretrack.prehookscale.mapper.PreHookScaleMapper;
|
|
import com.steerinfo.pretrack.prehookscale.mapper.PreHookScaleMapper;
|
|
|
import com.steerinfo.pretrack.prehookscale.model.PreHookScale;
|
|
import com.steerinfo.pretrack.prehookscale.model.PreHookScale;
|
|
|
|
|
+import com.steerinfo.pretrack.prerailwayscale.model.PreRailwayScale;
|
|
|
|
|
+import com.steerinfo.util.FieldsCollector;
|
|
|
import com.steerinfo.util.StringUtils;
|
|
import com.steerinfo.util.StringUtils;
|
|
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
|
|
|
+import java.lang.reflect.Field;
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.text.SimpleDateFormat;
|
|
import java.text.SimpleDateFormat;
|
|
|
-import java.util.Date;
|
|
|
|
|
-import java.util.HashMap;
|
|
|
|
|
-import java.util.List;
|
|
|
|
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -46,6 +58,15 @@ public class MeterWorkHookActFirstServiceImpl extends BaseServiceImpl<MeterWorkH
|
|
|
@Resource
|
|
@Resource
|
|
|
private PreHookScaleMapper preHookScaleMapper;
|
|
private PreHookScaleMapper preHookScaleMapper;
|
|
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private MeterWorkImageMapper meterWorkImageMapper;
|
|
|
|
|
+
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private MeterBaseVideoinfoMapper meterBaseVideoinfoMapper;
|
|
|
|
|
+
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private MeterWorkHookActualMapper meterWorkHookActualMapper;
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
protected IBaseMapper<MeterWorkHookActFirst, String> getMapper() {
|
|
protected IBaseMapper<MeterWorkHookActFirst, String> getMapper() {
|
|
|
return meterWorkHookActFirstMapper;
|
|
return meterWorkHookActFirstMapper;
|
|
@@ -458,4 +479,369 @@ public class MeterWorkHookActFirstServiceImpl extends BaseServiceImpl<MeterWorkH
|
|
|
List<String> list = meterWorkHookActFirstMapper.distinctCarNo(obj).stream().map(MeterWorkHookActFirst::getRailwayNo).collect(Collectors.toList());
|
|
List<String> list = meterWorkHookActFirstMapper.distinctCarNo(obj).stream().map(MeterWorkHookActFirst::getRailwayNo).collect(Collectors.toList());
|
|
|
return list;
|
|
return list;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 吊钩秤计量保存逻辑
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param model
|
|
|
|
|
+ * @return
|
|
|
|
|
+ * @throws Exception
|
|
|
|
|
+ */
|
|
|
|
|
+ @Override
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
|
+ public String doAddWfStatic(MeterWorkHookActFirst model) throws Exception {
|
|
|
|
|
+ BigDecimal zero = new BigDecimal(0);
|
|
|
|
|
+ String id = "";//需要返回的作业编号
|
|
|
|
|
+ if (model == null || StringUtils.isEmpty(model.getPredictionNo())) {
|
|
|
|
|
+ throw new MarkerMetException(500, "预报编号为空不允许进行保存操作!");
|
|
|
|
|
+ }
|
|
|
|
|
+ if (model.getMeterWeight() == null || model.getMeterWeight().compareTo(zero) <= 0) {
|
|
|
|
|
+ throw new MarkerMetException(500, "采集重量为空或小于0不允许进行保存操作!");
|
|
|
|
|
+ }
|
|
|
|
|
+ //验证预报编号与预报的车号是否一致
|
|
|
|
|
+ PreHookScale preHookScale = preHookScaleMapper.selectByPrimaryKey(model.getPredictionNo());
|
|
|
|
|
+ if (preHookScale == null || StringUtils.isEmpty(preHookScale.getPredictionNo())) {
|
|
|
|
|
+ throw new MarkerMetException(500, "未查询到预报编号为【" + model.getPredictionNo() + "】的数据,请刷新后重试!");
|
|
|
|
|
+ } else {
|
|
|
|
|
+ if (StringUtils.isEmpty(preHookScale.getRailwayNo())) {
|
|
|
|
|
+ throw new MarkerMetException(500, "预报【" + model.getPredictionNo() + "】中的车号为空,不允许进行保存操作,请刷新后重试!");
|
|
|
|
|
+ } else {
|
|
|
|
|
+ if (!preHookScale.getRailwayNo().equals(model.getRailwayNo())) {
|
|
|
|
|
+ throw new MarkerMetException(500, "预报【" + model.getPredictionNo() + "】中的车号【" + preHookScale.getRailwayNo() + "】" +
|
|
|
|
|
+ "与界面车号【" + model.getRailwayNo() + "】不一致,不允许进行保存操作,请刷新后重试!");
|
|
|
|
|
+ }
|
|
|
|
|
+ if ("3".equals(preHookScale.getValueFlag())) {
|
|
|
|
|
+ throw new MarkerMetException(500, "预报【" + model.getPredictionNo() + "】已被作废,不允许进行保存操作,请重新选择预报!");
|
|
|
|
|
+ }
|
|
|
|
|
+ if ("2".equals(preHookScale.getValueFlag())) {
|
|
|
|
|
+ throw new MarkerMetException(500, "预报【" + model.getPredictionNo() + "】已经使用(已出净重),不允许再次使用,请重新选择预报或者进行复磅!");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ //验证当前使用的预报号与一次计量的预报号是否一致
|
|
|
|
|
+ MeterWorkHookActFirst searchFirst = new MeterWorkHookActFirst();
|
|
|
|
|
+ searchFirst.setRailwayNo(model.getRailwayNo());
|
|
|
|
|
+ searchFirst.setValueFlag("1");
|
|
|
|
|
+ Map<String, Object> mapSearchFirst = FieldsCollector.beanToMap(searchFirst);
|
|
|
|
|
+ List<MeterWorkHookActFirst> searchFirstList = meterWorkHookActFirstMapper.selectByParameters(mapSearchFirst);
|
|
|
|
|
+ if (searchFirstList != null && searchFirstList.size() > 1) {
|
|
|
|
|
+ throw new MarkerMetException(500, "车号【" + model.getRailwayNo() + "】存在【" + searchFirstList.size() + "】条有效数据,不允许计量操作,请先在网页上进行作废!");
|
|
|
|
|
+ }
|
|
|
|
|
+ if (searchFirstList != null && searchFirstList.size() == 1) {
|
|
|
|
|
+ if (!model.getPredictionNo().equals(searchFirstList.get(0).getPredictionNo())) {
|
|
|
|
|
+ throw new MarkerMetException(500, "车号【" + model.getRailwayNo() + "】一次计量的预报【"
|
|
|
|
|
+ + searchFirstList.get(0).getPredictionNo() + "】与当前使用的预报【" + model.getPredictionNo() + "】不一致,不允许计量操作,请先在网页上进行修改!");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ //1、判断是否是二次数据(二次数据需要洁净)
|
|
|
|
|
+ HashMap<String, Object> obj = new HashMap<>();
|
|
|
|
|
+ obj.put("railwayNo", model.getRailwayNo());
|
|
|
|
|
+ obj.put("railwayCarriageNo", model.getRailwayCarriageNo());
|
|
|
|
|
+ obj.put("valueFlag", "1");//有效,未洁净
|
|
|
|
|
+ List<MeterWorkHookActFirst> mwrafs = meterWorkHookActFirstMapper.selectBy(obj);
|
|
|
|
|
+
|
|
|
|
|
+ //2、判断是否为混装,若为混装将计量预报分割出
|
|
|
|
|
+ ArrayList<String> ids = new ArrayList<>(); //ids用于更新预报操作
|
|
|
|
|
+ if (StringUtils.isNotEmpty(model.getPredictionCombination())) {
|
|
|
|
|
+ String[] preSclas = model.getPredictionCombination().split(",");
|
|
|
|
|
+ Collections.addAll(ids, preSclas);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (mwrafs.size() == 0) {
|
|
|
|
|
+ //===========一次计量处理开始==============
|
|
|
|
|
+ if (model.getRailwayFactoryWeight() == null || model.getRailwayFactoryWeight().compareTo(zero) <= 0) {
|
|
|
|
|
+ //============一毛一皮的计量数据处理开始==============
|
|
|
|
|
+ model.setWeightType("0");
|
|
|
|
|
+ model.setMeterSortWeight(zero); //分检重量
|
|
|
|
|
+ model.setMeterBalanceWeight(model.getMeterWeight()); //结算重量
|
|
|
|
|
+ id = doAddWfStaticFrist(model);
|
|
|
|
|
+ //3、修改预报状态为【使用中】
|
|
|
|
|
+ if (StringUtils.isNotEmpty(model.getPredictionNo())
|
|
|
|
|
+ && model.getPredictionNo().length() > 10) {
|
|
|
|
|
+ ids.add(model.getPredictionNo());
|
|
|
|
|
+ preHookScaleMapper.batchUpdateByIdsForIn(ids);
|
|
|
|
|
+ }
|
|
|
|
|
+ //============一毛一皮的计量数据处理结束==============
|
|
|
|
|
+ } else {
|
|
|
|
|
+ //============毛重+自重的计量数据处理开始==============
|
|
|
|
|
+ //毛重数据保存
|
|
|
|
|
+ model.setWeightType("0");
|
|
|
|
|
+ model.setMeterSortWeight(zero); //分检重量
|
|
|
|
|
+ model.setMeterBalanceWeight(model.getMeterWeight());//结算重量
|
|
|
|
|
+ model.setCreateTime(new Date()); //服务端重新赋值,避免出现皮重比毛重时间晚的情况;2021年6月10日
|
|
|
|
|
+ id = doAddWfStaticFrist(model);
|
|
|
|
|
+
|
|
|
|
|
+ //皮重计量实体的组装;皮重数据保存
|
|
|
|
|
+ MeterWorkHookActFirst hookActFirst = new MeterWorkHookActFirst();
|
|
|
|
|
+ BeanUtils.copyProperties(model, hookActFirst);
|
|
|
|
|
+ hookActFirst.setMeterWeight(model.getRailwayFactoryWeight()); //皮重等于自重
|
|
|
|
|
+ hookActFirst.setMeterSortWeight(zero);//分检重量
|
|
|
|
|
+ hookActFirst.setMeterBalanceWeight(model.getRailwayFactoryWeight());//结算重量
|
|
|
|
|
+ hookActFirst.setWeightType("1");
|
|
|
|
|
+ Calendar tareDate = Calendar.getInstance();
|
|
|
|
|
+ tareDate.add(Calendar.SECOND, -10);//自重的皮重减10s,用于查询最近的一条毛重数据,保证复磅数据准确
|
|
|
|
|
+ hookActFirst.setCreateTime(tareDate.getTime());
|
|
|
|
|
+ id = doAddWfStaticFrist(hookActFirst);
|
|
|
|
|
+
|
|
|
|
|
+ //净重数据保存
|
|
|
|
|
+ PreHookScale preHookScales = preHookScaleMapper.selectByPrimaryKey(model.getPredictionNo());
|
|
|
|
|
+ doAddWfStaticNet(preHookScales, model, hookActFirst); //预报,毛重,皮重
|
|
|
|
|
+
|
|
|
|
|
+ //3、修改预报状态为【已使用】
|
|
|
|
|
+ if (StringUtils.isNotEmpty(model.getPredictionNo())
|
|
|
|
|
+ && model.getPredictionNo().length() > 10) {
|
|
|
|
|
+ ids.add(model.getPredictionNo());
|
|
|
|
|
+ preHookScaleMapper.batchUpdateByIdsForUsed(ids);
|
|
|
|
|
+ }
|
|
|
|
|
+ //============毛重+自重的计量数据处理结束==============
|
|
|
|
|
+ }
|
|
|
|
|
+ //===========一次计量处理结束==============
|
|
|
|
|
+ } else {
|
|
|
|
|
+ //===========二次计量处理开始==============
|
|
|
|
|
+ for (MeterWorkHookActFirst mwraf : mwrafs) {
|
|
|
|
|
+ //查询预报信息
|
|
|
|
|
+ PreHookScale prs = preHookScaleMapper.selectByPrimaryKey(mwraf.getPredictionNo());
|
|
|
|
|
+
|
|
|
|
|
+ //保存第二次的一次计量数据;特别说明:先皮后毛不会做分检,所以不需要考虑
|
|
|
|
|
+ MeterWorkHookActFirst meterWorkHookActFirst = new MeterWorkHookActFirst();
|
|
|
|
|
+ BeanUtils.copyProperties(mwraf, meterWorkHookActFirst);
|
|
|
|
|
+ meterWorkHookActFirst.setCreateTime(new Date());
|
|
|
|
|
+ meterWorkHookActFirst.setCreateManName(model.getCreateManName());
|
|
|
|
|
+ meterWorkHookActFirst.setCreateManNo(model.getCreateManNo());
|
|
|
|
|
+ meterWorkHookActFirst.setMeterGroup(model.getMeterGroup());
|
|
|
|
|
+ meterWorkHookActFirst.setMeterClass(model.getMeterClass());
|
|
|
|
|
+ meterWorkHookActFirst.setBaseSpotNo(model.getBaseSpotNo());
|
|
|
|
|
+ meterWorkHookActFirst.setBaseSpotName(model.getBaseSpotName());
|
|
|
|
|
+ meterWorkHookActFirst.setWeightType("1"); //假定为皮重,在出净重时会重新调整状态位
|
|
|
|
|
+ meterWorkHookActFirst.setMeterWeight(model.getMeterWeight());
|
|
|
|
|
+ meterWorkHookActFirst.setMeterSortWeight(zero);
|
|
|
|
|
+ meterWorkHookActFirst.setMeterBalanceWeight(meterWorkHookActFirst.getMeterWeight());
|
|
|
|
|
+ meterWorkHookActFirst.setPredictionNo(prs.getPredictionNo());
|
|
|
|
|
+ meterWorkHookActFirst.setNoticeNo(prs.getNoticeNo());
|
|
|
|
|
+ meterWorkHookActFirst.setMatterNo(prs.getMatterNo());
|
|
|
|
|
+ meterWorkHookActFirst.setMatterName(prs.getMatterName());
|
|
|
|
|
+ meterWorkHookActFirst.setContractNo(prs.getContractNo());
|
|
|
|
|
+ meterWorkHookActFirst.setBatchNo(prs.getBatchNo());
|
|
|
|
|
+ meterWorkHookActFirst.setCustomerSupplierNo(prs.getCustomerSupplierNo());
|
|
|
|
|
+ meterWorkHookActFirst.setCustomerSupplierName(prs.getCustomerSupplierName());
|
|
|
|
|
+ meterWorkHookActFirst.setForwardingUnitNo(prs.getForwardingUnitNo());
|
|
|
|
|
+ meterWorkHookActFirst.setForwardingUnitName(prs.getForwardingUnitName());
|
|
|
|
|
+ meterWorkHookActFirst.setReceivingUintNo(prs.getReceivingUintNo());
|
|
|
|
|
+ meterWorkHookActFirst.setReceivingUintName(prs.getReceivingUintName());
|
|
|
|
|
+ meterWorkHookActFirst.setMaterialNo(prs.getMaterialNo());
|
|
|
|
|
+ meterWorkHookActFirst.setMaterialName(prs.getMaterialName());
|
|
|
|
|
+ meterWorkHookActFirst.setSpecNo(prs.getSpecNo());
|
|
|
|
|
+ meterWorkHookActFirst.setSpecName(prs.getSpecName());
|
|
|
|
|
+ meterWorkHookActFirst.setLoadPointNo(prs.getLoadPointNo());
|
|
|
|
|
+ meterWorkHookActFirst.setLoadPointName(prs.getLoadPointName());
|
|
|
|
|
+ meterWorkHookActFirst.setSampleNo(prs.getSampleNo());
|
|
|
|
|
+ meterWorkHookActFirst.setSampleVoucher(prs.getSampleVoucher());
|
|
|
|
|
+ meterWorkHookActFirst.setCarrierUnitNo(prs.getCarrierUnitNo());
|
|
|
|
|
+ meterWorkHookActFirst.setCarrierUnitName(prs.getCarrierUnitName());
|
|
|
|
|
+ meterWorkHookActFirst.setMeterTypeNo(prs.getMeterTypeNo());
|
|
|
|
|
+ meterWorkHookActFirst.setMeterTypeName(prs.getMeterTypeName());
|
|
|
|
|
+ meterWorkHookActFirst.setArrival(prs.getArrival());
|
|
|
|
|
+ meterWorkHookActFirst.setStation(prs.getStation());
|
|
|
|
|
+ meterWorkHookActFirst.setSourceArea(prs.getSourceArea());
|
|
|
|
|
+
|
|
|
|
|
+ id = doAddWfStaticFrist(meterWorkHookActFirst);
|
|
|
|
|
+ //保存洁净数据
|
|
|
|
|
+ if (mwraf.getMeterWeight().compareTo(meterWorkHookActFirst.getMeterWeight()) >= 0) {
|
|
|
|
|
+ doAddWfStaticNet(prs, mwraf, meterWorkHookActFirst); //预报,毛重,皮重
|
|
|
|
|
+ } else {
|
|
|
|
|
+ doAddWfStaticNet(prs, meterWorkHookActFirst, mwraf);//预报,皮重,毛重
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ //3、修改预报状态为【已使用】
|
|
|
|
|
+ if (StringUtils.isNotEmpty(model.getPredictionNo())
|
|
|
|
|
+ && model.getPredictionNo().length() > 10) {
|
|
|
|
|
+ ids.add(model.getPredictionNo());
|
|
|
|
|
+ preHookScaleMapper.batchUpdateByIdsForUsed(ids);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ //===========二次计量处理结束==============
|
|
|
|
|
+ //4、保存图片(一、二次计量共用)
|
|
|
|
|
+ SaveImg(meterWorkHookActFirstMapper.selectByPrimaryKey(id));
|
|
|
|
|
+ return id;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //保存计量数据
|
|
|
|
|
+ private String doAddWfStaticFrist(MeterWorkHookActFirst model) {
|
|
|
|
|
+ //此为第一次计量的数据
|
|
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
|
|
|
|
|
+ String afl = sdf.format(model.getCreateTime());
|
|
|
|
|
+ //一次数据
|
|
|
|
|
+ String firstNo = meterWorkHookActFirstMapper.getNewID(afl);
|
|
|
|
|
+ model.setActualFirstNo(afl + firstNo);
|
|
|
|
|
+ model.setValueFlag("1");
|
|
|
|
|
+ model.setCheckFlag("0");
|
|
|
|
|
+ model.setMeterMode("1");
|
|
|
|
|
+ meterWorkHookActFirstMapper.insertSelective(model);
|
|
|
|
|
+ return model.getActualFirstNo();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 需要两次计量时完善洁净数据
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param prs 预报
|
|
|
|
|
+ * @param one 毛重实体
|
|
|
|
|
+ * @param two 皮重实体
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ private MeterWorkHookActual doAddWfStaticNet(PreHookScale prs, MeterWorkHookActFirst one, MeterWorkHookActFirst two) {
|
|
|
|
|
+ MeterWorkHookActual netHook = new MeterWorkHookActual();
|
|
|
|
|
+ //补充编号
|
|
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
|
|
|
|
|
+ String afl = sdf.format(new Date());
|
|
|
|
|
+ String netNo = meterWorkHookActualMapper.getNewID(afl);
|
|
|
|
|
+ netHook.setActualNo(afl + netNo);
|
|
|
|
|
+
|
|
|
|
|
+ //补充数据
|
|
|
|
|
+ netHook.setPredictionNo(prs.getPredictionNo());
|
|
|
|
|
+ netHook.setNoticeNo(prs.getNoticeNo());
|
|
|
|
|
+ netHook.setMatterNo(prs.getMatterNo());
|
|
|
|
|
+ netHook.setMatterName(prs.getMatterName());
|
|
|
|
|
+ netHook.setContractNo(prs.getContractNo());
|
|
|
|
|
+ netHook.setBatchNo(prs.getBatchNo());
|
|
|
|
|
+ netHook.setCustomerSupplierNo(prs.getCustomerSupplierNo());
|
|
|
|
|
+ netHook.setCustomerSupplierName(prs.getCustomerSupplierName());
|
|
|
|
|
+ netHook.setForwardingUnitNo(prs.getForwardingUnitNo());
|
|
|
|
|
+ netHook.setForwardingUnitName(prs.getForwardingUnitName());
|
|
|
|
|
+ netHook.setReceivingUintNo(prs.getReceivingUintNo());
|
|
|
|
|
+ netHook.setReceivingUintName(prs.getReceivingUintName());
|
|
|
|
|
+ netHook.setMaterialNo(prs.getMaterialNo());
|
|
|
|
|
+ netHook.setMaterialName(prs.getMaterialName());
|
|
|
|
|
+ netHook.setSpecNo(prs.getSpecNo());
|
|
|
|
|
+ netHook.setSpecName(prs.getSpecName());
|
|
|
|
|
+ netHook.setLoadPointNo(prs.getLoadPointNo());
|
|
|
|
|
+ netHook.setLoadPointName(prs.getLoadPointName());
|
|
|
|
|
+ netHook.setSampleNo(prs.getSampleNo());
|
|
|
|
|
+ netHook.setSampleVoucher(prs.getSampleVoucher());
|
|
|
|
|
+ netHook.setCarrierUnitNo(prs.getCarrierUnitNo());
|
|
|
|
|
+ netHook.setCarrierUnitName(prs.getCarrierUnitName());
|
|
|
|
|
+ netHook.setMeterTypeNo(prs.getMeterTypeNo());
|
|
|
|
|
+ netHook.setMeterTypeName(prs.getMeterTypeName());
|
|
|
|
|
+ netHook.setStation(prs.getStation());
|
|
|
|
|
+ netHook.setArrival(prs.getArrival());
|
|
|
|
|
+ netHook.setSourceArea(prs.getSourceArea());
|
|
|
|
|
+
|
|
|
|
|
+ //将毛重数据补充进来
|
|
|
|
|
+ netHook.setRailwayNo(one.getRailwayNo());
|
|
|
|
|
+ netHook.setRailwayCarriageNo(one.getRailwayCarriageNo());
|
|
|
|
|
+ netHook.setActualFirst1No(one.getActualFirstNo());
|
|
|
|
|
+ netHook.setGrossWeight(one.getMeterBalanceWeight());
|
|
|
|
|
+ netHook.setGrossManNo(one.getCreateManNo());
|
|
|
|
|
+ netHook.setGrossManName(one.getCreateManName());
|
|
|
|
|
+ netHook.setGrossTime(one.getCreateTime());
|
|
|
|
|
+ netHook.setBaseSpot1No(one.getBaseSpotNo());
|
|
|
|
|
+ netHook.setBaseSpot1Name(one.getBaseSpotName());
|
|
|
|
|
+ netHook.setGrossClass(one.getMeterClass());
|
|
|
|
|
+ netHook.setGrossGroup(one.getMeterGroup());
|
|
|
|
|
+ netHook.setGrossMode(one.getMeterMode());
|
|
|
|
|
+ netHook.setRailwayTypeNo(one.getRailwayTypeNo());
|
|
|
|
|
+ netHook.setRailwayTypeName(one.getRailwayTypeName());
|
|
|
|
|
+ netHook.setWaterNum(one.getWaterNum());
|
|
|
|
|
+ //将皮重数据补充
|
|
|
|
|
+ netHook.setActualFirst2No(two.getActualFirstNo());
|
|
|
|
|
+ netHook.setTareWeight(two.getMeterWeight());
|
|
|
|
|
+ netHook.setTareManNo(two.getCreateManNo());
|
|
|
|
|
+ netHook.setTareManName(two.getCreateManName());
|
|
|
|
|
+ netHook.setTareTime(two.getCreateTime());
|
|
|
|
|
+ netHook.setBaseSpot2No(two.getBaseSpotNo());
|
|
|
|
|
+ netHook.setBaseSpot2Name(two.getBaseSpotName());
|
|
|
|
|
+ netHook.setTareClass(two.getMeterClass());
|
|
|
|
|
+ netHook.setTareGroup(two.getMeterGroup());
|
|
|
|
|
+ netHook.setTareMode(two.getMeterMode());
|
|
|
|
|
+ //补充净重数据
|
|
|
|
|
+
|
|
|
|
|
+ if (one.getCreateTime().after(two.getCreateTime())) {
|
|
|
|
|
+ netHook.setNetManNo(one.getCreateManNo());
|
|
|
|
|
+ netHook.setNetManName(one.getCreateManName());
|
|
|
|
|
+ netHook.setNetTime(one.getCreateTime());
|
|
|
|
|
+ netHook.setNetSpot3No(one.getBaseSpotNo());
|
|
|
|
|
+ netHook.setNetSpot3Name(one.getBaseSpotName());
|
|
|
|
|
+ netHook.setNetClass(one.getMeterClass());
|
|
|
|
|
+ netHook.setNetGroup(one.getMeterGroup());
|
|
|
|
|
+ } else {
|
|
|
|
|
+ netHook.setNetManNo(two.getCreateManNo());
|
|
|
|
|
+ netHook.setNetManName(two.getCreateManName());
|
|
|
|
|
+ netHook.setNetTime(two.getCreateTime());
|
|
|
|
|
+ netHook.setNetSpot3No(two.getBaseSpotNo());
|
|
|
|
|
+ netHook.setNetSpot3Name(two.getBaseSpotName());
|
|
|
|
|
+ netHook.setNetClass(two.getMeterClass());
|
|
|
|
|
+ netHook.setNetGroup(two.getMeterGroup());
|
|
|
|
|
+ }
|
|
|
|
|
+ netHook.setNetWeight(one.getMeterBalanceWeight().subtract(two.getMeterBalanceWeight()));
|
|
|
|
|
+ netHook.setNetMode("1");
|
|
|
|
|
+ netHook.setValueFlag("0");
|
|
|
|
|
+ netHook.setUploadFlag("0");
|
|
|
|
|
+ netHook.setUploadFlag("1");
|
|
|
|
|
+ if ("001019002".equals(one.getRailwayTypeNo())) {
|
|
|
|
|
+ netHook.setNetTime(new Date()); //动轨的特殊处理
|
|
|
|
|
+ //假如一次数据为补录,则洁净数据中的grossModel为3,标识毛重为手工录入的
|
|
|
|
|
+ if ("补录".equals(one.getRailwayModelName())) {
|
|
|
|
|
+ netHook.setGrossMode("3");
|
|
|
|
|
+ //METER_WORK_RAILWAY_ACTUAL_BAR
|
|
|
|
|
+ meterWorkHookActualMapper.insertSelectiveBar(netHook);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ meterWorkHookActualMapper.insertSelective(netHook);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ //修改一次的状态
|
|
|
|
|
+ one.setValueFlag("2");//洁净
|
|
|
|
|
+ one.setWeightType("0");//毛重
|
|
|
|
|
+ two.setValueFlag("2");//洁净
|
|
|
|
|
+ two.setWeightType("1");//皮重
|
|
|
|
|
+ meterWorkHookActFirstMapper.updateByPrimaryKeySelective(one);
|
|
|
|
|
+ meterWorkHookActFirstMapper.updateByPrimaryKeySelective(two);
|
|
|
|
|
+ return netHook;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 图片保存信息
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param oci
|
|
|
|
|
+ * @throws Exception
|
|
|
|
|
+ */
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
|
+ public void SaveImg(MeterWorkHookActFirst oci) throws Exception {
|
|
|
|
|
+ //查下当前配置的摄像头有多少个
|
|
|
|
|
+ MeterBaseVideoinfo mbv = new MeterBaseVideoinfo();
|
|
|
|
|
+ mbv.setPointid(oci.getBaseSpotNo());
|
|
|
|
|
+ Map<String, Object> map = FieldsCollector.beanToMap(mbv);
|
|
|
|
|
+ List<MeterBaseVideoinfo> lmb = meterBaseVideoinfoMapper.selectByParameters(map);
|
|
|
|
|
+ if (ListUtils.isNotEmpty(lmb) && lmb.size() > 0) {
|
|
|
|
|
+ MeterBaseVideoinfo mb = lmb.get(0);
|
|
|
|
|
+
|
|
|
|
|
+ long i = 0;
|
|
|
|
|
+ //https://www.cnblogs.com/alice-cj/p/10363356.html
|
|
|
|
|
+ Class clazz = mb.getClass();
|
|
|
|
|
+ Object obj = clazz.newInstance();
|
|
|
|
|
+ Field[] fields = clazz.getDeclaredFields();
|
|
|
|
|
+ for (Field field : fields) {
|
|
|
|
|
+ if (field.getName().contains("pointname")) {
|
|
|
|
|
+ field.setAccessible(true); // 私有属性必须设置访问权限
|
|
|
|
|
+ Object resultValue = field.get(obj);
|
|
|
|
|
+ if (resultValue != null && resultValue.toString().trim().length() > 0) {
|
|
|
|
|
+ i++;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ //METER_WORK_IMAGE
|
|
|
|
|
+ MeterWorkImage mwi = new MeterWorkImage();
|
|
|
|
|
+ mwi.setActualFirstNo("R" + oci.getActualFirstNo());
|
|
|
|
|
+ mwi.setImageTime(oci.getCreateTime());
|
|
|
|
|
+ mwi.setImageNum(++i);//因为界面上会存储一个界面截图,所以此处比摄像头要多1条
|
|
|
|
|
+ for (int k = 1; k <= i; k++) {
|
|
|
|
|
+ Field fName = mwi.getClass().getDeclaredField("imageFile" + i);
|
|
|
|
|
+ fName.setAccessible(true);
|
|
|
|
|
+ fName.set(mwi, oci.getBaseSpotNo() + "_" + oci.getActualFirstNo() + "_" + i);
|
|
|
|
|
+ }
|
|
|
|
|
+ meterWorkImageMapper.insertSelective(mwi);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|