代码更新

This commit is contained in:
2022-07-20 14:42:59 +08:00
parent c503789e61
commit 7fc5ac6636
8 changed files with 207 additions and 77 deletions

View File

@@ -14,6 +14,7 @@ import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
@@ -43,4 +44,12 @@ public class DeviceScrapController {
deviceScrapService.scrap(whereJson);
return new ResponseEntity<>(HttpStatus.OK);
}
@GetMapping("/downloadWord")
@Log("下载word")
@ApiOperation("下载word")
public ResponseEntity<Object> downloadWord(@RequestParam Map whereJson, HttpServletResponse response) {
deviceScrapService.downloadWord(whereJson,response);
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -4,6 +4,7 @@ package org.nl.wms.sb.run.service;
import com.alibaba.fastjson.JSONObject;
import org.springframework.data.domain.Pageable;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
@@ -27,4 +28,10 @@ public interface DeviceScrapService {
* @param whereJson 参数
*/
void scrap(JSONObject whereJson);
/**
* 下载word
* @param whereJson 参数
*/
void downloadWord(Map whereJson, HttpServletResponse response);
}

View File

@@ -0,0 +1,44 @@
package org.nl.wms.sb.run.service.dto;
import com.sushengren.easyword.annotation.WordProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class DownloadWordDto implements Serializable {
@WordProperty("资产名称")
private String assets_name;
@WordProperty("资产编码")
private String assets_code;
@WordProperty("规格型号")
private String device_spec;
@WordProperty("出厂编码")
private String leavefactory_number;
@WordProperty("出厂日期")
private String leavefactory_date;
@WordProperty("原值")
private String oraginal_value;
@WordProperty("净额")
private String net_amount;
@WordProperty("资产所在单位")
private String belong_dept;
@WordProperty("资产使用人")
private String user_name;
}

View File

@@ -8,17 +8,26 @@ import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.sushengren.easyword.EasyWord;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.exception.BadRequestException;
import org.nl.modules.system.service.impl.ParamServiceImpl;
import org.nl.utils.SecurityUtils;
import org.nl.utils.SpringContextHolder;
import org.nl.wms.basedata.master.service.ClassstandardService;
import org.nl.wms.sb.run.service.DeviceScrapService;
import org.nl.wms.sb.run.service.dto.DownloadWordDto;
import org.nl.wql.WQL;
import org.nl.wql.core.bean.WQLObject;
import org.nl.wql.util.WqlUtil;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
@@ -98,4 +107,46 @@ public class DeviceScrapServiceImpl implements DeviceScrapService {
jsonLife.put("create_time",DateUtil.now());
lifeTab.insert(jsonLife);
}
@Override
public void downloadWord(Map whereJson, HttpServletResponse response) {
try {
WQLObject fileTab = WQLObject.getWQLObject("EM_BI_EquipmentFile");
WQLObject deptTab = WQLObject.getWQLObject("sys_dept");
String devicerecord_id = MapUtil.getStr(whereJson, "devicerecord_id");
JSONObject jsonFile = fileTab.query("devicerecord_id = '" + devicerecord_id + "'").uniqueResult(0);
String belong_deptid = jsonFile.getString("belong_deptid");
JSONObject jsonDept = new JSONObject();
if (ObjectUtil.isNotEmpty(belong_deptid)) {
jsonDept = deptTab.query("dept_id = '"+belong_deptid+"'").uniqueResult(0);
}
// 设置浏览器导出word格式文件
response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
// 设置文件名和字符集
String fileName = URLEncoder.encode(jsonFile.getString("device_name")+"报废表", "UTF-8");
response.setHeader("Content-Disposition", "attachment; filename*=UTf-8''"+fileName+".docx");
// 处理数据
DownloadWordDto data = DownloadWordDto.builder()
.assets_name(jsonFile.getString("assets_name"))
.assets_code(jsonFile.getString("assets_code"))
.device_spec(jsonFile.getString("device_spec"))
.leavefactory_number(jsonFile.getString("leavefactory_number"))
.leavefactory_date(jsonFile.getString("leavefactory_date"))
.oraginal_value(jsonFile.getString("oraginal_value"))
.net_amount(jsonFile.getString("net_amount"))
.belong_dept(jsonDept.getString("name"))
.user_name(jsonFile.getString("user_name")).build();
// 获取本地模板
String path = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("DEVICE_WORD_PATH").getValue();
// 下载
File file = new File(path);
EasyWord.of(file).doWrite(data).toOutputStream(response.getOutputStream());
} catch (Exception e) {
System.out.println(e.getMessage());
throw new BadRequestException("下载异常");
}
}
}

View File

