rev:1.合同台账修改 2.混合料质检喷雾工序加质检抽样标签打印

This commit is contained in:
2023-12-19 16:57:25 +08:00
parent c2b0f2e5ad
commit c01a367876
14 changed files with 346 additions and 45 deletions

View File

@@ -27,6 +27,7 @@
输入.cmaterialvid TYPEAS s_string
输入.bill_code TYPEAS s_string
输入.return_code TYPEAS s_string
输入.no_ids TYPEAS f_string
@@ -178,6 +179,21 @@
ENDQUERY
ENDIF
IF 输入.flag = "8"
QUERY
SELECT
pp.*
FROM
PURCHASE_CONTRACT_VIEW pp
WHERE
1=1
OPTION 输入.no_ids <> ""
pp.VBILLCODE in 输入.no_ids
ENDOPTION
ENDSELECT
ENDQUERY
ENDIF

View File

@@ -108,6 +108,14 @@ public class PcsIfPurchaseorderprocController {
return new ResponseEntity<>(pcsIfPurchaseorderprocService.ledgerQuery(whereJson,page),HttpStatus.OK);
}
@PostMapping("/saveRemark")
@Log("修改备注")
@ApiOperation("修改备注")
public ResponseEntity<Object> saveRemark(@RequestBody JSONObject whereJson){
pcsIfPurchaseorderprocService.saveRemark(whereJson);
return new ResponseEntity<>(HttpStatus.OK);
}
@GetMapping("/receiveQuery")
@Log("到货通知单查询")
@ApiOperation("到货通知单查询")

View File

@@ -1,6 +1,7 @@
package org.nl.wms.pcs.service;
import com.alibaba.fastjson.JSONObject;
import org.nl.wms.pcs.service.dto.PcsIfPurchaseorderprocDto;
import org.springframework.data.domain.Pageable;
@@ -91,4 +92,10 @@ public interface PcsIfPurchaseorderprocService {
* @return Map<String,Object>
*/
Map<String,Object> receiveQuery(Map whereJson, Pageable page);
/**
* 修改备注
* @param whereJson /
*/
void saveRemark(JSONObject whereJson);
}

View File

