代码更新

This commit is contained in:
2022-10-14 15:45:42 +08:00
parent 89f4859034
commit b277cc4b3b
5 changed files with 164 additions and 6 deletions

View File

@@ -15,6 +15,8 @@ import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;
/**
@@ -117,4 +119,12 @@ public class AcceptFormulaController {
public ResponseEntity<Object> autoCalculation(@RequestParam Map whereJson) {
return new ResponseEntity<>(acceptFormulaService.autoCalculation(whereJson),HttpStatus.OK);
}
@Log("打印excel")
@ApiOperation("打印excel")
@GetMapping(value = "/print")
public ResponseEntity<Object> preview(HttpServletResponse response, @RequestParam Map whereJson) throws IOException {
acceptFormulaService.preview(response,whereJson);
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -6,6 +6,8 @@ import com.alibaba.fastjson.JSONObject;
import org.nl.wms.pf.service.dto.ProductbomDto;
import org.springframework.data.domain.Pageable;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;
@@ -103,4 +105,7 @@ public interface AcceptFormulaService {
* 提交
*/
JSONArray autoCalculation(Map whereJson);
void preview(HttpServletResponse response, Map whereJson) throws IOException;
}

View File

@@ -3,23 +3,32 @@ package org.nl.wms.pf.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.fill.FillWrapper;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.spire.xls.Workbook;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.exception.BadRequestException;
import org.nl.modules.security.service.dto.JwtUserDto;
import org.nl.modules.system.service.impl.ParamServiceImpl;
import org.nl.modules.system.util.CodeUtil;
import org.nl.utils.SecurityUtils;
import org.nl.utils.SpringContextHolder;
import org.nl.wms.basedata.master.constant.MaterOptTypeEnum;
import org.nl.wms.pf.service.AcceptFormulaService;
import org.nl.wms.pf.service.AcceptMarkService;
import org.nl.wms.pf.service.dto.ProductbomDto;
import org.nl.wms.test.service.dto.DataDto;
import org.nl.wql.WQL;
import org.nl.wql.core.bean.WQLObject;
import org.nl.wql.util.WqlUtil;
@@ -27,10 +36,11 @@ import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.*;
import java.util.concurrent.atomic.AtomicReference;
/**
@@ -354,6 +364,118 @@ public class AcceptFormulaServiceImpl implements AcceptFormulaService {
return result;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void preview(HttpServletResponse response, Map whereJson) throws IOException {
WQLObject formMstTab = WQLObject.getWQLObject("QL_TEST_AcceptFormula"); // 小线试验配方主表
WQLObject formDtlTab = WQLObject.getWQLObject("QL_TEST_AcceptFormulaDtl"); // 小线试验配方明细表
WQLObject materTab = WQLObject.getWQLObject("md_me_materialbase"); // 物料表
WQLObject factMstTab = WQLObject.getWQLObject("QL_TEST_FactoryWarrantyMst"); // 厂家质保书主表
WQLObject factDtlTab = WQLObject.getWQLObject("QL_TEST_FactoryWarrantyDtl"); // 厂家质保书明细表
WQLObject markTab = WQLObject.getWQLObject("QL_TEST_AcceptMark"); // 验收牌号表
WQLObject classTab = WQLObject.getWQLObject("md_pb_classstandard"); // 基本分类表表
String formula_id = MapUtil.getStr(whereJson, "formula_id");
JSONObject jsonFormMst = formMstTab.query("formula_id = '" + formula_id + "'").uniqueResult(0);
JSONObject jsonMater = materTab.query("material_id = '" + jsonFormMst.getString("material_id") + "'").uniqueResult(0);
// 创建workbook 并获取模板路径
Workbook workbook = new Workbook();
String template = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("ACCEPT_EXCEL_PATH").getValue();
workbook.loadFromFile(template);
// 设置文件名和防止乱码现象
String fileName = URLEncoder.encode(jsonMater.getString("material_code")+"-"+jsonFormMst.getString("material_pcsn"), "UTF-8");
response.setHeader("Content-Disposition", "attachment; filename*=UTf-8''"+fileName+".xlsx");
// 获取输出流
ServletOutputStream outputStream = response.getOutputStream();
// 创建模板工作簿
ExcelWriter workBook = EasyExcel.write(outputStream, DataDto.class).withTemplate(template).build();
// 获取第一个sheet
WriteSheet sheet = EasyExcel.writerSheet().build();
/*
* 单组填充
*/
HashMap<String, Object> oneMap = new HashMap<>();
//型号
oneMap.put("material_name", jsonMater.getString("material_name"));
// 厂家
JSONObject jsonFactMst = factMstTab.query("material_id = '" + jsonFormMst.getString("material_id") + "' and pcsn = '" + jsonFormMst.getString("material_pcsn") + "' and is_delete = '0'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonFactMst)) oneMap.put("manufactor", jsonFactMst.getString("manufactor"));
// 实验牌号
JSONObject jsonMark= markTab.query("mark_id = '" + jsonFormMst.getString("mark_id") + "' and is_delete = '0'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonMark)) {
oneMap.put("mark_code", jsonMark.getString("mark_code"));
// 酒精体积:液料比*开单总重
double bar_bulk = NumberUtil.mul(jsonFormMst.getDoubleValue("confirm_qty"), jsonMark.getDoubleValue("liquid_rate"));
oneMap.put("bar_bulk", NumberUtil.round(bar_bulk, 3).toString());
// 合金球重量:球料比*开单总重
double ball_rate_2 = NumberUtil.mul(jsonFormMst.getDoubleValue("confirm_qty"), jsonMark.getDoubleValue("ball_rate"));
double ball_weight = NumberUtil.div(ball_rate_2, 1000);
oneMap.put("ball_weight", NumberUtil.round(ball_weight, 3).toString());
// 球磨时间
oneMap.put("ball_time", jsonMark.getString("ball_time"));
// 转速
oneMap.put("ball_speed", jsonMark.getString("ball_speed"));
// 原料总碳
oneMap.put("c_balance", jsonMark.getString("c_balance"));
}
// 实验批号
oneMap.put("accept_pcsn", jsonFormMst.getString("accept_pcsn"));
// 碳平衡:厂家质保书明细对应
String inspection_item_id = "1510155749437870083"; // ct项点标识
JSONObject jsonFactDtl = factDtlTab.query("inspection_id = '" + jsonFactMst.getString("inspection_id") + "' and inspection_item_id = '" + inspection_item_id + "'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonFactDtl)) {
oneMap.put("ct_value", NumberUtil.round(jsonFactDtl.getString("value"), 2).toString());
}
// 开单日期
oneMap.put("create_time", jsonFormMst.getString("create_time").substring(0,10));
/*
* 多组填充
*/
ArrayList<HashMap<String,Object>> flData = new ArrayList<>();
// 查询小线实验配方明细表
JSONArray formDtlArr = formDtlTab.query("formula_id = '" + jsonFormMst.getString("formula_id") + "'").getResultJSONArray(0);
if (ObjectUtil.isNotEmpty(formDtlArr)) {
for (int i = 0; i < formDtlArr.size(); i++) {
JSONObject json = formDtlArr.getJSONObject(i);
HashMap<String, Object> mapFL = new HashMap<>();
// 判断物料物料类别是 物料还是物料分类
String class_name = "";
if (StrUtil.equals(json.getString("material_type"), "01")) {
// 物料:查物料表关联分类表
JSONObject jsonDtlMater = materTab.query("material_id = '" + json.getString("material_id") + "'").uniqueResult(0);
JSONObject jsonDtlClass = classTab.query("class_id = '" + jsonDtlMater.getString("material_type_id") + "'").uniqueResult(0);
class_name = jsonDtlClass.getString("class_name");
} else {
// 分类:直接用明细表的物料标识查基础分类表
JSONObject jsonDtlClass = classTab.query("class_id = '" + json.getString("material_id") + "'").uniqueResult(0);
class_name = jsonDtlClass.getString("class_name");
}
mapFL.put("class_name", class_name);
mapFL.put("dtl_pcsn", json.getString("dtl_pcsn"));
mapFL.put("formula_qty", NumberUtil.round(json.getString("formula_qty"), 3).toString());
flData.add(mapFL);
}
}
workBook.fill(oneMap, sheet);
workBook.fill(new FillWrapper("data", flData), sheet);
workBook.finish();
}
/**
* 新料模式开单
* @param json

View File

@@ -47,6 +47,7 @@ import java.awt.print.Paper;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.io.IOException;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
@@ -778,7 +779,7 @@ public class FormulaServiceImpl implements FormulaService {
}
// 球磨相关
oneMap.put("ball_rate",NumberUtil.mul(jsonWork.getDoubleValue("workorder_qty"),jsonMaterExt.getDoubleValue("ball_rate")));
oneMap.put("liquid_rate",NumberUtil.mul(jsonWork.getDoubleValue("workorder_qty"),jsonMaterExt.getDoubleValue("liquid_rate")));
// oneMap.put("liquid_rate",NumberUtil.mul(jsonWork.getDoubleValue("workorder_qty"),jsonMaterExt.getDoubleValue("liquid_rate")));
if (ObjectUtil.isNotEmpty(json98jj)) {
if (StrUtil.equals(json98jj.getString("value"), "1.00")) {
oneMap.put("para_name", json98jj.getString("para_name"));
@@ -806,10 +807,15 @@ public class FormulaServiceImpl implements FormulaService {
if (ObjectUtil.isNotEmpty(jsonQM04)) oneMap.put("pre_time", jsonQM04.getString("value"));
if (ObjectUtil.isNotEmpty(jsonQM06)) {
// 预磨酒精
String pre_fas = NumberUtil.mul(masterbucket_qty, NumberUtil.div(jsonQM06.getString("value"), "100").toString()).toString();
oneMap.put("pre_fas", NumberUtil.round(pre_fas, 2).toString());
String put_fas = NumberUtil.mul(jsonMst.getDoubleValue("masterbucket_qty"), NumberUtil.div(jsonQM06.getString("value"), "100")).toString();
// 投料酒精
double mul_1 = NumberUtil.mul(jsonMst.getDoubleValue("masterbucket_qty"), jsonMaterExt.getDoubleValue("liquid_rate"));
BigDecimal mul_2 = NumberUtil.mul(jsonMst.getDoubleValue("masterbucket_qty"), NumberUtil.div(jsonQM06.getString("value"), "100"));
String put_fas = NumberUtil.sub(mul_1, mul_2).toString();
oneMap.put("put_fas", NumberUtil.round(put_fas, 2).toString());
}