@@ -47,10 +47,12 @@ public class DevicesafetyqtyqueryServiceImpl implements DevicesafetyqtyqueryServ
String class_idStr = (String) whereJson.get("class_idStr");
String material_code = MapUtil.getStr(whereJson, "material_code");
String type = MapUtil.getStr(whereJson, "type");
String is_all = MapUtil.getStr(whereJson, "is_all");
HashMap<String, String> map = new HashMap<>();
map.put("flag", "1");
map.put("type",type);
map.put("is_all",is_all);
if (ObjectUtil.isNotEmpty(material_code)) map.put("material_code", "%"+material_code+"%");
//处理物料当前节点的所有子节点
if (!StrUtil.isEmpty(material_type_id)) {
@@ -61,15 +63,7 @@ public class DevicesafetyqtyqueryServiceImpl implements DevicesafetyqtyqueryServ
String classIds = classstandardService.getAllChildIdStr(class_idStr);
map.put("classIds", classIds);
}
JSONObject json = WQL.getWO("EM_DEVICESAFETQTYQUERY001").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "ivt.material_id DESC");
JSONArray content = json.getJSONArray("content");
for (int i = 0; i < content.size(); i++) {
JSONObject jsonObject = content.getJSONObject(i);
if (ObjectUtil.isEmpty(jsonObject.getString("safe_ivt_up"))) jsonObject.put("safe_ivt_up","99999999");
if (ObjectUtil.isEmpty(jsonObject.getString("safe_ivt_down"))) jsonObject.put("safe_ivt_down","0");
}
json.put("content",content);
JSONObject json = WQL.getWO("EM_DEVICESAFETQTYQUERY001").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "a.material_id DESC");
return json;
}
@@ -156,10 +150,12 @@ public class DevicesafetyqtyqueryServiceImpl implements DevicesafetyqtyqueryServ
String class_idStr = (String) whereJson.get("class_idStr");
String material_code = MapUtil.getStr(whereJson, "material_code");
String type = MapUtil.getStr(whereJson, "type");
String is_all = MapUtil.getStr(whereJson, "is_all");
HashMap<String, String> map = new HashMap<>();
map.put("flag", "1");
map.put("type",type);
map.put("is_all",is_all);
if (ObjectUtil.isNotEmpty(material_code)) map.put("material_code", "%"+material_code+"%");
//处理物料当前节点的所有子节点
if (!StrUtil.isEmpty(material_type_id)) {
@@ -172,12 +168,6 @@ public class DevicesafetyqtyqueryServiceImpl implements DevicesafetyqtyqueryServ
}
JSONArray rows = WQL.getWO("EM_DEVICESAFETQTYQUERY001").addParamMap(map).process().getResultJSONArray(0);
for (int i = 0; i < rows.size(); i++) {
JSONObject jsonObject = rows.getJSONObject(i);
if (ObjectUtil.isEmpty(jsonObject.getString("safe_ivt_up"))) jsonObject.put("safe_ivt_up","99999999");
if (ObjectUtil.isEmpty(jsonObject.getString("safe_ivt_down"))) jsonObject.put("safe_ivt_down","0");
}
List<Map<String, Object>> list = new ArrayList<>();
for (int i = 0; i < rows.size(); i++) {
JSONObject jo = rows.getJSONObject(i);

View File

@@ -17,6 +17,7 @@
输入.classIds TYPEAS f_string
输入.material_code TYPEAS s_string
输入.type TYPEAS s_string
输入.is_all TYPEAS s_string
[临时表]
@@ -43,43 +44,72 @@
IF 输入.flag = "1"
PAGEQUERY
SELECT
mater.material_code,
mater.material_name,
MAX( class.class_name ) AS class_name,
MAX( saivt.safe_ivt_up ) AS safe_ivt_up,
MAX( saivt.safe_ivt_down ) AS safe_ivt_down,
sum(ivt.ivt_qty) AS ivt_qty,
MAX(ivt.qty_unit_name) AS qty_unit_name
FROM
EM_BI_DeviceSparePartIvt ivt
LEFT JOIN ST_IVT_MaterialSafeIvt saivt ON saivt.material_id = ivt.material_id
LEFT JOIN md_me_materialbase mater ON mater.material_id = ivt.material_id
LEFT JOIN md_pb_classstandard class ON mater.material_type_id = class.class_id
WHERE
1=1
OPTION 输入.classIds <> ""
class.class_id in 输入.classIds
ENDOPTION
SELECT
a.material_id,
a.material_code,
a.material_name,
a.class_name,
a.safe_ivt_up,
a.safe_ivt_down,
a.ivt_qty,
a.qty_unit_name
FROM
(
SELECT
mater.material_id,
mater.material_code,
mater.material_name,
class.class_name,
(
CASE
WHEN fivt.safe_ivt_up is null THEN 99999999 ELSE fivt.safe_ivt_up
END
) AS safe_ivt_up,
(
CASE
WHEN fivt.safe_ivt_down is null THEN 0 ELSE fivt.safe_ivt_down
END
) AS safe_ivt_down,
(
CASE
WHEN pivt.ivt_qty is null THEN 0 ELSE pivt.ivt_qty
END
) AS ivt_qty,
unit.unit_name AS qty_unit_name
FROM
md_me_materialbase mater
LEFT JOIN md_pb_classstandard class ON mater.material_type_id = class.class_id
LEFT JOIN ST_IVT_MaterialSafeIvt fivt ON fivt.material_id = mater.material_id
LEFT JOIN md_pb_measureunit unit ON unit.measure_unit_id = mater.base_unit_id
LEFT JOIN (
SELECT
SUM(ivt.ivt_qty) AS ivt_qty,
ivt.material_id
FROM
EM_BI_DeviceSparePartIvt ivt
WHERE
1=1
group by ivt.material_id
) pivt ON pivt.material_id = mater.material_id
WHERE
1=1
OPTION 输入.material_code <> ""
(mater.material_code like 输入.material_code or
mater.material_name like 输入.material_code)
ENDOPTION
OPTION 输入.classIds <> ""
class.class_id in 输入.classIds
ENDOPTION
OPTION 输入.type = "01"
ivt.ivt_qty > saivt.safe_ivt_up
ENDOPTION
OPTION 输入.material_code <> ""
(mater.material_code like 输入.material_code or
mater.material_name like 输入.material_code)
ENDOPTION
) AS a
OPTION 输入.type = "02"
ivt.ivt_qty < saivt.safe_ivt_down
ENDOPTION
WHERE
1=1
OPTION 输入.type = "03"
saivt.safe_ivt_up <= ivt.ivt_qty <= saivt.safe_ivt_up
ENDOPTION
group by ivt.material_id
OPTION 输入.is_all <> "0"
a.safe_ivt_down > a.ivt_qty or a.ivt_qty > a.safe_ivt_up
ENDOPTION
ENDSELECT
ENDPAGEQUERY

View File

@@ -114,6 +114,17 @@
>
报废
</el-button>
<el-button
slot="right"
class="filter-item"
type="success"
icon="el-icon-position"
size="mini"
:disabled="crud.selections.length !== 1"
@click="downloadWord"
>
下载Word
</el-button>
</crudOperation>
<!--表格渲染-->
<el-table ref="table" v-loading="crud.loading" :data="crud.data" size="mini" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
@@ -161,6 +172,8 @@ import Treeselect, { LOAD_CHILDREN_OPTIONS } from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
import crudMaterialbase from '@/api/wms/basedata/master/materialbase'
import DateRangePicker from '@/components/DateRangePicker'
import {download} from "@/api/data";
import {downloadFile} from "@/utils";
const defaultForm = { status: null }
export default {
@@ -267,6 +280,15 @@ export default {
} else {
return this.crud.notify('设备状态不为正常或者闲置', CRUD.NOTIFICATION_TYPE.INFO)
}
},
downloadWord() {
const _selectData = this.$refs.table.selection
const data = _selectData[0]
download('/api/devicescrap/downloadWord', { 'devicerecord_id': data.devicerecord_id }).then(result => {
const name = data.device_name + '报废档案'
this.crud.toQuery()
downloadFile(result, name, 'docx')
})
}
}
}

