add:新增PC袋标签新增打印按钮

This commit is contained in:
2023-04-26 08:46:13 +08:00
parent 0112e723c7
commit f08a7c6273
6 changed files with 273 additions and 2 deletions

View File

@@ -2,6 +2,7 @@
package org.nl.wms.basedata.master.rest;
import com.alibaba.fastjson.JSONObject;
import org.nl.wms.basedata.master.service.BagrecordService;
import org.nl.wms.basedata.master.service.dto.BagrecordDto;
import org.springframework.data.domain.Pageable;
@@ -68,6 +69,13 @@ public class BagrecordController {
return new ResponseEntity<>(HttpStatus.OK);
}
@Log("PC组袋")
@ApiOperation("PC组袋")
@PostMapping("/groupBag")
public ResponseEntity<Object> groupBag(@RequestBody JSONObject json) {
return new ResponseEntity<>(bagrecordService.groupBag(json),HttpStatus.OK);
}
@ApiOperation("导出数据")
@GetMapping(value = "/download")
public void download(HttpServletResponse response, @RequestParam Map whereJson) throws IOException {

View File

@@ -1,6 +1,7 @@
package org.nl.wms.basedata.master.service;
import com.alibaba.fastjson.JSONObject;
import org.nl.wms.basedata.master.service.dto.BagrecordDto;
import org.springframework.data.domain.Pageable;
@@ -78,4 +79,9 @@ public interface BagrecordService {
*/
void download(Map whereJson, HttpServletResponse response) throws IOException;
/**
* PC组袋
*
*/
JSONObject groupBag(JSONObject json);
}

View File

@@ -7,7 +7,10 @@ import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import lombok.RequiredArgsConstructor;
import org.nl.exception.BadRequestException;
import org.nl.pda.st.set.service.PdaBagService;
import org.nl.pda.st.set.service.impl.PdaBagServiceImpl;
import org.nl.utils.FileUtil;
import org.nl.utils.SpringContextHolder;
import org.nl.wms.basedata.master.service.BagrecordService;
import org.nl.wms.basedata.master.service.dto.BagrecordDto;
import org.nl.wql.WQL;
@@ -189,4 +192,38 @@ public class BagrecordServiceImpl implements BagrecordService {
FileUtil.downloadExcel(list, response);
}
@Override
@Transactional(rollbackFor = Exception.class)
public JSONObject groupBag(JSONObject json) {
WQLObject materTab = WQLObject.getWQLObject("md_me_materialbase");
HashMap<String, String> map = new HashMap<>();
map.put("material_code", json.getString("material_code"));
map.put("pcsn", json.getString("pcsn"));
map.put("return_person", json.getString("return_person"));
map.put("storage_qty", json.getString("storage_qty"));
map.put("waste_type", json.getString("waste_type"));
map.put("bag_num", json.getString("bag_num"));
// 组织数据调用pda组盘接口
JSONObject jsonMater = materTab.query("material_code = '" + json.getString("material_code") + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(jsonMater)) throw new BadRequestException("物料不存在!");
map.put("material_id",jsonMater.getString("material_id"));
PdaBagService pdaBagService = SpringContextHolder.getBean(PdaBagService.class);
Map<String, Object> result = pdaBagService.groupBag(map);
// 判断是否报错
if (!StrUtil.equals(result.get("code").toString(), "1")) {
throw new BadRequestException(result.get("desc").toString());
}
String string = result.get("result").toString();
JSONArray.parseArray(string);
JSONObject resultParam = new JSONObject();
resultParam.put("data", JSONArray.parseArray(string));
return resultParam;
}
}

View File

@@ -24,4 +24,12 @@ export function edit(data) {
})
}
export default { add, edit, del }
export function groupBag(data) {
return request({
url: 'api/bagrecord/groupBag',
method: 'post',
data
})
}
export default { add, edit, del, groupBag }

View File

