package com.ld.igds.phone.service.impl; import com.alibaba.fastjson.JSONObject; import com.ld.igds.constant.RedisConst; import com.ld.igds.inout.InoutConstant; import com.ld.igds.inout.dto.InoutData; import com.ld.igds.phone.constant.PhoneConstant; import com.ld.igds.phone.util.PhoneRespUtil; import com.ld.igds.phone.dto.AuthUser; import com.ld.igds.phone.dto.DtoInoutReal; import com.ld.igds.phone.dto.DtoInoutRecord; import com.ld.igds.phone.dto.PhoneResponse; import com.ld.igds.phone.param.PhoneRequest; import com.ld.igds.phone.service.PhoneService; import com.ld.igds.phone.util.PhoneUtil; import com.ld.igds.util.RedisUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; /** * 出入库实时信息接口实现 * * @author chen */ @Service public class ServiceImpl5203 implements PhoneService { @Autowired private RedisUtil redisUtil; @Autowired private PhoneUtil phoneUtil; @Override public String getInterfaceId() { return PhoneConstant.API_PHONE_5203; } @SuppressWarnings("unchecked") @Override public PhoneResponse execute(PhoneRequest req, AuthUser authUser) throws Exception { //获取缓存中当天正在进行的出入库流水 String key = RedisConst.buildKey(authUser.getCompanyId(), InoutConstant.KEY_INOUT_LIST); List list1 = (List) redisUtil.get(key); //获取缓存中当天已经完成的出入库流水 key = RedisConst.buildKey(authUser.getCompanyId(), InoutConstant.KEY_INOUT_COMPLETE_LIST); List list2 = (List) redisUtil.get(key); DtoInoutReal dto = new DtoInoutReal(); List dtoList = new ArrayList<>(); DtoInoutRecord inoutRecord; double inNum = 0.0; double inCompleteNum = 0.0; double outNum = 0.0; double outCompleteNum = 0.0; //统计未完成情况 if(list1 != null && !list1.isEmpty()){ for (InoutData inoutData : list1) { if(authUser.getDeptId().equals(inoutData.getDeptId())){ inoutRecord = new DtoInoutRecord(); inoutRecord.setId(inoutData.getId()); inoutRecord.setCompanyId(inoutData.getCompanyId()); inoutRecord.setType(inoutData.getType()); if (InoutConstant.TYPE_IN.equals(inoutData.getType())) { inoutRecord.setTypeName("入库"); inNum++; } else { inoutRecord.setTypeName("出库"); outNum++; } inoutRecord.setUserName(inoutData.getUserName()); inoutRecord.setPlateNum(inoutData.getPlateNum()); inoutRecord.setProgress(inoutData.getProgress()); inoutRecord.setProgressName(phoneUtil.getProgressName(authUser.getCompanyId(), inoutData.getProgress())); inoutRecord.setDepotId(inoutData.getDepotId()); inoutRecord.setDepotName(phoneUtil.getDepotName(authUser.getCompanyId(), inoutData.getDepotId())); dtoList.add(inoutRecord); } } } //统计完成情况 if(list2 != null && !list2.isEmpty()) { for (InoutData inoutData : list2) { if(authUser.getDeptId().equals(inoutData.getDeptId())){ if (InoutConstant.TYPE_IN.equals(inoutData.getType())) { inCompleteNum++; } else { outCompleteNum++; } } } } if(!dtoList.isEmpty()){ dto.setListInout(dtoList); } //设置登记数、完成数以及完成率 dto.setInCompleteNum(inCompleteNum); dto.setInSumNum(inNum + inCompleteNum); if(dto.getInSumNum()!=0){ dto.setPerInComplete(String.format("%.2f",inCompleteNum / (inNum + inCompleteNum) * 100) + "%"); } dto.setOutCompleteNum(outCompleteNum); dto.setOutSumNum(outNum + outCompleteNum); if(dto.getOutSumNum()!=0) { dto.setPerOutComplete(String.format("%.2f",outCompleteNum / (outNum + outCompleteNum) * 100) + "%"); } return PhoneRespUtil.success(dto, req); } }