diff --git a/klp-ui/public/冷轧厂业务流程泳道图(1).html b/klp-ui/public/冷轧厂业务流程泳道图(1).html new file mode 100644 index 00000000..c67105b1 --- /dev/null +++ b/klp-ui/public/冷轧厂业务流程泳道图(1).html @@ -0,0 +1,430 @@ + + + + + +冷轧厂业务流程泳道图 + + + + + +
+
+ + + + + diff --git a/klp-ui/src/api/wms/coil.js b/klp-ui/src/api/wms/coil.js index d7ef2566..0c02d69b 100644 --- a/klp-ui/src/api/wms/coil.js +++ b/klp-ui/src/api/wms/coil.js @@ -529,4 +529,13 @@ export function getExportColumns() { url: '/wms/materialCoil/exportColumns', method: 'get', }) +} + +export function listForPeriodComparison(data) { + return request({ + url: '/wms/materialCoil/listForPeriodComparison', + method: 'post', + timeout: 600000, + data: data + }) } \ No newline at end of file diff --git a/klp-ui/src/views/cost/coil.vue b/klp-ui/src/views/cost/coil.vue index 5e5f7bd5..506915cf 100644 --- a/klp-ui/src/views/cost/coil.vue +++ b/klp-ui/src/views/cost/coil.vue @@ -123,7 +123,7 @@ import * as echarts from 'echarts' import { getCoilHoardingStats, listCoilHoardingDetail } from '@/api/cost/coil' import WarehouseSelect from '@/components/KLPService/WarehouseSelect' -const PRODUCT_NAMES = ['镀锌卷', '镀铬卷', '冷硬卷', '热轧卷板'] +const PRODUCT_NAMES = ['镀锌卷', '镀铬卷', '冷硬卷', '热轧卷板', '冷轧卷', '花纹板'] function parseFirstCreateTime(row) { try { @@ -237,17 +237,37 @@ export default { fetchDimension() { this.dimLoading = true const base = this.buildQuery() - const promises = PRODUCT_NAMES.map(v => { - const body = { ...base, itemName: v } - return getCoilHoardingStats(body).then(res => ({ + const promises = PRODUCT_NAMES.flatMap(v => { + const baseBody = { ...base, itemName: v } + const productReq = getCoilHoardingStats({ ...baseBody, selectType: 'product' }).then(res => ({ label: v, avgDays: parseFloat((res.data && res.data.avgHoardingDays) || 0), avgCost: parseFloat((res.data && res.data.avgHoardingCost) || 0), count: parseInt((res.data && res.data.totalCount) || 0) })) + const rawReq = getCoilHoardingStats({ ...baseBody, selectType: 'raw_material' }).then(res => ({ + label: v, + avgDays: parseFloat((res.data && res.data.avgHoardingDays) || 0), + avgCost: parseFloat((res.data && res.data.avgHoardingCost) || 0), + count: parseInt((res.data && res.data.totalCount) || 0) + })) + return [productReq, rawReq] }) Promise.all(promises).then(data => { - this.dimensionData = data.filter(d => d.count > 0) + const map = {} + data.forEach(d => { + if (!map[d.label]) { + map[d.label] = { label: d.label, avgDays: 0, avgCost: 0, count: 0 } + } + const prev = map[d.label] + const totalCount = prev.count + d.count + if (totalCount > 0) { + prev.avgDays = parseFloat(((prev.avgDays * prev.count + d.avgDays * d.count) / totalCount).toFixed(2)) + prev.avgCost = parseFloat(((prev.avgCost * prev.count + d.avgCost * d.count) / totalCount).toFixed(2)) + } + prev.count = totalCount + }) + this.dimensionData = Object.values(map).filter(d => d.count > 0) this.$nextTick(() => this.updateDimChart()) }).finally(() => { this.dimLoading = false }) }, diff --git a/klp-ui/src/views/wms/post/index.vue b/klp-ui/src/views/wms/post/index.vue index ad36931f..40ca7666 100644 --- a/klp-ui/src/views/wms/post/index.vue +++ b/klp-ui/src/views/wms/post/index.vue @@ -1,6 +1,8 @@