Commit a8892fdc authored by 夏东伟's avatar 夏东伟

mes工单模块开发

parent d69f676d
......@@ -13,6 +13,7 @@ import net.vtstar.zhongtong.avi.equipment.service.BasicInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.Assert;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.validation.Valid;
......@@ -79,7 +80,7 @@ public class BasicInfoController {
" \"code\": \"工位编号,字符串类型\"\n" +
" \"keyStation\": \"是否为关键工位,boolean\"\n" +
"}")
@PostMapping("/stationPage")
@PostMapping("/stationPage")
public Return pageListStation(@RequestBody SearchVo pageFilter) {
return Return.success(new PageInfo<>(basicInfoService.findPageStation(pageFilter.toJSONObject())));
}
......@@ -131,4 +132,17 @@ public class BasicInfoController {
ParamAssert.notNull(areaId, "区域ID为NULL!");
return Return.success(basicInfoService.getPaintshopLane(areaId));
}
@ApiOperation("工单导入")
@PostMapping(value = "/upload")
@ResponseBody
public Return uploadExcel(@RequestParam("file") MultipartFile file) {
ParamAssert.notNull(file, "导入文件不能为空!");
Boolean resolveExcel = basicInfoService.resolveExcel(file);
if (resolveExcel) {
return Return.success();
} else {
return Return.failed("工单导入失败!");
}
}
}
......@@ -4,17 +4,14 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.vtstar.user.search.Search;
import org.hibernate.validator.constraints.Length;
import net.vtstar.zhongtong.avi.global.web.Show;
import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
* @Author: xiadongwei
* @Date: 2019/10/20 9:31
* @Date: 2019/10/29 9:31
*/
@ApiModel("涂装车间工单表")
@Data
......@@ -22,53 +19,51 @@ import java.util.Date;
@Table(name = "mes_work_order_info")
public class MesWorkOrderInfo {
@Id
private Long id;
@ApiModelProperty(notes = "车间编号")
@NotNull(message = "车间编号不能为空")
@Length(max = 20, message = "车间编号长度不能大于{max}")
@Column(name = "workshop_code")
@Show(label = "销售订单号")
@ApiModelProperty(notes = "销售订单号")
@Column(name = "sales_order_no")
@Search
private String workshopCode;
private String salesOrderNo;
@ApiModelProperty(notes = "车间名称")
@NotNull(message = "车间名称不能为空")
@Length(max = 50, message = "车间名称长度不能大于{max}")
@Column(name = "workshop_name")
@Show(label = "主计划工单号")
@ApiModelProperty(notes = "主计划工单号")
@Column(name = "master_work_order_no")
@Search
private String workshopName;
private String masterWorkOrderNo;
@ApiModelProperty(notes = "设备分类")
@NotNull(message = "设备分类不能为空")
@Length(max = 50, message = "设备分类长度不能大于{max}")
@Column(name = "equip_type")
@Show(label = "车间计划工单号")
@ApiModelProperty(notes = "车间计划工单号")
@Column(name = "work_order_no")
@Search
private String equipType;
private String workOrderNo;
@ApiModelProperty(notes = "设备编号")
@NotNull(message = "设备名称不能为空")
@Length(max = 100, message = "设备编号长度不能大于{max}")
@Column(name = "equip_code")
@Search
private String equipCode;
@Show(label = "车型")
@ApiModelProperty(notes = "车型")
@Column(name = "vehicle_model")
private String vehicleModel;
@ApiModelProperty(notes = "设备名称")
@Length(max = 100, message = "设备名称长度不能大于{max}")
@Column(name = "alias")
@Search
private String alias;
@Show(label = "订单数量")
@ApiModelProperty(notes = "订单数量")
@Column(name = "order_quantity")
private Integer orderQuantity;
@Show(label = "单位")
@ApiModelProperty(notes = "单位")
@Column(name = "unit")
private String unit;
@ApiModelProperty(notes = "设备厂商")
@Length(max = 100, message = "设备厂商长度不能大于{max}")
@Column(name = "equip_factory")
private String equipFactory;
@Show(label = "车间")
@ApiModelProperty(notes = "车间")
@Column(name = "workshop")
private String workshop;
@ApiModelProperty(notes = "创建时间")
@Column(name = "create_time")
private Date createTime;
@Show(label = "产线")
@ApiModelProperty(notes = "产线")
@Column(name = "production_line")
private String productionLine;
@ApiModelProperty(notes = "更新时间")
@Column(name = "update_time")
private Date updateTime;
@Show(label = "读取标识")
@ApiModelProperty(notes = "读取标识")
@Column(name = "reading_id")
private String readingId;
}
package net.vtstar.zhongtong.avi.equipment.mapper;
import net.vtstar.user.mybatis.BaseMapper;
import net.vtstar.zhongtong.avi.equipment.domain.MesWorkOrderInfo;
import org.apache.ibatis.annotations.Mapper;
/**
* @Author: xiadongwei
* @Date: 2019/9/20 9:31
*/
@Mapper
public interface MesWorkOrderMapper extends BaseMapper<MesWorkOrderInfo> {
}
......@@ -8,19 +8,22 @@ import net.vtstar.user.mybatis.provider.OrderBy;
import net.vtstar.user.mybatis.provider.WhereFilter;
import net.vtstar.user.search.service.SearchService;
import net.vtstar.utils.asserts.ParamAssert;
import net.vtstar.zhongtong.avi.equipment.domain.EquipInfo;
import net.vtstar.zhongtong.avi.equipment.domain.PaintshopArea;
import net.vtstar.zhongtong.avi.equipment.domain.PaintshopLane;
import net.vtstar.zhongtong.avi.equipment.domain.PaintshopStation;
import net.vtstar.zhongtong.avi.equipment.mapper.BasicInfoMapper;
import net.vtstar.zhongtong.avi.equipment.mapper.PaintshopAreaMapper;
import net.vtstar.zhongtong.avi.equipment.mapper.PaintshopLaneMapper;
import net.vtstar.zhongtong.avi.equipment.mapper.PaintshopStationMapper;
import net.vtstar.zhongtong.avi.equipment.domain.*;
import net.vtstar.zhongtong.avi.equipment.mapper.*;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
......@@ -47,6 +50,12 @@ public class BasicInfoService {
@Autowired
private PaintshopLaneMapper paintshopLaneMapper;
@Autowired
private MesWorkOrderMapper mesWorkOrderMapper;
private static final String SUFFIX_2003 = ".xls";
private static final String SUFFIX_2007 = ".xlsx";
/**
* 分页查询设备
*/
......@@ -208,4 +217,74 @@ public class BasicInfoService {
addFilter("area_id", Operation.EQUAL, areaId);
}}, PaintshopLane.class);
}
public Boolean resolveExcel(MultipartFile file) {
List<MesWorkOrderInfo> list = new ArrayList<>();
//获取文件的名字
String originalFilename = file.getOriginalFilename();
Workbook workbook = null;
try {
if (originalFilename.endsWith(SUFFIX_2003)) {
workbook = new HSSFWorkbook(file.getInputStream());
} else if (originalFilename.endsWith(SUFFIX_2007)) {
workbook = new XSSFWorkbook(file.getInputStream());
}
} catch (Exception e) {
log.error("读取文件错误: {}", e.getMessage());
return false;
}
ParamAssert.notNull(workbook, "文件名 :" + originalFilename + "不符合EXCEL的格式要求!标准格式:.xls/.xlsx");
//获取所有的工作表的的数量
int numOfSheet = workbook.getNumberOfSheets();
//遍历这个这些表
for (int i = 0; i < numOfSheet; i++) {
//获取一个sheet也就是一个工作簿
Sheet sheet = workbook.getSheetAt(i);
int lastRowNum = sheet.getLastRowNum();
//从第一行开始第一行一般是标题
for (int j = 1; j <= lastRowNum; j++) {
Row row = sheet.getRow(j);
if (null == row) {
continue;
}
MesWorkOrderInfo workOrder = new MesWorkOrderInfo();
//车间计划工单号
if (row.getCell(0) != null) {
row.getCell(0).setCellType(Cell.CELL_TYPE_STRING);
String workOrderNo = row.getCell(0).getStringCellValue();
if (StringUtils.isEmpty(workOrderNo)){
continue;
}
workOrder.setWorkOrderNo(workOrderNo);
}
//车型
if (row.getCell(1) != null) {
row.getCell(1).setCellType(Cell.CELL_TYPE_STRING);
String vehicleModel = row.getCell(1).getStringCellValue();
if (null == vehicleModel){
continue;
}
workOrder.setVehicleModel(vehicleModel);
}
//单位
if (row.getCell(2) != null) {
row.getCell(2).setCellType(Cell.CELL_TYPE_STRING);
String unit = row.getCell(2).getStringCellValue();
workOrder.setUnit(unit);
}
//产线
if (row.getCell(3) != null) {
row.getCell(3).setCellType(Cell.CELL_TYPE_STRING);
String productionLine = row.getCell(3).getStringCellValue();
workOrder.setProductionLine(productionLine);
}
list.add(workOrder);
}
}
if (CollectionUtils.isEmpty(list)){
return false;
}
mesWorkOrderMapper.insertList(list);
return true;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="net.vtstar.zhongtong.avi.equipment.mapper.MesWorkOrderMapper">
</mapper>
\ No newline at end of file
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