@@ -31,6 +31,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.locks.ReentrantLock;
import java.util.stream.Collectors;
/**
* @author Liuxy
@@ -188,7 +189,7 @@ public class PcsIfPurchaseorderprocServiceImpl implements PcsIfPurchaseorderproc
public Map<String, Object> ledgerQuery(Map whereJson, Pageable page) {
String material_code = MapUtil.getStr(whereJson, "material_code");
HashMap<String, String> map = new HashMap<>();
map.put("flag", "1");
map.put("flag", "11");
map.put("begin_time", MapUtil.getStr(whereJson, "begin_time"));
map.put("end_time", MapUtil.getStr(whereJson, "end_time"));
if (!ObjectUtil.isEmpty(material_code)) {
@@ -202,28 +203,29 @@ public class PcsIfPurchaseorderprocServiceImpl implements PcsIfPurchaseorderproc
if (!ObjectUtil.isEmpty(vbillcode)) {
map.put("vbillcode", "%" + vbillcode + "%");
}
JSONObject json = WQL.getWO("QPCS_IF_PURCHASEORDERPROC02").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "remst.input_time desc");
JSONArray jsonArray = json.getJSONArray("content");
JSONArray content = new JSONArray();
// 处理延迟天数: 最后一次到货时间 - 合同要求履约时间
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
// 如果未到货重量小于0 put0
double notqty = jsonObject.getDoubleValue("notqty");
if (notqty < 0) {
jsonObject.put("notqty", "0");
}
String input_time = jsonObject.getString("input_time");
String honor_time = jsonObject.getString("honor_time");
if (ObjectUtil.isNotEmpty(input_time) && ObjectUtil.isNotEmpty(honor_time)) {
String suInput_time = input_time.substring(0, 10);
String suHonor_time = honor_time.substring(0, 10);
long delayDay = getDaySize(suHonor_time, suInput_time);
jsonObject.put("delayDay", delayDay + "");
}
content.add(jsonObject);
JSONObject json = WQL.getWO("QPCS_IF_PURCHASEORDERPROC02").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "oder.VBILLCODE");
List<JSONObject> content = json.getJSONArray("content").toJavaList(JSONObject.class);
String no_ids = content.stream()
.filter(row -> ObjectUtil.isNotEmpty(row.getString("contract_no")))
.map(row -> row.getString("contract_no"))
.collect(Collectors.joining("','"));
// 查询erp视图
List<JSONObject> ja = WQL.getWO("QERP").setDbname("dataSource1").addParam("flag", "8").addParam("no_ids", "('"+no_ids+"')").process().getResultJSONArray(0).toJavaList(JSONObject.class);
for (int i = 0; i < content.size(); i++) {
JSONObject jsonObject = content.get(i);
List<JSONObject> collect = ja.stream()
.filter(row -> row.getString("vbillcode").equals(jsonObject.getString("contract_no"))
&& row.getString("material_code").equals("item_code"))
.collect(Collectors.toList());
jsonObject.put("subscribedate", ObjectUtil.isNotEmpty(collect) ? collect.get(0).getString("subscribedate") : "");
}
json.put("content", content);
json.put("content",content);
return json;
}
@@ -234,6 +236,14 @@ public class PcsIfPurchaseorderprocServiceImpl implements PcsIfPurchaseorderproc
return json;
}
@Override
public void saveRemark(JSONObject whereJson) {
WQLObject tab = WQLObject.getWQLObject("PCS_IF_PurchaseOrderProc");
JSONObject jsonObject = tab.query("id = '" + whereJson.getString("id") + "'").uniqueResult(0);
jsonObject.put("remark", whereJson.getString("remark"));
tab.update(jsonObject);
}
public static long getDaySize(String start_datetime, String end_datetime) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();

View File

@@ -123,6 +123,75 @@
ENDPAGEQUERY
ENDIF
IF 输入.flag = "11"
PAGEQUERY
SELECT
oder.id,
oder.contract_no,
supp.supp_name,
mater.material_name,
mater.material_code,
oder.PRICE_TAX,
oder.QTY,
oder.QTY * oder.PRICE_TAX AS money,
oder.QTY - redtl.allqty AS notqty,
supp.honour_days,
LEFT(remst.input_time,10) as input_time,
dtl.receive_qty,
dtl.receive_qty * oder.PRICE_TAX AS valmoney,
DATE_ADD(LEFT(remst.input_time,10),INTERVAL supp.honour_days DAY) AS plan_date,
redtl.allqty,
redtl.allqty * oder.PRICE_TAX AS all_valmoney,
oder.remark
FROM
PCS_IF_PurchaseOrderProc oder
LEFT JOIN PCS_RC_ReceiveDtl dtl ON dtl.source_billdtl_id = oder.id AND dtl.source_bill_code = oder.vbillcode
LEFT JOIN md_cs_supplierbase supp ON oder.VEND_ID = supp.ext_id
LEFT JOIN md_me_materialbase mater ON oder.ITEM_ID = mater.ext_id
LEFT JOIN (
SELECT
sum( a.receive_qty ) AS allqty,
max(a.source_billdtl_id) AS source_billdtl_id,
max( a.material_id ) AS material_id,
max( a.pcsn ) AS pcsn,
max( a.receive_id ) AS receive_id
FROM
PCS_RC_ReceiveDtl a
LEFT JOIN PCS_IF_PurchaseOrderProc p ON a.source_billdtl_id = p.id AND a.source_bill_code = p.vbillcode
GROUP BY
a.source_billdtl_id
)
AS redtl ON redtl.source_billdtl_id = dtl.source_billdtl_id
LEFT JOIN (
SELECT
p.input_time,p.receive_id,p.is_delete
FROM
PCS_RC_ReceiveMst p WHERE p.is_delete = '0' ORDER BY p.input_time desc LIMIT 1
) AS remst ON remst.receive_id = dtl.receive_id
WHERE
oder.dr = '0'
OPTION 输入.begin_time <> ""
oder.CREATE_DATE >= 输入.begin_time
ENDOPTION
OPTION 输入.end_time <> ""
oder.CREATE_DATE <= 输入.end_time
ENDOPTION
OPTION 输入.vbillcode <> ""
oder.vbillcode like 输入.vbillcode
ENDOPTION
OPTION 输入.material_code <> ""
(mater.material_code like 输入.material_code or
mater.material_name like 输入.material_code )
ENDOPTION
ENDSELECT
ENDPAGEQUERY
ENDIF
IF 输入.flag = "2"
PAGEQUERY
SELECT

View File

@@ -101,6 +101,14 @@ public class WorkOrderController {
public ResponseEntity<Object> getDepts(@RequestParam Map whereJson) {
return new ResponseEntity<>(workOrdereService.getDepts(whereJson),HttpStatus.OK);
}
@Log("获取数据")
@ApiOperation("获取数据")
@PostMapping("/getInfo")
public ResponseEntity<Object> getInfo(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(workOrdereService.getInfo(whereJson),HttpStatus.OK);
}
@ApiOperation("导出数据")
@GetMapping(value = "/download")
public void download(HttpServletResponse response, @RequestParam Map whereJson) throws IOException {

View File

@@ -77,4 +77,11 @@ public interface WorkOrdereService {
* @param whereJson /
*/
void download(Map whereJson, HttpServletResponse response) throws IOException;
/**
* 获取数据
* @param whereJson /
* @return JSONObject /
*/
JSONObject getInfo(JSONObject whereJson);
}

