package com.fzzy.igds.app.v1.service.impl; import com.alibaba.fastjson.JSONObject; import com.fzzy.common.constant.RespCodeEnum; import com.fzzy.igds.app.v1.constant.PhoneConstant; import com.fzzy.igds.app.v1.data.AuthUser; import com.fzzy.igds.app.v1.data.ParamInoutRecord; import com.fzzy.igds.app.v1.data.PhoneRequest; import com.fzzy.igds.app.v1.data.PhoneResponse; import com.fzzy.igds.app.v1.dto.PInoutDto; import com.fzzy.igds.app.v1.dto.PInoutSum; import com.fzzy.igds.app.v1.service.PhoneService; import com.fzzy.igds.app.v1.util.PhoneRespUtil; import com.fzzy.igds.app.v1.util.PhoneUtil; import com.fzzy.igds.constant.FoodVariety; import com.fzzy.igds.constant.InoutConstant; import com.fzzy.igds.constant.InoutProgress; import com.fzzy.igds.data.InoutData; import com.fzzy.igds.data.InoutParam; import com.fzzy.igds.domain.InoutRecord; import com.fzzy.igds.service.InoutRecordService; import com.fzzy.igds.utils.NumberUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * @Author: YYC * @Description: 粮实时记录 * @DateTime: 2026-1-12 14:43 **/ @Service public class ServiceImpl5405 implements PhoneService { @Resource private InoutRecordService inoutRecordService; @Resource private PhoneUtil phoneUtil; @Override public String getInterfaceId() { return PhoneConstant.API_PHONE_5405; } @Override public PhoneResponse execute(PhoneRequest req, AuthUser authUser) throws Exception { //转化为对象 ParamInoutRecord param = JSONObject.parseObject(req.getData().toString(), ParamInoutRecord.class); if (null == param) { return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!"); } //参数验证 if (StringUtils.isEmpty(param.getDeptId())) { return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!"); } InoutParam inoutParam = new InoutParam(); inoutParam.setDeptId(param.getDeptId()); inoutParam.setStart(new Date()); inoutParam.setEnd(new Date()); //当前流程中 List listProgress = inoutRecordService.listInout(inoutParam); PInoutSum dto = new PInoutSum(); double inNum = 0.0; double inCompleteNum = 0.0; double outNum = 0.0; double outCompleteNum = 0.0; //统计未完成情况 List listDto = new ArrayList<>(); PInoutDto inoutDto; if (listProgress != null && !listProgress.isEmpty()) { for (InoutRecord inoutData : listProgress) { inoutDto = new PInoutDto(); BeanUtils.copyProperties(inoutData, inoutDto); if (InoutConstant.TYPE_IN.equals(inoutData.getType())) { inoutDto.setTypeName("入库"); inNum++; } else { inoutDto.setTypeName("出库"); outNum++; } if (InoutConstant.TYPE_IN.equals(inoutData.getType()) && InoutConstant.PROGRESS_RECORD.equals(inoutData.getProgress())) { inCompleteNum++; } else if (InoutConstant.TYPE_OUT.equals(inoutData.getType()) && InoutConstant.PROGRESS_RECORD.equals(inoutData.getProgress())) { outCompleteNum++; } inoutDto.setProgressName(InoutProgress.getMsg(inoutData.getProgress())); inoutDto.setDepotName(phoneUtil.getDepotName(authUser.getCompanyId(), inoutData.getDepotId())); inoutDto.setFoodVarietyName(FoodVariety.getMsg(inoutData.getFoodVariety())); if (!InoutConstant.PROGRESS_RECORD.equals(inoutData.getProgress())) { listDto.add(inoutDto); } } } dto.setListInout(listDto); //设置登记数、完成数以及完成率 dto.setInCompleteNum(inCompleteNum); dto.setInSumNum(inNum); if (dto.getInSumNum() != 0) { dto.setPerInComplete(NumberUtil.keepPrecision(inCompleteNum / inNum * 100, 2)); } dto.setOutCompleteNum(outCompleteNum); dto.setOutSumNum(outNum); if (dto.getOutSumNum() != 0) { dto.setPerOutComplete(NumberUtil.keepPrecision(outCompleteNum / outNum * 100, 2)); } dto.setTime(new Date()); return PhoneRespUtil.success(dto, req); } }