| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 |
- package com.steerinfo.dil.service.impl;
- import com.steerinfo.dil.config.WebExceptionHandler;
- import com.steerinfo.dil.mapper.OmsOrderChildMapper;
- import com.steerinfo.dil.mapper.OmsTransOrderMapper;
- import com.steerinfo.dil.mapper.TmsReplaceFrontResultMapper;
- import com.steerinfo.dil.mapper.TmsSignInResultMapper;
- import com.steerinfo.dil.model.*;
- import com.steerinfo.dil.util.DaZongUtil;
- import com.steerinfo.dil.util.DataChange;
- import com.steerinfo.framework.mapper.IBaseMapper;
- import com.steerinfo.framework.service.impl.BaseServiceImpl;
- import org.apache.ibatis.annotations.One;
- import org.apache.log4j.Logger;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.scheduling.annotation.Scheduled;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import java.math.BigDecimal;
- import java.text.DateFormat;
- import java.text.SimpleDateFormat;
- import java.util.*;
- /**
- * TmsSignInResult服务实现:
- * @author generator
- * @version 1.0-SNAPSHORT 2023-11-14 02:50
- * 类描述
- * 修订历史:
- * 日期:2023-11-14
- * 作者:generator
- * 参考:
- * 描述:TmsSignInResult服务实现
- * @see null
- * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
- */
- @Service(value = "tmsSignInResultService")
- public class TmsSignInResultServiceImpl {
- static final Logger log = Logger.getLogger(TmsSignInResultServiceImpl.class);
- @Autowired
- private TmsSignInResultMapper tmsSignInResultMapper;
- @Autowired
- private TmsReplaceFrontResultMapper tmsReplaceFrontResultMapper;
- @Autowired
- private OmsTransOrderMapper omsTransOrderMapper;
- @Autowired
- OmsOrderChildMapper omsOrderChildMapper;
- @Autowired
- OmsTransOrderServiceImpl omsTransOrderService;
- @Autowired
- TmsQueueResultServiceImpl tmsQueueResultService;
- @Autowired
- DaZongUtil daZongUtil;
- @Autowired
- OmsOrderChildServiceImpl omsOrderChildService;
- @Transactional(rollbackFor = Exception.class)
- public String signIn(Map<String, Object> map) throws Exception {
- //查询运输订单
- List<BigDecimal> transOrderIds = omsTransOrderMapper.getTransOrderIdByNumber(map);
- if(transOrderIds.size() != 1){
- throw new Exception("操作失败!运输订单异常!");
- }
- OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(transOrderIds.get(0));
- BigDecimal isBan = DataChange.dataToBigDecimal(omsTransOrder.getAlternateFields24());
- if(isBan.compareTo(BigDecimal.ONE) == 0){
- throw new Exception("该订单已禁用,无法签到!");
- }
- //查询状态为正在执行的运单数量(仅查采购与销售)
- List<BigDecimal> orderIds = omsTransOrderMapper.getTransOrderByDriver(omsTransOrder.getDriverId());
- if(orderIds.size() > 0 && !"生产".equals(omsTransOrder.getBusinessScene())){
- for(BigDecimal orderId : orderIds){
- try {
- omsTransOrderService.correctTransOrder(orderId);
- orderIds = omsTransOrderMapper.getTransOrderByDriver(omsTransOrder.getDriverId());
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- if (orderIds.size() > 0 && !"生产".equals(omsTransOrder.getBusinessScene())) {
- //已有正在签到的运单
- //判断正在执行中的运单是否与当前签到的运单是否相同
- if(transOrderIds.get(0).compareTo(orderIds.get(0)) == 0){
- //查询换车头实绩
- Map<String,Object> searchMap = new HashMap<>();
- searchMap.put("transOrderId",transOrderIds.get(0));
- searchMap.put("deleted",0);
- List<TmsReplaceFrontResult> replaceFrontResults = tmsReplaceFrontResultMapper.selectByParameters(searchMap);
- if(replaceFrontResults.size() != 0 && replaceFrontResults.get(0).getReplaceTime() != null){
- Map<String,Object> driver = omsTransOrderMapper.findDriverMes(omsTransOrder.getDriverId());
- if(driver.get("innerCode") == null || driver.get("innerCode").equals(" ")){
- throw new Exception("司机没有身份证内码,无法线上签到!请线下签到或联系管理员录入身份证内码!");
- }
- //换车头后点击签到,推送大宗签到
- try{
- DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- Map<String, Object> params = new HashMap<>();
- params.put("rjhh", omsTransOrder.getSerialNumber());
- params.put("qdsj", dateFormat.format(new Date()));
- daZongUtil.execute("30010000039", new Map[]{params});
- }catch (Exception e){
- log.error(e.getMessage());
- throw new Exception("已签到,请进厂!");
- }
- return "签到成功,请进厂!";
- }
- throw new Exception("请勿重复签到!");
- }
- throw new Exception("签到失败,请先完成当前运单!");
- }else{
- omsTransOrder.setConfirmReason("系统签到");
- omsTransOrder.setDriverConfirmTime(new Date());
- omsTransOrder.setOrderCommunicationDuration(
- new BigDecimal(
- (omsTransOrder.getDriverConfirmTime().getTime() - omsTransOrder.getIssueTime().getTime()) / 60000
- )
- );
- omsTransOrder.setUpdateUsername(map.get("userName").toString());
- omsTransOrder.setUpdateTime(new Date());
- omsTransOrder.setDeleted(new BigDecimal(5));
- omsTransOrderMapper.updateByPrimaryKeySelective(omsTransOrder);
- //获取物资子表
- if("采购".equals(omsTransOrder.getBusinessScene())) {
- Map<String, Object> objectObjectHashMap = new HashMap<>();
- objectObjectHashMap.put("transOrderId",omsTransOrder.getTransOrderId());
- objectObjectHashMap.put("deleted",0);
- List<OmsOrderChild> omsOrderChildList = omsOrderChildMapper.selectByParameters(objectObjectHashMap);
- if(omsOrderChildList.get(0).getMaterialNumber() == null || omsOrderChildList.get(0).getMaterialNumber().compareTo(BigDecimal.ZERO) == 0) {
- //获取原发
- Map<String,Object> orderMap = omsTransOrderService.matching(omsTransOrder.getTransOrderId());
- if(orderMap == null || DataChange.dataToBigDecimal(orderMap.get("materialNumber")).compareTo(BigDecimal.ZERO) == 0) {
- log.info("未匹配到原发运输订单"+omsTransOrder.getTransOrderId());
- throw new Exception("未匹配到原发,请联系派车人手动录入原发");
- }
- omsOrderChildList.get(0).setMaterialNumber(DataChange.dataToBigDecimal(orderMap.get("materialNumber")));
- omsOrderChildList.get(0).setAlternateFields15(orderMap.get("oldTransOrderId").toString());
- omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChildList.get(0));
- omsTransOrderService.dispatchPushUpdateYf(omsTransOrder.getTransOrderId(),omsOrderChildList.get(0));
- }
- }
- //推送大宗
- Map<String,Object> config = omsTransOrderMapper.getConfigByName("接单推送大宗");
- config = config == null ? new HashMap<>() : config;
- if("是".equals(config.get("valueString"))){
- omsTransOrderService.dispatchPushById(omsTransOrder.getTransOrderId());
- }else{
- log.info("配置如此,无需上传大宗");
- }
- }
- //查询运输订单下的签到实绩
- Map<String,Object> searchMap = new HashMap<>();
- searchMap.put("transOrderId",transOrderIds.get(0));
- searchMap.put("deleted",0);
- List<TmsSignInResult> list = tmsSignInResultMapper.selectByParameters(searchMap);
- Map<String,Object> config = omsTransOrderMapper.getConfigByName("签到过期时间");
- config = config == null ? new HashMap<>() : config;
- BigDecimal expireHour = DataChange.dataToBigDecimal(config.get("valueNumber"));
- for(TmsSignInResult item : list){
- item.setSignInMode(map.get("signInMode").toString());
- item.setSignInAddress(map.get("signInAddress").toString());
- item.setLocationMode(map.get("locationMode").toString());
- item.setSignInTime(new Date());
- if(expireHour.compareTo(BigDecimal.ZERO) > 0){
- item.setExpireTime(
- new Date(item.getSignInTime().getTime() + expireHour.multiply(new BigDecimal(1000*60*60)).longValue())
- );
- }
- item.setResultImage(DataChange.getString(map.get("resultImage")));
- item.setUpdateTime(new Date());
- item.setUpdateUsername(map.get("userName").toString());
- tmsSignInResultMapper.updateByPrimaryKeySelective(item);
- omsTransOrderService.updateOrderStatus(transOrderIds.get(0),item.getSegmentSqe(),"签到",item.getUpdateUsername());
- omsOrderChildService.updateOrderChildInfo(transOrderIds.get(0),null,item.getSignInTime(),"签到");
- map.put("resultId",item.getResultId());//返回给日志记录
- List<TmsReplaceFrontResult> replaceFrontResults = tmsReplaceFrontResultMapper.selectByParameters(searchMap);
- if(replaceFrontResults.size() == 0){
- if ("采购".equals(omsTransOrder.getBusinessScene()) || "销售".equals(omsTransOrder.getBusinessScene())) {
- Map<String,Object> driver = omsTransOrderMapper.findDriverMes(omsTransOrder.getDriverId());
- if(driver.get("innerCode") == null || driver.get("innerCode").equals(" ")){
- throw new Exception("司机没有身份证内码,无法线上签到!请线下签到或联系管理员录入身份证内码!");
- }
- //如果运输实绩中没有换车头实绩,直接推送大宗
- DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- Map<String, Object> params = new HashMap<>();
- params.put("rjhh", omsTransOrder.getSerialNumber());
- params.put("qdsj", dateFormat.format(item.getSignInTime()));
- daZongUtil.execute("30010000039", new Map[]{params});
- }
- }
- return "签到成功!";
- }
- throw new Exception("没有能修改的记录!");
- }
- public List<Map<String, Object>> getSignInResultList(Map<String, Object> map) {
- return tmsSignInResultMapper.getTmsSignInResultList(map);
- }
- @Transactional(rollbackFor = Exception.class)
- public String signInExpireCheck() {
- List<TmsSignInResult> list = tmsSignInResultMapper.getSignInExpireList();
- List<OmsTransOrder> transOrders = new ArrayList<>();
- for(TmsSignInResult item : list){
- //回退运单及签到实绩
- item.setLocationMode(null);
- item.setSignInMode(null);
- item.setSignInTime(null);
- item.setSignInTime(null);
- item.setUpdateTime(new Date());
- item.setUpdateUsername("system");
- OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(item.getTransOrderId());
- omsTransOrder.setOrderStatus("签到过期");
- omsTransOrder.setCurrentLineSeq(item.getSegmentSqe().subtract(BigDecimal.ONE));
- omsTransOrder.setUpdateTime(new Date());
- omsTransOrder.setUpdateUsername("system");
- transOrders.add(omsTransOrder);
- }
- if(list.size() > 0){
- tmsSignInResultMapper.batchUpdate(list);
- omsTransOrderMapper.batchUpdate(transOrders);
- }
- return "执行成功!";
- }
- }
|