View File

@@ -888,7 +888,7 @@ public class WorkOrderServiceImpl implements WorkOrdereService {
@Override
public JSONArray getDepts(Map json) {
HashMap<String, String> map = new HashMap<>(json);
map.put("flag", "14");
map.put("flag", "14");
JSONArray ret = WQL.getWO("QPDM_WORKORDER01").addParamMap(map).process().getResultJSONArray(0);
return ret;
}
@@ -1009,4 +1009,11 @@ public class WorkOrderServiceImpl implements WorkOrdereService {
}
FileUtil.downloadExcel(list, response);
}
@Override
public JSONObject getInfo(JSONObject whereJson) {
whereJson.put("print_name", SecurityUtils.getNickName());
whereJson.put("print_date", DateUtil.today());
return whereJson;
}
}

View File

@@ -47,4 +47,12 @@ export function finish(data) {
})
}
export default { add, edit, del, getProcStatus, importData, finish }
export function saveRemark(data) {
return request({
url: 'api/purchaseorderproc/saveRemark',
method: 'post',
data: data
})
}
export default { add, edit, del, getProcStatus, importData, finish, saveRemark }

View File

@@ -61,4 +61,11 @@ export function getDepts(params) {
params
})
}
export default { add, edit, del, submit, confirmWork, openWork, createPcsn, getDepts }
export function getInfo(data) {
return request({
url: 'api/workorder/getInfo',
method: 'post',
data
})
}
export default { add, edit, del, submit, confirmWork, openWork, createPcsn, getDepts, getInfo }

View File

