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<Object> execute(PhoneRequest<JSONObject> 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<InoutRecord> 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<PInoutDto> 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);
|
}
|
}
|