@@ -148,6 +148,16 @@
>
导出Excel
</el-button>
<el-button
slot="right"
class="filter-item"
type="success"
icon="el-icon-check"
size="mini"
@click="insertAndPrint"
>
新增打印
</el-button>
</crudOperation>
<!--表单组件-->
<!--表格渲染-->
@@ -183,6 +193,7 @@
<!--分页组件-->
<pagination />
</div>
<InsertAndPrint :dialog-show.sync="insertAndPrintDialog" :father-method="hand"/>
</div>
</template>
@@ -197,13 +208,14 @@ import { download } from '@/api/data'
import { downloadFile } from '@/utils'
import { getLodop } from '@/assets/js/lodop/LodopFuncs'
import crudBucketrecord from "@/api/wms/basedata/master/bucketrecord";
import InsertAndPrint from '@/views/wms/basedata/master/bagrecord/insertAndPrintDialog'
import Date from '@/utils/datetime'
const defaultForm = { bagrecord_id: null, bag_id: null, material_id: null, pcsn: null, qty_unit_id: null, qty_unit_name: null, storage_qty: null, seqno: null, remark: null, waste_type: null, return_person: null, print_times: null, status: null, input_optid: null, input_optname: null, input_time: null, bucketunique: null, makeup_optid: null, makeup_optname: null, makeup_time: null, print_type: null }
export default {
name: 'Bagrecord',
dicts: ['MD_MATERIAL_WASTE_TYPE'],
components: { pagination, crudOperation, rrOperation, udOperation },
components: { pagination, crudOperation, rrOperation, udOperation, InsertAndPrint },
mixins: [presenter(), header(), form(defaultForm), crud()],
cruds() {
return CRUD({
@@ -232,6 +244,7 @@ export default {
{ 'code': '02', 'name': '组桶' },
{ 'code': '03', 'name': '清洗' }
],
insertAndPrintDialog: false,
query_flag: true,
permission: {
},
@@ -337,6 +350,9 @@ export default {
this.crud.toQuery()
})
})
},
insertAndPrint() {
this.insertAndPrintDialog = true
}
}
}

View File