@@ -218,6 +218,16 @@
>
导出Excel
</el-button>
<el-button
slot="right"
class="filter-item"
type="warning"
icon="el-icon-printer"
size="mini"
@click="print"
>
打印标签
</el-button>
</crudOperation>
<!--表格渲染-->
<el-table
@@ -311,6 +321,7 @@ import crudWorkProcedure from '@/api/wms/basedata/pdm/workProcedure'
import { download } from '@/api/data'
import { downloadFile } from '@/utils'
import producetask from '@/api/wms/pdm/producetask'
import { mapGetters } from 'vuex'
export default {
name: 'Workorder',
@@ -587,6 +598,33 @@ export default {
LODOP.PRINT()// 打印
this.crud.notify('打印成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.crud.toQuery()
},
print: function() {
const _selectData = this.$refs.table.selection
const param = _selectData[0]
const LODOP = getLodop()
workorder.getInfo(param).then(data => {
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', data.workorder_code + '##' + data.material_code + '##' + data.old_mark + '##' + data.pcsn)
LODOP.ADD_PRINT_TEXT('5mm', '35mm', '50mm', '15mm', '日期:' + data.print_date)
LODOP.ADD_PRINT_TEXT('15mm', '35mm', '50mm', '15mm', '批次:' + data.pcsn)
LODOP.ADD_PRINT_TEXT('25mm', '35mm', '50mm', '15mm', '打印人:' + data.print_name)
LODOP.ADD_PRINT_TEXT('34mm', '5mm', '80mm', '15mm', '工令:' + data.workorder_code + '')
LODOP.ADD_PRINT_TEXT('41mm', '5mm', '80mm', '15mm', '物料:' + data.material_code + '')
LODOP.ADD_PRINT_TEXT('48mm', '5mm', '80mm', '15mm', '牌号:' + data.old_mark + '')
// LODOP.PRINT_DESIGN() // 打印设置
// LODOP.PREVIEW()// 预览
LODOP.PRINT()// 打印
this.crud.notify('打印成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.crud.toQuery()
})
}
}
}

View File

@@ -62,33 +62,50 @@
style="width: 100%;"
@selection-change="crud.selectionChangeHandler"
>
<el-table-column prop="vbillcode" label="订单编号" min-width="100" show-overflow-tooltip>
<!-- <el-table-column prop="vbillcode" label="订单编号" min-width="100" show-overflow-tooltip>
<template slot-scope="scope">
<el-link type="warning" @click="openReceive(scope.row)">{{ scope.row.vbillcode }}</el-link>
</template>
</el-table-column>-->
<el-table-column label="合同内容" align="center">
<el-table-column prop="subscribedate" label="签订时间" width="150px" show-overflow-tooltip />
<el-table-column prop="contract_no" label="合同编码" width="120px" show-overflow-tooltip/>
<el-table-column prop="supp_name" label="供应商" min-width="220" show-overflow-tooltip/>
<el-table-column prop="material_code" label="物料编码" min-width="150" show-overflow-tooltip />
<el-table-column prop="material_name" label="物料名称" min-width="150" show-overflow-tooltip />
<el-table-column prop="price_tax" label="单价含税" min-width="120" :formatter="crud.formatNum3" show-overflow-tooltip/>
<el-table-column prop="qty" label="重量" show-overflow-tooltip :formatter="crud.formatNum3" />
<el-table-column prop="money" label="金额" show-overflow-tooltip :formatter="crud.formatNum3" width="110" />
<el-table-column prop="notqty" label="未到货重量" :formatter="crud.formatNum3" show-overflow-tooltip width="110"/>
<el-table-column prop="honour_days" label="账龄" width="150px" show-overflow-tooltip/>
</el-table-column>
<el-table-column label="到货情况" align="center">
<el-table-column prop="allqty" label="合计重量" show-overflow-tooltip :formatter="crud.formatNum3" />
<el-table-column prop="all_valmoney" label="合计金额" show-overflow-tooltip :formatter="crud.formatNum3" />
<el-table-column prop="input_time" label="到货时间" width="150px" show-overflow-tooltip />
<el-table-column prop="receive_qty" label="到货重量" show-overflow-tooltip :formatter="crud.formatNum3" />
<el-table-column prop="valmoney" label="到货金额" show-overflow-tooltip :formatter="crud.formatNum3" />
<el-table-column prop="plan_date" label="资金计划" width="150px" show-overflow-tooltip />
</el-table-column>
<el-table-column label="备注" align="center">
<el-table-column prop="remark" label="内容" width="200px" show-overflow-tooltip />
<el-table-column
label="操作"
width="115"
align="center"
fixed="right"
>
<template slot-scope="scope">
<el-button type="primary" icon="el-icon-edit" circle @click="openRemarkDaing(scope.row)" />
</template>
</el-table-column>
</el-table-column>
<el-table-column prop="create_date" label="订单日期" width="150px" show-overflow-tooltip />
<el-table-column prop="contract_no" label="合同编码" width="120px" show-overflow-tooltip/>
<el-table-column prop="supp_name" label="供应商" min-width="220" show-overflow-tooltip/>
<el-table-column prop="material_code" label="物料编码" min-width="150" show-overflow-tooltip />
<el-table-column prop="material_name" label="物料名称" min-width="150" show-overflow-tooltip />
<el-table-column prop="price_tax" label="单价含税" min-width="120" :formatter="crud.formatNum3" show-overflow-tooltip/>
<el-table-column prop="price" label="单价不含税" min-width="120" :formatter="crud.formatNum3" show-overflow-tooltip/>
<el-table-column prop="qty" label="重量" show-overflow-tooltip :formatter="crud.formatNum3" />
<el-table-column prop="money" label="金额" width="120px" :formatter="crud.formatNum3" show-overflow-tooltip/>
<el-table-column prop="allqty" label="到货重量" :formatter="crud.formatNum3" show-overflow-tooltip/>
<el-table-column prop="notqty" label="未到货重量" :formatter="crud.formatNum3" show-overflow-tooltip/>
<el-table-column prop="ivt_qty" label="待检重量" :formatter="crud.formatNum3" show-overflow-tooltip/>
<el-table-column prop="input_time" label="最后一次到货时间" min-width="140" show-overflow-tooltip/>
<el-table-column prop="honor_time" label="合同要求履约时间" min-width="140" show-overflow-tooltip/>
<el-table-column prop="delayDay" label="延迟天数" show-overflow-tooltip/>
<el-table-column prop="honour_days" label="资金计划履约天数" width="150px" show-overflow-tooltip/>
<el-table-column prop="allqty" label="累计到货重量" :formatter="crud.formatNum3" width="150px" show-overflow-tooltip/>
</el-table>
<!--分页组件-->
<pagination />
</div>
<ReceiveDialog :dialog-show.sync="receiveDialog" :open-param="openParam"/>
<remarkDaing :dialog-show.sync="remarkDaing" :open-param="openParam" />
</div>
</template>
@@ -100,10 +117,11 @@ import crudOperation from '@crud/CRUD.operation'
import crudOrderproc from '@/api/wms/pcs/orderproc'
import DateRangePicker from '@/components/DateRangePicker'
import ReceiveDialog from '@/views/wms/statistics/ledgerQuery/ReceiveDialog'
import remarkDaing from '@/views/wms/statistics/ledgerQuery/remarkDaing'
export default {
name: 'LedgerQuery',
components: { pagination, rrOperation, crudOperation, DateRangePicker, ReceiveDialog},
components: { pagination, rrOperation, crudOperation, DateRangePicker, ReceiveDialog, remarkDaing},
mixins: [presenter(), header(), crud()],
cruds() {
return CRUD({
@@ -129,7 +147,8 @@ export default {
data() {
return {
openParam: '',
receiveDialog: false
receiveDialog: false,
remarkDaing: false
}
},
created() {
@@ -145,6 +164,10 @@ export default {
openReceive(row) {
this.openParam = row.vbillcode
this.receiveDialog = true
},
openRemarkDaing(row) {
this.openParam = row.id
this.remarkDaing = true
}
}
}

View File

@@ -0,0 +1,93 @@
<template>
<el-dialog
title="编辑"
append-to-body
:visible.sync="dialogVisible"
destroy-on-close
:show-close="true"
width="700px"
v-loading.fullscreen.lock="fullscreenLoading"
@close="close"
@open="open"
>
<div class="head-container">
<el-form
ref="form"
:inline="true"
:model="form"
:rules="rules"
size="mini"
label-width="85px"
label-suffix=":"
>
<el-form-item label="备注" prop="remark">
<label slot="label">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:</label>
<el-input
v-model.trim="form.remark"
style="width: 380px;"
rows="2"
type="textarea"
/>
</el-form-item>
<el-button class="filter-item" size="mini" type="success" icon="el-icon-search" @click="saveRemark">确认</el-button>
</el-form>
</div>
</el-dialog>
</template>
<script>
import CRUD, { header, presenter } from '@crud/crud'
import rrOperation from '@crud/RR.operation'
import pagination from '@crud/Pagination'
import crudOrderproc from '@/api/wms/pcs/orderproc'
export default {
name: 'RemarkDaing',
components: { rrOperation, pagination },
cruds() {
},
mixins: [presenter(), header()],
props: {
dialogShow: {
type: Boolean,
default: false
},
openParam: {
type: String
}
},
data() {
return {
fullscreenLoading: false,
dialogVisible: false,
form: {}
}
},
watch: {
dialogShow: {
handler(newValue, oldValue) {
this.dialogVisible = newValue
}
}
},
methods: {
close() {
this.form = {}
this.$emit('update:dialogShow', false)
this.$emit('tableChanged', this.rows)
},
open() {
this.form.id = this.openParam
},
saveRemark() {
crudOrderproc.saveRemark(this.form).then(res => {
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.close()
this.crud.toQuery()
})
}
}
}
</script>