|
@@ -56,9 +56,7 @@ import com.github.zuihou.utils.BeanPlusUtil;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.apache.poi.hssf.usermodel.*;
|
|
|
-import org.apache.poi.ss.usermodel.BorderStyle;
|
|
|
-import org.apache.poi.ss.usermodel.FillPatternType;
|
|
|
-import org.apache.poi.ss.usermodel.IndexedColors;
|
|
|
+import org.apache.poi.ss.usermodel.*;
|
|
|
import org.apache.poi.ss.util.CellRangeAddress;
|
|
|
import org.apache.poi.ss.util.CellRangeAddressList;
|
|
|
import org.apache.poi.xssf.usermodel.*;
|
|
@@ -1045,6 +1043,7 @@ public class OrderServiceImpl extends SuperServiceImpl<OrderMapper, Order> imple
|
|
|
style.setBorderLeft(BorderStyle.THIN);
|
|
|
style.setBorderBottom(BorderStyle.THIN);
|
|
|
|
|
|
+
|
|
|
XSSFCellStyle style1 = wb.createCellStyle();
|
|
|
style1.setBorderRight(BorderStyle.THIN);
|
|
|
style1.setBorderTop(BorderStyle.THIN);
|
|
@@ -1052,15 +1051,28 @@ public class OrderServiceImpl extends SuperServiceImpl<OrderMapper, Order> imple
|
|
|
style1.setBorderBottom(BorderStyle.THIN);
|
|
|
style1.setFillForegroundColor(IndexedColors.GREY_50_PERCENT.getIndex()); //设置背景色
|
|
|
style1.setFillPattern(FillPatternType.SOLID_FOREGROUND);
|
|
|
+ style1.setAlignment(HorizontalAlignment.CENTER);
|
|
|
|
|
|
+ XSSFCellStyle style2 = wb.createCellStyle();
|
|
|
+ XSSFDataFormat format = wb.createDataFormat();
|
|
|
+ style2.setBorderRight(BorderStyle.THIN);
|
|
|
+ style2.setBorderTop(BorderStyle.THIN);
|
|
|
+ style2.setBorderLeft(BorderStyle.THIN);
|
|
|
+ style2.setBorderBottom(BorderStyle.THIN);
|
|
|
+ style2.setDataFormat(format.getFormat("@"));
|
|
|
|
|
|
XSSFSheet sheet = wb.createSheet("orderTemplate");
|
|
|
- for (int i = 0; i <= 5; i++)
|
|
|
- {
|
|
|
- sheet.autoSizeColumn((short)i,true); //调整列宽
|
|
|
- }
|
|
|
+
|
|
|
+ XSSFRow row0 = sheet.createRow(0);
|
|
|
+ XSSFCell row0cell1 = row0.createCell(0);
|
|
|
+ row0cell1.setCellValue("订单导入:");
|
|
|
+ row0cell1.setCellStyle(style1);
|
|
|
+ // 起始行, 终止行, 起始列, 终止列
|
|
|
+ CellRangeAddress cra =new CellRangeAddress(0, 0, 0, 5);
|
|
|
+ sheet.addMergedRegion(cra);
|
|
|
+
|
|
|
// 在第一行插入需要填写的订单信息
|
|
|
- XSSFRow row1 = sheet.createRow(0);
|
|
|
+ XSSFRow row1 = sheet.createRow(1);
|
|
|
|
|
|
XSSFCell row1cell1 = row1.createCell(0);
|
|
|
XSSFCell row1cell2 = row1.createCell(1);
|
|
@@ -1072,11 +1084,17 @@ public class OrderServiceImpl extends SuperServiceImpl<OrderMapper, Order> imple
|
|
|
row1cell3.setCellValue("下单时间:");
|
|
|
row1cell5.setCellValue("所属产线:");
|
|
|
row1cell6.setCellValue("请选择");
|
|
|
- row1cell1.setCellStyle(style);
|
|
|
+ row1cell1.setCellStyle(style1);
|
|
|
row1cell2.setCellStyle(style);
|
|
|
- row1cell3.setCellStyle(style);
|
|
|
- row1cell4.setCellStyle(style);
|
|
|
- row1cell5.setCellStyle(style);
|
|
|
+ row1cell3.setCellStyle(style1);
|
|
|
+ row1cell4.setCellStyle(style2);
|
|
|
+ row1cell5.setCellStyle(style1);
|
|
|
+ XSSFDrawing patr1 = sheet.createDrawingPatriarch();
|
|
|
+ // 定义注释的大小和位置,详见文档
|
|
|
+ XSSFComment comment = patr1.createCellComment(new XSSFClientAnchor(1, 3, 1,3, (short) 2, 1, (short) 3, 5));// 设置注释内容
|
|
|
+ XSSFComment comment1 = patr1.createCellComment(new XSSFClientAnchor(4, 6, 4,6, (short) 3, 2, (short) 4, 7));// 设置注释内容
|
|
|
+ comment.setString(new XSSFRichTextString("日期请输入yyyy-MM-dd!"));
|
|
|
+ comment1.setString(new XSSFRichTextString("日期请输入yyyy-MM-dd!"));
|
|
|
row1cell6.setCellStyle(style);
|
|
|
// 生成下拉框内容
|
|
|
QueryWrapper<ZZone> zZoneWrapper = new QueryWrapper<ZZone>();
|
|
@@ -1092,14 +1110,14 @@ public class OrderServiceImpl extends SuperServiceImpl<OrderMapper, Order> imple
|
|
|
XSSFDataValidationHelper dvHelper = new XSSFDataValidationHelper((XSSFSheet)sheet);
|
|
|
XSSFDataValidationConstraint zZoneConstraint = (XSSFDataValidationConstraint) dvHelper
|
|
|
.createExplicitListConstraint(zZoneInfos);
|
|
|
- CellRangeAddressList zZoneRange = new CellRangeAddressList(0, 0, 5, 5);
|
|
|
+ CellRangeAddressList zZoneRange = new CellRangeAddressList(1, 1, 5, 5);
|
|
|
XSSFDataValidation zZoneValidation = (XSSFDataValidation) dvHelper.createValidation(zZoneConstraint, zZoneRange);
|
|
|
zZoneValidation.setSuppressDropDownArrow(true);
|
|
|
zZoneValidation.setShowErrorBox(true);
|
|
|
sheet.addValidationData(zZoneValidation);
|
|
|
|
|
|
// 设置第二行表头
|
|
|
- XSSFRow row2 = sheet.createRow(1);
|
|
|
+ XSSFRow row2 = sheet.createRow(2);
|
|
|
XSSFCell row2cell1 = row2.createCell(0);
|
|
|
XSSFCell row2cell2 = row2.createCell(1);
|
|
|
XSSFCell row2cell3 = row2.createCell(2);
|
|
@@ -1115,12 +1133,13 @@ public class OrderServiceImpl extends SuperServiceImpl<OrderMapper, Order> imple
|
|
|
row2cell3.setCellStyle(style1);
|
|
|
row2cell4.setCellStyle(style1);
|
|
|
row2cell5.setCellStyle(style1);
|
|
|
+
|
|
|
// 起始行, 终止行, 起始列, 终止列
|
|
|
- CellRangeAddress cra =new CellRangeAddress(1, 1, 4, 5);
|
|
|
+ cra =new CellRangeAddress(2, 2, 4, 5);
|
|
|
sheet.addMergedRegion(cra);
|
|
|
|
|
|
// 设置第三行选中零件
|
|
|
- XSSFRow row3 = sheet.createRow(2);
|
|
|
+ XSSFRow row3 = sheet.createRow(3);
|
|
|
XSSFCell row3cell1 = row3.createCell(0);
|
|
|
XSSFCell row3cell2 = row3.createCell(1);
|
|
|
XSSFCell row3cell3 = row3.createCell(2);
|
|
@@ -1131,11 +1150,11 @@ public class OrderServiceImpl extends SuperServiceImpl<OrderMapper, Order> imple
|
|
|
row3cell2.setCellValue("请选择");
|
|
|
row3cell1.setCellStyle(style);
|
|
|
row3cell2.setCellStyle(style);
|
|
|
- row3cell3.setCellStyle(style);
|
|
|
- row3cell4.setCellStyle(style);
|
|
|
+ row3cell3.setCellStyle(style2);
|
|
|
+ row3cell4.setCellStyle(style2);
|
|
|
row3cell5.setCellStyle(style);
|
|
|
row3cell6.setCellStyle(style);
|
|
|
- CellRangeAddress cra1 =new CellRangeAddress(2, 2, 4, 5);
|
|
|
+ CellRangeAddress cra1 =new CellRangeAddress(3, 3, 4, 5);
|
|
|
sheet.addMergedRegion(cra1);
|
|
|
|
|
|
QueryWrapper<BBom> bBomWrapper = new QueryWrapper<BBom>();
|
|
@@ -1209,5 +1228,66 @@ public class OrderServiceImpl extends SuperServiceImpl<OrderMapper, Order> imple
|
|
|
// temp.delete();
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
+ }
|
|
|
+ @Override
|
|
|
+ public R<Boolean> saveExcelOrder(Order order, List<Map> detailList){
|
|
|
+ //验证是否配置了工序
|
|
|
+ List<String> bomList = detailList.stream().map(p -> p.get("bomId").toString()).collect(Collectors.toList());
|
|
|
+ List<BomProcedure> bomProcedureList = bomProcedureService.list(Wraps.<BomProcedure>lbQ().in(BomProcedure::getBomId,bomList));
|
|
|
+
|
|
|
+ Map<Long,List<BomProcedure>> bomProcedureMap = bomProcedureList.stream().collect(groupingBy(BomProcedure::getBomId, LinkedHashMap::new, toList()));
|
|
|
+
|
|
|
+ isFalse(CollectionUtil.isEmpty(bomProcedureList),"零件尚未配置工序,请确认");
|
|
|
+ for(Long l:bomProcedureMap.keySet()){
|
|
|
+ isFalse(bomProcedureMap.get(l).size()==0,"零件尚未配置工序,请确认");
|
|
|
+ }
|
|
|
+
|
|
|
+ //验证炉号
|
|
|
+ if(detailList != null && detailList.size() > 0){
|
|
|
+ List<String> furnaceBatchList = detailList.stream().map(p -> p.get("furnaceBatchNo").toString()).collect(Collectors.toList());
|
|
|
+ List<MMeterialReceiveLog> meterialReceiveLogList = meterialReceiveLogService.list(Wraps.<MMeterialReceiveLog>lbQ().in(MMeterialReceiveLog::getFurnaceBatchNo,furnaceBatchList));
|
|
|
+ Map<String,MMeterialReceiveLog> meterialReceiveLogMap = meterialReceiveLogList.stream().collect(Collectors.toMap(t->t.getFurnaceBatchNo().toString(), t->t));
|
|
|
+ List<MMeterialReceiveLog>l = new ArrayList<MMeterialReceiveLog>();
|
|
|
+ for(Map map:detailList){
|
|
|
+ String furnaceBatchNo = map.get("furnaceBatchNo")==null?"":map.get("furnaceBatchNo").toString();
|
|
|
+ int bomNum = Double.valueOf(map.get("bomNum").toString()).intValue();
|
|
|
+ MMeterialReceiveLog m = meterialReceiveLogMap.get(furnaceBatchNo);
|
|
|
+ map.put("meterialReceiveId",m.getId());
|
|
|
+ int usedNum = (m.getUsedNum()==null?0:m.getUsedNum());
|
|
|
+ isFalse(bomNum>m.getBatchStand()-usedNum,"零件数超出");
|
|
|
+ m.setUsedNum(bomNum+usedNum);
|
|
|
+ l.add(m);
|
|
|
+ }
|
|
|
+ //修改已用数量
|
|
|
+ meterialReceiveLogService.saveOrUpdateBatch(l);
|
|
|
+ }
|
|
|
+
|
|
|
+ //根据编码规则
|
|
|
+ String no = codeRuleService.getBillCode(CodeRuleModule.CODE_RULE_ORDER);
|
|
|
+ order.setOrderNo(no);
|
|
|
+ super.save(order);
|
|
|
+
|
|
|
+ int productNum = 0;
|
|
|
+ if(detailList != null && detailList.size() > 0){
|
|
|
+ for(Map map:detailList){
|
|
|
+ OrderProduct item = new OrderProduct();
|
|
|
+ item.setOrderId(order.getId());
|
|
|
+ item.setOrderNo(order.getOrderNo());
|
|
|
+ item.setFurnaceBatchNo(map.get("furnaceBatchNo").toString());
|
|
|
+ item.setMeterialReceiveId(Long.parseLong(map.get("meterialReceiveId").toString()));
|
|
|
+ item.setBomId(Long.parseLong(map.get("bomId").toString()));
|
|
|
+ item.setBomNum(Double.valueOf(map.get("bomNum").toString()).intValue());
|
|
|
+ productNum+=item.getBomNum();
|
|
|
+ if(map.get("deliveryTime")!=null){
|
|
|
+ item.setDeliveryTime(DateUtil.stringToDate3(map.get("deliveryTime").toString()));
|
|
|
+ }
|
|
|
+ item.setRemark(map.get("remark")==null?"":map.get("remark").toString());
|
|
|
+ orderProductService.save(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ order.setProductNum(productNum);
|
|
|
+ baseMapper.updateAllById(order);
|
|
|
+ return R.success(true);
|
|
|
+ }
|
|
|
}
|