@@ -0,0 +1,196 @@
<template>
<el-dialog
title="新增打印"
append-to-body
:visible.sync="dialogVisible"
width="450px"
:before-close="handleClose"
destroy-on-close
@close="close"
>
<el-form ref="form" :model="form1" :rules="rules" size="mini" label-width="110px">
<el-form-item label="压制单号:" prop="bill_code">
<el-input v-model="form1.bill_code" placeholder="请输入单号" style="width: 250px;" @blur="blurQueryMater(form1.bill_code)" />
</el-form-item>
<el-form-item label="粉料编码:" prop="material_code">
<el-select
v-model="form1.material_code"
clearable
size="mini"
placeholder="全部"
class="filter-item"
style="width: 250px;"
@change="changePcsn"
>
<el-option
v-for="item in materialList"
:key="item.pcsn"
:label="item.material_code"
:value="item.material_code"
/>
</el-select>
</el-form-item>
<el-form-item label="粉料批号:" prop="pcsn">
<el-input v-model="form1.pcsn" disabled style="width: 250px;" />
</el-form-item>
<el-form-item label="重量:" prop="storage_qty">
<el-input-number v-model="form1.storage_qty" :min="0" :precision="3" :controls="false" style="width: 250px;" />
</el-form-item>
<el-form-item label="还回人员编码:" prop="return_code">
<el-input v-model="form1.return_code" placeholder="请输入人员编码" style="width: 250px;" @blur="blurPerson(form1.return_code)" />
</el-form-item>
<el-form-item label="还回人员名称:" prop="return_person">
<el-input v-model="form1.return_person" disabled style="width: 250px;" />
</el-form-item>
<el-form-item label="软废类型:" prop="waste_type">
<el-select
v-model="form1.waste_type"
clearable
size="mini"
placeholder="全部"
class="filter-item"
style="width: 250px;"
>
<el-option
v-for="item in dict.MD_MATERIAL_WASTE_TYPE"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="袋数:" prop="bag_num">
<el-input-number v-model="form1.bag_num" :min="1" :precision="0" :controls="false" style="width: 250px;" />
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="groupBag"> </el-button>
</span>
</el-dialog>
</template>
<script>
import CRUD, { header, presenter } from '@crud/crud'
import crudBagrecord from '@/api/wms/basedata/master/bagrecord'
import { getLodop } from '@/assets/js/lodop/LodopFuncs'
export default {
dicts: ['MD_MATERIAL_WASTE_TYPE'],
name: 'ProcessDialog',
mixins: [presenter(), header()],
props: {
dialogShow: {
type: Boolean,
default: false
},
openParam: {
type: String
},
fatherMethod: {
type: Function,
default: null
}
},
watch: {
dialogShow: {
handler(newValue, oldValue) {
this.dialogVisible = newValue
}
}
},
data() {
return {
materialList: [],
dialogVisible: false,
form1: {
return_person: null,
bag_num: '1'
}
}
},
methods: {
handleClose(done) {
this.$confirm('确认关闭?')
.then(_ => {
done()
})
.catch(_ => {
})
},
close() {
this.$emit('update:dialogShow', false)
this.form1 = {}
},
blurQueryMater(val) {
// 根据单据号查询调用接口获取压制订单内信息
const res = [
{ 'pcsn': '111', 'material_code': 'XR13II-P-B-20' },
{ 'pcsn': '23423', 'material_code': '001' },
{ 'pcsn': '444', 'material_code': '002' },
{ 'pcsn': '1215552', 'material_code': '003' }
]
this.materialList = res
},
changePcsn(val) {
this.materialList.forEach(item => {
if (item.material_code === val) {
this.form1.pcsn = item.pcsn
}
})
},
blurPerson(val) {
// 调用接口查询对应的人员信息
this.form1.return_person = val
},
groupBag() {
crudBagrecord.groupBag(this.form1).then(res => {
this.crud.notify('操作成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
const LODOP = getLodop()
const data = res.data
data.forEach(item => {
debugger
var num = Number.parseFloat(item.storage_qty)
LODOP.SET_SHOW_MODE('HIDE_DISBUTTIN_SETUP', 1)// 隐藏那些无效按钮
// 打印纸张大小设置https://www.it610.com/article/2094844.html
LODOP.PRINT_INIT('')
LODOP.SET_PRINT_PAGESIZE(1, '80mm', '60mm', '')
LODOP.ADD_PRINT_RECT('1mm', '3mm', '74mm', '54mm', 0, 1)
LODOP.SET_PRINT_STYLE('FontSize', 12)
LODOP.SET_PRINT_STYLE('Bold', 1)
LODOP.ADD_PRINT_BARCODE('2mm', '4mm', '33mm', '33mm', 'QRCode', item.bag_id + '##' + item.ext_id + '##' + item.pcsn + '##' + num + '##' + item.input_time)
LODOP.ADD_PRINT_TEXT('5mm', '35mm', '50mm', '15mm', '日期:' + item.input_time)
LODOP.ADD_PRINT_TEXT('15mm', '35mm', '50mm', '15mm', '批次:' + item.pcsn)
LODOP.ADD_PRINT_TEXT('25mm', '35mm', '50mm', '15mm', '重量:' + num + 'kg')
LODOP.ADD_PRINT_TEXT('34mm', '5mm', '80mm', '15mm', '袋号:' + item.bag_id)
LODOP.ADD_PRINT_TEXT('41mm', '5mm', '80mm', '15mm', '编码:' + item.material_code)
LODOP.ADD_PRINT_TEXT('48mm', '5mm', '80mm', '15mm', '还回人员:' + item.return_person)
// LODOP.PRINT_DESIGN() // 打印设置
// LODOP.PREVIEW()// 预览
LODOP.PRINT()// 打印
})
this.close()
this.fatherMethod()
})
}
}
}
</script>
<style scoped>
</style>