package com.ld.igds.phone35.service.impl; import com.alibaba.fastjson.JSONObject; import com.ld.igds.constant.FoodVariety; import com.ld.igds.constant.RespCodeEnum; import com.ld.igds.inout.InoutConstant; import com.ld.igds.inout.dto.InoutData; import com.ld.igds.inout.service.InoutService; import com.ld.igds.phone35.constant.Phone35Constant; import com.ld.igds.phone35.dto.Phone35AuthUser; import com.ld.igds.phone35.dto.Phone35InoutDto; import com.ld.igds.phone35.dto.Phone35InoutSum; import com.ld.igds.phone35.dto.PhoneResponse; import com.ld.igds.phone35.param.Phone35InoutCommonParam; import com.ld.igds.phone35.param.Phone35Request; import com.ld.igds.phone35.service.Phone35Service; import com.ld.igds.phone35.util.Phone35Util; import com.ld.igds.phone35.util.PhoneRespUtil; import com.ld.igds.util.NumberUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * 实时出入库信息 * * @author chen * @date 2023-01-16 16:58 */ @Service public class Phone35ServiceImpl5205 implements Phone35Service { @Autowired private InoutService inoutService; @Autowired private Phone35Util phone35Util; @Override public String getInterfaceId() { return Phone35Constant.API_PHONE_5205; } @SuppressWarnings("unchecked") @Override public PhoneResponse execute(Phone35Request req, Phone35AuthUser phone35AuthUser) throws Exception { //转化为对象 Phone35InoutCommonParam param = JSONObject.parseObject(req.getData().toString(), Phone35InoutCommonParam.class); if (null == param) { return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!"); } //参数验证 if (StringUtils.isEmpty(param.getDeptId())) { return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!"); } //当前流程中 List listProgress = inoutService.getListInoutCache(param.getDeptId()); //当前已经完成 List listComplete = inoutService.getCompleteListInoutCache(param.getDeptId()); Phone35InoutSum dto = new Phone35InoutSum(); double inNum = 0.0; double inCompleteNum = 0.0; double outNum = 0.0; double outCompleteNum = 0.0; //统计未完成情况 List listDto = new ArrayList<>(); Phone35InoutDto phone35InoutDto; if (listProgress != null && !listProgress.isEmpty()) { for (InoutData inoutData : listProgress) { phone35InoutDto = new Phone35InoutDto(); BeanUtils.copyProperties(inoutData, phone35InoutDto); if (InoutConstant.TYPE_IN.equals(inoutData.getType())) { phone35InoutDto.setTypeName("入库"); inNum++; } else { phone35InoutDto.setTypeName("出库"); outNum++; } phone35InoutDto.setProgressName(phone35Util.getProgressName(phone35AuthUser.getCompanyId(), inoutData.getProgress())); phone35InoutDto.setDepotName(phone35Util.getDepotName(phone35AuthUser.getCompanyId(), inoutData.getDepotId())); phone35InoutDto.setFoodVarietyName(FoodVariety.getMsg(inoutData.getFoodVariety())); listDto.add(phone35InoutDto); } } //统计完成情况 if (listComplete != null && !listComplete.isEmpty()) { for (InoutData inoutData : listComplete) { if (phone35AuthUser.getDeptId().equals(inoutData.getDeptId())) { if (InoutConstant.TYPE_IN.equals(inoutData.getType())) { inCompleteNum++; } else { outCompleteNum++; } } } } dto.setListInout(listDto); //设置登记数、完成数以及完成率 dto.setInCompleteNum(inCompleteNum); dto.setInSumNum(inNum + inCompleteNum); if (dto.getInSumNum() != 0) { dto.setPerInComplete(NumberUtil.keepPrecision(inCompleteNum / (inNum + inCompleteNum) * 100, 2)); } dto.setOutCompleteNum(outCompleteNum); dto.setOutSumNum(outNum + outCompleteNum); if (dto.getOutSumNum() != 0) { dto.setPerOutComplete(NumberUtil.keepPrecision(outCompleteNum / (outNum + outCompleteNum) * 100, 2)); } dto.setTime(new Date()); return PhoneRespUtil.success(dto, req); } }