package doumeemes.service.ext.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageInfo;
|
import doumeemes.core.constants.ResponseStatus;
|
import doumeemes.core.exception.BusinessException;
|
import doumeemes.core.model.LoginUserInfo;
|
import doumeemes.core.model.PageData;
|
import doumeemes.core.model.PageWrap;
|
import doumeemes.core.utils.Constants;
|
import doumeemes.core.utils.DateUtil;
|
import doumeemes.core.utils.redis.RedisUtil;
|
import doumeemes.dao.business.WOutboundMapper;
|
import doumeemes.dao.business.WTransferMapper;
|
import doumeemes.dao.business.WorkorderMapper;
|
import doumeemes.dao.business.dto.statistics.*;
|
import doumeemes.dao.business.model.*;
|
import doumeemes.dao.ext.*;
|
import doumeemes.dao.ext.dto.*;
|
import doumeemes.dao.ext.vo.*;
|
import doumeemes.service.ext.*;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.stereotype.Service;
|
|
import java.math.BigDecimal;
|
import java.time.LocalDate;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Objects;
|
|
/**
|
* 二维码设置Service实现
|
* @author 江蹄蹄
|
* @date 2022/04/20 11:01
|
*/
|
@Service
|
public class StatisticsServiceImpl implements StatisticsService {
|
|
@Autowired
|
private RedisTemplate<String, Object> redisTemplate;
|
@Autowired
|
private WorkPlansExtMapper workPlansExtMapper;
|
@Autowired
|
private CompanyExtService companyExtService;
|
@Autowired
|
private DepartmentExtService departmentExtService;
|
@Autowired
|
private RouteProcedureExtMapper routeProcedureExtMapper;
|
@Autowired
|
private PlansExtMapper plansExtMapper;
|
@Autowired
|
private WStockExtMapper stockExtMapper;
|
@Autowired
|
private WorkorderRecordExtMapper workorderRecordExtMapper;
|
@Autowired
|
private DeviceCheckExtService deviceCheckExtService;
|
@Autowired
|
private PlansExtService plansExtService;
|
|
@Override
|
public StatisticsPlanDataModel getPlansData(Integer companyId, Integer departId) {
|
DepartmentExtListVO department = departmentExtService.getModelById(companyId,departId);
|
if(department == null || Constants.equalsInteger(department.getDeleted(), Constants.ONE)){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,企业或者部门信息不合法,如有疑问,请联系系统管理员");
|
}
|
QueryWorkPlansDTO workPlans = new QueryWorkPlansDTO();
|
workPlans.setRootDepartId(department.getRootId());
|
workPlans.setDepartId(departId);
|
//查询统计结果
|
StatisticsPlanDataModel model = workPlansExtMapper.getPlansStaticticsData(workPlans);
|
model.setUnqualifiedRate(new BigDecimal(0));
|
if(model.getDoneNUm() !=null && model.getDoneNUm().compareTo(new BigDecimal(0)) != 0){
|
//不良品率
|
model.setUnqualifiedRate(model.getUnqualifiedNum().divide(model.getDoneNUm(),4).multiply(new BigDecimal(100)));
|
}
|
return model;
|
}
|
@Override
|
public StatisticsPlanDataModel getProcedurePlanData(Integer companyId, Integer departId, Integer procedureId){
|
DepartmentExtListVO department = departmentExtService.getModelById(companyId,departId);
|
if(department == null || Constants.equalsInteger(department.getDeleted(), Constants.ONE)){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,企业或者部门信息不合法,如有疑问,请联系系统管理员");
|
}
|
QueryPlansExtDTO param = new QueryPlansExtDTO();
|
param.setRootDepartId(department.getRootId());
|
param.setDepartId(departId);
|
param.setProcedureId(procedureId);
|
//查询统计结果
|
StatisticsPlanDataModel model = plansExtMapper.getPlansStaticticsData(param);
|
model.setUnqualifiedRate(new BigDecimal(0));
|
if(model.getDoneNUm() !=null && model.getDoneNUm().compareTo(new BigDecimal(0)) != 0){
|
//不良品率
|
model.setUnqualifiedRate(model.getUnqualifiedNum().divide(model.getDoneNUm(),4).multiply(new BigDecimal(100)));
|
}
|
return model;
|
}
|
@Override
|
public List<UserProduceTopModel> getUserProduceTopData(Integer companyId, Integer departId, Integer procedureId) {
|
DepartmentExtListVO department = departmentExtService.getModelById(companyId,departId);
|
if(department == null || Constants.equalsInteger(department.getDeleted(), Constants.ONE)){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,企业或者部门信息不合法,如有疑问,请联系系统管理员");
|
}
|
QueryWorkorderRecordExtDTO param = new QueryWorkorderRecordExtDTO();
|
param.setRootDepartId(department.getRootId());
|
param.setProcedureId(procedureId);
|
param.setDepartId(departId);
|
//查询统计结果
|
List<UserProduceTopModel> model = workorderRecordExtMapper.getUserProduceTopData(param);
|
|
return model;
|
}
|
@Override
|
public List<ProcedureProcessModel> getProcedureProcessList(Integer companyId, Integer departId) {
|
DepartmentExtListVO department = departmentExtService.getModelById(companyId,departId);
|
if(department == null || Constants.equalsInteger(department.getDeleted(), Constants.ONE)){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,企业或者部门信息不合法,如有疑问,请联系系统管理员");
|
}
|
QueryPlansExtDTO param = new QueryPlansExtDTO();
|
param.setRootDepartId(department.getRootId());
|
param.setDepartId(departId);
|
//查询统计结果
|
List<ProcedureProcessModel> result = plansExtMapper.selectProcedureProcessList(param);
|
if(result !=null){
|
for(ProcedureProcessModel model : result){
|
//未完成数
|
BigDecimal doneNum =Constants.formatBigdecimal(model.getUnqualifiedNum())
|
.add(Constants.formatBigdecimal(model.getQualifiedNum()));
|
model.setUndoneNum(Constants.formatBigdecimal(model.getNum()).subtract(doneNum));
|
//不良品率
|
if(doneNum.compareTo(new BigDecimal(0) )>0){
|
model.setUnqualifiedRate(model.getUnqualifiedNum().divide(doneNum,4).multiply(new BigDecimal(100)));
|
}
|
}
|
}
|
return result;
|
}
|
@Override
|
public List<StockDataModel> getStockList(Integer companyId, Integer departId){
|
DepartmentExtListVO department = departmentExtService.getModelById(companyId,departId);
|
if(department == null || Constants.equalsInteger(department.getDeleted(), Constants.ONE)){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,企业或者部门信息不合法,如有疑问,请联系系统管理员");
|
}
|
QueryWStockExtDTO param = new QueryWStockExtDTO();
|
param.setRootDepartId(department.getRootId());
|
param.setWmodelDepartId(departId);
|
//查询统计结果
|
List<StockDataModel> result = stockExtMapper.getStatisticsStockList(param);
|
return result;
|
}
|
@Override
|
public List<DepartmentExtListVO> getDepartmentList(Integer companyId){
|
CompanyExtListVO companyExtListVO = companyExtService.getModelById(companyId);
|
if(companyExtListVO == null || Constants.equalsInteger(companyExtListVO.getDeleted(), Constants.ONE)){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,企业或者部门信息不合法,如有疑问,请联系系统管理员");
|
}
|
QueryDepartmentExtDTO param = new QueryDepartmentExtDTO();
|
param.setDeleted(Constants.ZERO);
|
param.setCompanyId(companyId);
|
param.setType(Constants.DEPART_TYPE.com);
|
List<DepartmentExtListVO> result = departmentExtService.findList(param);
|
return result;
|
}
|
@Override
|
public List<Unqualified7DayModel> getUnqualified7DayData(Integer companyId, Integer departId, Integer procedureId) {
|
DepartmentExtListVO department = departmentExtService.getModelById(companyId,departId);
|
if(department == null || Constants.equalsInteger(department.getDeleted(), Constants.ONE)){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,企业或者部门信息不合法,如有疑问,请联系系统管理员");
|
}
|
QueryWorkorderRecordExtDTO param = new QueryWorkorderRecordExtDTO();
|
param.setRootDepartId(department.getRootId());
|
param.setDepartId(departId);
|
param.setProcedureId(procedureId);
|
//查询统计结果
|
List<Unqualified7DayModel> model = workorderRecordExtMapper.getUnqualified7DayData(param);
|
List<Unqualified7DayModel> result = new ArrayList<>();
|
Date date = DateUtil.getCurrentDate();
|
for (int i = 0; i < 7; i++) {
|
Date td = DateUtil.addDaysToDate(date, i-6);
|
Unqualified7DayModel m = getReusltModelByDate(td,model);
|
if(m == null){
|
m = new Unqualified7DayModel();
|
m.setCreateTime(td);
|
m.setUnqualifiedNum(new BigDecimal(0));
|
}
|
result.add(m);
|
}
|
|
return result;
|
}
|
@Override
|
public List<UnqualifiedCateModel> getUnqualifiedCateData(Integer companyId, Integer departId, Integer procedureId) {
|
DepartmentExtListVO department = departmentExtService.getModelById(companyId,departId);
|
if(department == null || Constants.equalsInteger(department.getDeleted(), Constants.ONE)){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,企业或者部门信息不合法,如有疑问,请联系系统管理员");
|
}
|
QueryWorkorderRecordExtDTO param = new QueryWorkorderRecordExtDTO();
|
param.setRootDepartId(department.getRootId());
|
param.setDepartId(departId);
|
param.setProcedureId(procedureId);
|
//查询统计结果
|
List<UnqualifiedCateModel> model = workorderRecordExtMapper.getUnqualifiedCateData(param);
|
|
return model;
|
}
|
@Override
|
public PageData<RecordLogModel> getRecordLogPage(Integer companyId, Integer departId, PageWrap<QueryWorkorderRecordExtDTO> pageWrap){
|
DepartmentExtListVO department = departmentExtService.getModelById(companyId,departId);
|
if(department == null || Constants.equalsInteger(department.getDeleted(), Constants.ONE)){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,企业或者部门信息不合法,如有疑问,请联系系统管理员");
|
}
|
//只能查看当前根组织的数据
|
pageWrap.getModel().setRootDepartId(department.getRootId());
|
pageWrap.getModel().setDepartId(departId);
|
PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity());
|
List<RecordLogModel> result = workorderRecordExtMapper.getRecordLog(pageWrap.getModel());
|
if(result!=null){
|
for(RecordLogModel model : result){
|
model.setUnqualifiedNum(new BigDecimal(0));
|
BigDecimal doneNum = Constants.formatBigdecimal(model.getUnqualifiedNum()).add(Constants.formatBigdecimal(model.getQualifiedNum()));
|
if(model.getUnqualifiedNum() !=null && doneNum.compareTo(new BigDecimal(0)) != 0){
|
//不良品率
|
model.setUnqualifiedRate(model.getUnqualifiedNum().divide(doneNum,4).multiply(new BigDecimal(100)));
|
}
|
}
|
}
|
return PageData.from(new PageInfo<>(result));
|
}
|
@Override
|
public PageData<DeviceCheckExtListVO> getDeviceCheckPage(Integer companyId, Integer departId,PageWrap<QueryDeviceCheckExtDTO> pageWrap){
|
DepartmentExtListVO department = departmentExtService.getModelById(companyId,departId);
|
if(department == null || Constants.equalsInteger(department.getDeleted(), Constants.ONE)){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,企业或者部门信息不合法,如有疑问,请联系系统管理员");
|
}
|
//只能查看当前根组织的数据
|
pageWrap.getModel().setRootDepartId(department.getRootId());
|
pageWrap.getModel().setComDepartId(departId);
|
return deviceCheckExtService.getDeviceCheckPage(pageWrap);
|
}
|
@Override
|
public List<ProcedurePlansPageModel> getProcedurePlansPage(Integer companyId, Integer departId,Integer procedureId){
|
DepartmentExtListVO department = departmentExtService.getModelById(companyId,departId);
|
if(department == null || Constants.equalsInteger(department.getDeleted(), Constants.ONE)){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,企业或者部门信息不合法,如有疑问,请联系系统管理员");
|
}
|
if(procedureId == null){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"工序编码不能为空!");
|
}
|
QueryPlansExtDTO param = new QueryPlansExtDTO();
|
param.setRootDepartId(department.getRootId());
|
param.setDepartId(departId);
|
param.setProcedureId(procedureId);
|
|
List<ProcedurePlansPageModel> result = plansExtMapper.selectStatisticsList(param);
|
|
if(result != null){
|
for(ProcedurePlansPageModel model :result){
|
model.setUnqualifiedRate(new BigDecimal(0));
|
BigDecimal doneNum = Constants.formatBigdecimal(model.getQualifiedNum()).add(Constants.formatBigdecimal(model.getUnqualifiedNum()));
|
if(model.getUnqualifiedNum() !=null && doneNum.compareTo(new BigDecimal(0)) != 0){
|
//不良品率
|
model.setUnqualifiedRate(model.getUnqualifiedNum().divide(doneNum,4).multiply(new BigDecimal(100)));
|
model.setUndoneNum(Constants.formatBigdecimal(model.getNum()).subtract(doneNum));
|
}
|
}
|
}
|
return result;
|
}
|
@Override
|
public List<WorkPlansPageModel> getWorkPlansList(Integer companyId, Integer departId){
|
DepartmentExtListVO department = departmentExtService.getModelById(companyId,departId);
|
if(department == null || Constants.equalsInteger(department.getDeleted(), Constants.ONE)){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,企业或者部门信息不合法,如有疑问,请联系系统管理员");
|
}
|
QueryWorkPlansExtDTO param = new QueryWorkPlansExtDTO();
|
param.setRootDepartId(department.getRootId());
|
param.setDepartId(departId);
|
List<WorkPlansPageModel> result = workPlansExtMapper.selectStatisticsList(param);
|
if(result != null){
|
for(WorkPlansPageModel model :result){
|
if(model.getRouteId() ==null){
|
continue;
|
}
|
//查询工序集合和完成情况
|
QueryRouteProcedureExtDTO r = new QueryRouteProcedureExtDTO();
|
r.setRouteId(model.getRouteId());
|
r.setDeleted(Constants.ZERO);
|
r.setWorkPlanId(model.getId());
|
List<RouteProcedureExtListVO> list = routeProcedureExtMapper.selectStatisticsList(r);
|
List<WorkPlansProcedureModel> rList = new ArrayList<>();
|
if(list != null){
|
for(RouteProcedureExtListVO t : list){
|
WorkPlansProcedureModel tt = new WorkPlansProcedureModel();
|
tt.setProcedureName(t.getProcedureName());
|
tt.setProcedureId(t.getProcedureId());
|
tt.setRate(new BigDecimal(0));
|
if( Constants.formatBigdecimal(t.getPlanNum()).compareTo(new BigDecimal(0)) >0){
|
//完成率
|
tt.setRate(Constants.formatBigdecimal(t.getDoneNum()).divide(t.getPlanNum(),4).multiply(new BigDecimal(100)));
|
}
|
tt.setPlanNum(Constants.formatBigdecimal(t.getPlanNum()));
|
tt.setDoneNum(Constants.formatBigdecimal(t.getDoneNum()));
|
rList.add(tt);
|
//最后一列的良品数/完工数:为当前产品最后一道工序的良品数/完工数
|
model.setNum(t.getPlanNum());
|
model.setQualifiedNum(t.getDoneNum());
|
}
|
}
|
model.setProcedureList(rList);
|
}
|
}
|
return result;
|
}
|
|
private Unqualified7DayModel getReusltModelByDate(Date td, List<Unqualified7DayModel> model ) {
|
if(model !=null){
|
for(Unqualified7DayModel m : model){
|
String d1 = DateUtil.getShortTime(td);
|
String d2 = DateUtil.getShortTime(m.getCreateTime());
|
if(StringUtils.equals(d1,d2)){
|
return m;
|
}
|
}
|
}
|
return null;
|
}
|
|
}
|