View File

@@ -28,23 +28,10 @@
placeholder="编码、名称"
/>
</el-form-item>
<el-form-item label="仅显示预警" label-width="120px">
<el-switch v-model="query.is_all" active-value="1" inactive-value="0" @change="crud.toQuery()"/>
</el-form-item>
<!-- <el-form-item label="库存类型">
<el-select
v-model="query.type"
clearable
size="mini"
placeholder="请选择"
class="filter-item"
@change="hand"
>
<el-option
v-for="item in deviceTypeList"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>-->
<rrOperation />
</el-form>
@@ -68,9 +55,9 @@
<el-table-column prop="material_code" label="物料编码" />
<el-table-column prop="material_name" label="物料名称" />
<el-table-column prop="class_name" label="物料分类" />
<el-table-column prop="safe_ivt_up" label="安全库存上限" />
<el-table-column prop="safe_ivt_down" label="安全库存下限" />
<el-table-column prop="ivt_qty" label="库存" />
<el-table-column prop="safe_ivt_up" label="安全库存上限" :formatter="crud.formatNum2" />
<el-table-column prop="safe_ivt_down" label="安全库存下限" :formatter="crud.formatNum2" />
<el-table-column prop="ivt_qty" label="库存" :formatter="crud.formatNum2" />
<el-table-column prop="qty_unit_name" label="单位" />
</el-table>
<!--分页组件-->
@@ -186,16 +173,6 @@ export default {
})
}
},
formatUp(row, cloum) {
if (row.safe_ivt_up === '') {
return '999999'
}
},
formatDown(row, cloum) {
if (row.safe_ivt_down === '') {
return '0'
}
},
cellStyle({ row, column, rowIndex, columnIndex }) {
const safe_ivt_down = parseInt(row.safe_ivt_down)
const safe_ivt_up = parseInt(row.safe_ivt_up)