Commit 8532b5ba authored by 李驰骋's avatar 李驰骋

物料看板接口测试数据

parent a0714286
package com.ximai.mes.kanban.controller;
import com.ximai.common.core.domain.AjaxResult;
import com.ximai.mes.kanban.dto.material.ErpDataDto;
import com.ximai.mes.kanban.dto.material.MesDataDto;
import com.ximai.mes.kanban.dto.task.TaskPlanQuery;
import com.ximai.mes.kanban.dto.task.TaskPlanStatDto;
import com.ximai.mes.kanban.dto.task.TaskStatDto;
import com.ximai.mes.kanban.service.KanbanMaterialService;
import com.ximai.mes.kanban.service.KanbanTaskService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Api("看板物料数据接口")
@RestController
@RequestMapping("/kanban/material")
public class KanbanMaterialController {
@Autowired
private KanbanMaterialService kanbanMaterialService;
@ApiOperation("物料看板MES接口数据")
@PostMapping("/mesData")
public AjaxResult<MesDataDto> mesData() {
MesDataDto rst = kanbanMaterialService.getMesData();
return AjaxResult.success(rst);
}
@ApiOperation("物料看板ERP接口数据")
@PostMapping("/erpData")
public AjaxResult<ErpDataDto> erpData() {
ErpDataDto rst = kanbanMaterialService.getErpData();
return AjaxResult.success(rst);
}
}
package com.ximai.mes.kanban.dto.material;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.math.BigDecimal;
@Data
@AllArgsConstructor
public class BasicDailyData {
@ApiModelProperty("日")
int day;
@ApiModelProperty("值")
BigDecimal value;
}
package com.ximai.mes.kanban.dto.material;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Data
public class ErpDataDto {
@ApiModelProperty("物料配送完成率")
BigDecimal stockInCompleteRatio;
@ApiModelProperty("采购到货完成率")
BigDecimal materialDistRatio;
@ApiModelProperty("salesTimelyDeliveryRatio")
BigDecimal salesTimelyDeliveryRatio;
@ApiModelProperty("库存趋势图")
InventoryTrend inventoryTrend;
@ApiModelProperty("销售出库计划")
List<SalesOutboundPlan> salesOutboundPlanList;
@Data
public static class InventoryTrend{
@ApiModelProperty("生产入库趋势")
List<BasicDailyData> stockInTrend=new ArrayList<>();
@ApiModelProperty("发货出库趋势图")
List<BasicDailyData> stockOutTrend=new ArrayList<>();
}
@Data
public static class SalesOutboundPlan{
@ApiModelProperty("通知单号")
String outApplyNo;
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty("计划出库时间")
Date planOutDate;
@ApiModelProperty("计划数量")
BigDecimal planQuantity;
@ApiModelProperty("已出库数量")
BigDecimal outQuantity;
}
}
package com.ximai.mes.kanban.dto.material;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@Data
public class MesDataDto {
@ApiModelProperty("生产入库完成率")
BigDecimal stockInCompleteRatio;
@ApiModelProperty("生产入库计划")
List<OrderInfoDto> orderInfoList;
@Data
public static class OrderInfoDto{
@ApiModelProperty("生产工单")
String workorderNo;
@ApiModelProperty("产品名称")
String itemName;
@ApiModelProperty("计划入库时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
Date planFinishDate;
@ApiModelProperty("任务数量")
BigDecimal planQuantity;
@ApiModelProperty("完成数量")
BigDecimal finishQuantity;
}
}
......@@ -174,10 +174,10 @@ public class KanbanEquipmentService {
calTime.set(calTime.get().add(this.getCalTime(calPlanWorkunitList, mdWorkunit)));
}
if(rst.getTotalOutput().compareTo(BigDecimal.ZERO)>0){
rst.setQualifiedRatio(qualifiedRatioNumerator.get().divide(rst.getTotalOutput(), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal("100")));//合格率
rst.setQualifiedRatio(qualifiedRatioNumerator.get().divide(rst.getTotalOutput(), 3, BigDecimal.ROUND_DOWN).multiply(new BigDecimal("100")));//合格率
}
if(calTime.get().compareTo(BigDecimal.ZERO)>0){
rst.setEquipAvailability(machineTime.get().divide(calTime.get(), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal("100")));//利用率
rst.setEquipAvailability(machineTime.get().divide(calTime.get(), 3, BigDecimal.ROUND_DOWN).multiply(new BigDecimal("100")));//利用率
}
}
......
package com.ximai.mes.kanban.service;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ximai.common.utils.data.StringUtils;
import com.ximai.mes.cal.domain.CalPlanWorkunit;
import com.ximai.mes.cal.mapper.CalPlanWorkunitMapper;
import com.ximai.mes.constant.QcAbnormalTypeEnum;
import com.ximai.mes.kanban.dto.equipment.EquipmentQuery;
import com.ximai.mes.kanban.dto.equipment.EquipmentStatDto;
import com.ximai.mes.kanban.dto.material.BasicDailyData;
import com.ximai.mes.kanban.dto.material.ErpDataDto;
import com.ximai.mes.kanban.dto.material.MesDataDto;
import com.ximai.mes.md.domain.MdWorkunit;
import com.ximai.mes.md.service.IMdWorkunitService;
import com.ximai.mes.pro.domain.ProFeedback;
import com.ximai.mes.pro.domain.vo.ProFeedbackVo;
import com.ximai.mes.pro.dto.task.WorkunitProcessingDto;
import com.ximai.mes.pro.mapper.task.ProTaskWorkunitMapper;
import com.ximai.mes.pro.service.IProFeedbackService;
import com.ximai.mes.qc.domain.QcAbnormalReport;
import com.ximai.mes.qc.dto.QcAbnormalReportDto;
import com.ximai.mes.qc.dto.QcAbnormalReportStatusEnum;
import com.ximai.mes.qc.mapper.QcAbnormalReportMapper;
import com.ximai.mes.qc.service.IQcAbnormalReportService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.PostMapping;
import java.math.BigDecimal;
import java.time.Duration;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.*;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
@Service
public class KanbanMaterialService {
@Autowired
private IProFeedbackService feedbackService;
@Autowired
private ProTaskWorkunitMapper taskWorkunitMapper;
@Autowired
private CalPlanWorkunitMapper calPlanWorkunitMapper;
@Autowired
private IMdWorkunitService workunitService;
public ErpDataDto getErpData(){
ErpDataDto rst = new ErpDataDto();
rst.setMaterialDistRatio(new BigDecimal("42"));
//趋势图
ErpDataDto.InventoryTrend inventoryTrend = new ErpDataDto.InventoryTrend();
List<BasicDailyData> stockInTrend = new ArrayList<>();
LocalDateTime start = LocalDateTime.now().withDayOfMonth(1).with(LocalTime.MIN);
LocalDateTime end = start.plusMonths(1).plusDays(-1).with(LocalTime.MAX);
int dayOfMonth = end.getDayOfMonth();
for(int i=1;i<=dayOfMonth;i++){
stockInTrend.add(new BasicDailyData(i, new BigDecimal(new Random().nextInt(10))));
}
inventoryTrend.setStockInTrend(stockInTrend);
List<BasicDailyData> stockOutTrend = new ArrayList<>();
inventoryTrend.setStockOutTrend(stockOutTrend);
for(int i=1;i<=dayOfMonth;i++){
stockOutTrend.add(new BasicDailyData(i, new BigDecimal(new Random().nextInt(10))));
}
rst.setInventoryTrend(inventoryTrend);
rst.setStockInCompleteRatio(new BigDecimal("24.2"));
rst.setSalesTimelyDeliveryRatio(new BigDecimal("43.2"));
List<ErpDataDto.SalesOutboundPlan> salesOutboundPlanList = new ArrayList<>();
for(int i=0;i<8;i++){
ErpDataDto.SalesOutboundPlan plan = new ErpDataDto.SalesOutboundPlan();
plan.setPlanOutDate(new Date());
plan.setOutApplyNo("JS201232" + i);
plan.setOutQuantity(new BigDecimal(new Random().nextInt(20)));
plan.setPlanQuantity(new BigDecimal(new Random().nextInt(20)));
salesOutboundPlanList.add(plan);
}
rst.setSalesOutboundPlanList(salesOutboundPlanList);
return rst;
}
public MesDataDto getMesData(){
MesDataDto rst = new MesDataDto();
rst.setStockInCompleteRatio(new BigDecimal("52"));
List<MesDataDto.OrderInfoDto> orderInfoList = new ArrayList<>();
for(int i=0;i<10;i++){
MesDataDto.OrderInfoDto temp = new MesDataDto.OrderInfoDto();
temp.setItemName("测试"+i);
temp.setWorkorderNo("B20123212"+i);
temp.setPlanFinishDate(new Date());
temp.setFinishQuantity(new BigDecimal("200"));
temp.setPlanQuantity(new BigDecimal("300"));
orderInfoList.add(temp);
}
rst.setOrderInfoList(orderInfoList);
return rst;
}
}
......@@ -41,37 +41,36 @@ public interface ErpService {
@PostMapping(value = "/invma/getInvmaList")
ErpResponseResult<List<MdItemTypeErpDto>> getInvmaList(MdItemTypeErpQuery itemTypeErpQuery);
@ApiLog(businessType = BusinessType.QUERY, inOutType = InOutType.OUT)
@ApiOperation(value = "查询工单")
@ApiOperation(value = "查询ERP工单")
@PostMapping(value = "/mocta/getMoctaList")
ErpResponseResult<List<ProWorkorderErpDto>> getWorkorderList(ProWorkorderErpQuery workorderErpQuery);
@ApiLog(businessType = BusinessType.UPDATE, inOutType = InOutType.OUT)
@ApiOperation(value = "工单同步标识")
@ApiOperation(value = "ERP工单同步标识")
@PostMapping(value = "/mocta/syncMark")
ErpResponseResult<Object> workorderSyncMark(ProWorkorderSyncMarkUpdate syncMarkUpdate);
@ApiLog(businessType = BusinessType.UPDATE, inOutType = InOutType.OUT)
@ApiOperation(value = "物料同步标识")
@ApiOperation(value = "ERP物料同步标识")
@PostMapping(value = "/invmb/syncMark")
ErpResponseResult<Object> materialSyncMark(MdItemSyncMarkUpdate syncMarkUpdate);
@ApiLog(businessType = BusinessType.UPDATE, inOutType = InOutType.OUT)
@ApiOperation(value = "工单状态更新")
@ApiOperation(value = "ERP工单状态更新")
@PostMapping(value = "/mocta/updateState")
ErpResponseResult<Object> updateWorkorderState(ProWorkorderStateUpdate stateUpdate);
@ApiLog(businessType = BusinessType.UPDATE, inOutType = InOutType.OUT)
@ApiOperation(value = "请购单创建")
@ApiOperation(value = "ERP请购单创建")
@PostMapping(value = "/purta/create")
ErpResponseResult<Object> purchasingRequisitionCreate(PurchasingRequisitionCreate create);
@ApiLog(businessType = BusinessType.UPDATE, inOutType = InOutType.OUT)
@ApiOperation(value = "完工入库创建")
@ApiOperation(value = "ERP完工入库创建")
@PostMapping(value = "/moctf/create")
ErpResponseResult<Object> finishStockInCreate(FinishStockInCreate create);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment