代码更新
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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());
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user