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

mes工单模块开发

parent d69f676d
...@@ -13,6 +13,7 @@ import net.vtstar.zhongtong.avi.equipment.service.BasicInfoService; ...@@ -13,6 +13,7 @@ import net.vtstar.zhongtong.avi.equipment.service.BasicInfoService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.Assert; import org.springframework.util.Assert;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.validation.Valid; import javax.validation.Valid;
...@@ -131,4 +132,17 @@ public class BasicInfoController { ...@@ -131,4 +132,17 @@ public class BasicInfoController {
ParamAssert.notNull(areaId, "区域ID为NULL!"); ParamAssert.notNull(areaId, "区域ID为NULL!");
return Return.success(basicInfoService.getPaintshopLane(areaId)); 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; ...@@ -4,17 +4,14 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import net.vtstar.user.search.Search; 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.Column;
import javax.persistence.Id;
import javax.persistence.Table; import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import java.util.Date;
/** /**
* @Author: xiadongwei * @Author: xiadongwei
* @Date: 2019/10/20 9:31 * @Date: 2019/10/29 9:31
*/ */
@ApiModel("涂装车间工单表") @ApiModel("涂装车间工单表")
@Data @Data
...@@ -22,53 +19,51 @@ import java.util.Date; ...@@ -22,53 +19,51 @@ import java.util.Date;
@Table(name = "mes_work_order_info") @Table(name = "mes_work_order_info")
public class MesWorkOrderInfo { public class MesWorkOrderInfo {
@Id @Show(label = "销售订单号")
private Long id; @ApiModelProperty(notes = "销售订单号")
@Column(name = "sales_order_no")
@ApiModelProperty(notes = "车间编号")
@NotNull(message = "车间编号不能为空")
@Length(max = 20, message = "车间编号长度不能大于{max}")
@Column(name = "workshop_code")
@Search @Search
private String workshopCode; private String salesOrderNo;
@ApiModelProperty(notes = "车间名称") @Show(label = "主计划工单号")
@NotNull(message = "车间名称不能为空") @ApiModelProperty(notes = "主计划工单号")
@Length(max = 50, message = "车间名称长度不能大于{max}") @Column(name = "master_work_order_no")
@Column(name = "workshop_name")
@Search @Search
private String workshopName; private String masterWorkOrderNo;
@ApiModelProperty(notes = "设备分类") @Show(label = "车间计划工单号")
@NotNull(message = "设备分类不能为空") @ApiModelProperty(notes = "车间计划工单号")
@Length(max = 50, message = "设备分类长度不能大于{max}") @Column(name = "work_order_no")
@Column(name = "equip_type")
@Search @Search
private String equipType; private String workOrderNo;
@ApiModelProperty(notes = "设备编号") @Show(label = "车型")
@NotNull(message = "设备名称不能为空") @ApiModelProperty(notes = "车型")
@Length(max = 100, message = "设备编号长度不能大于{max}") @Column(name = "vehicle_model")
@Column(name = "equip_code") private String vehicleModel;
@Search
private String equipCode;
@ApiModelProperty(notes = "设备名称") @Show(label = "订单数量")
@Length(max = 100, message = "设备名称长度不能大于{max}") @ApiModelProperty(notes = "订单数量")
@Column(name = "alias") @Column(name = "order_quantity")
@Search private Integer orderQuantity;
private String alias;
@Show(label = "单位")
@ApiModelProperty(notes = "单位")
@Column(name = "unit")
private String unit;
@ApiModelProperty(notes = "设备厂商") @Show(label = "车间")
@Length(max = 100, message = "设备厂商长度不能大于{max}") @ApiModelProperty(notes = "车间")
@Column(name = "equip_factory") @Column(name = "workshop")
private String equipFactory; private String workshop;
@ApiModelProperty(notes = "创建时间") @Show(label = "产线")
@Column(name = "create_time") @ApiModelProperty(notes = "产线")
private Date createTime; @Column(name = "production_line")
private String productionLine;
@ApiModelProperty(notes = "更新时间") @Show(label = "读取标识")
@Column(name = "update_time") @ApiModelProperty(notes = "读取标识")
private Date updateTime; @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; ...@@ -8,19 +8,22 @@ import net.vtstar.user.mybatis.provider.OrderBy;
import net.vtstar.user.mybatis.provider.WhereFilter; import net.vtstar.user.mybatis.provider.WhereFilter;
import net.vtstar.user.search.service.SearchService; import net.vtstar.user.search.service.SearchService;
import net.vtstar.utils.asserts.ParamAssert; import net.vtstar.utils.asserts.ParamAssert;
import net.vtstar.zhongtong.avi.equipment.domain.EquipInfo; import net.vtstar.zhongtong.avi.equipment.domain.*;
import net.vtstar.zhongtong.avi.equipment.domain.PaintshopArea; import net.vtstar.zhongtong.avi.equipment.mapper.*;
import net.vtstar.zhongtong.avi.equipment.domain.PaintshopLane; import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import net.vtstar.zhongtong.avi.equipment.domain.PaintshopStation; import org.apache.poi.ss.usermodel.Cell;
import net.vtstar.zhongtong.avi.equipment.mapper.BasicInfoMapper; import org.apache.poi.ss.usermodel.Row;
import net.vtstar.zhongtong.avi.equipment.mapper.PaintshopAreaMapper; import org.apache.poi.ss.usermodel.Sheet;
import net.vtstar.zhongtong.avi.equipment.mapper.PaintshopLaneMapper; import org.apache.poi.ss.usermodel.Workbook;
import net.vtstar.zhongtong.avi.equipment.mapper.PaintshopStationMapper; import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.Assert; import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils; 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.Date;
import java.util.List; import java.util.List;
...@@ -47,6 +50,12 @@ public class BasicInfoService { ...@@ -47,6 +50,12 @@ public class BasicInfoService {
@Autowired @Autowired
private PaintshopLaneMapper paintshopLaneMapper; 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 { ...@@ -208,4 +217,74 @@ public class BasicInfoService {
addFilter("area_id", Operation.EQUAL, areaId); addFilter("area_id", Operation.EQUAL, areaId);
}}, PaintshopLane.class); }}, 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