Merge remote-tracking branch 'origin/master'

zhc4dev
wangjiadong 2 years ago
commit e1256dae9a
  1. 10
      ant-design-vue-jeecg/src/views/hanger/HangRecordList.vue
  2. 45
      ant-design-vue-jeecg/src/views/hanger/HangerManage.vue
  3. 4
      ant-design-vue-jeecg/src/views/product/pdaccessories/ProductAccessoriesList.vue
  4. 4
      ant-design-vue-jeecg/src/views/product/pdfabric/ProductFabricList.vue
  5. 240
      ant-design-vue-jeecg/src/views/product/productModule/ProductModuleList.vue
  6. 112
      ant-design-vue-jeecg/src/views/product/productModule/modules/ProductModuleDetail.vue
  7. 2
      ant-design-vue-jeecg/src/views/product/productProcess/ZyProductProcessList.vue
  8. 1
      ant-design-vue-jeecg/src/views/productplan/ProductplanManage.vue
  9. 57
      ant-design-vue-jeecg/src/views/shopping/components/Order/placeOrder.vue
  10. 201
      ant-design-vue-jeecg/src/views/shopping/pages/pay.vue
  11. 2
      ant-design-vue-jeecg/src/views/zyWorkProduct/ZyProductList.vue
  12. 13
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/hanger/controller/HangRecordController.java
  13. 8
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/hanger/controller/ZyHangPointController.java
  14. 4
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/hanger/entity/HangRecord.java
  15. 2
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/hanger/service/IHangRecordService.java
  16. 2
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/hanger/service/IZyHangPointService.java
  17. 75
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/hanger/service/impl/HangRecordServiceImpl.java
  18. 13
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/hanger/service/impl/ZyHangPointServiceImpl.java
  19. 38
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/product/productModule/entity/ProductModule.java

@ -106,6 +106,11 @@ export default {
return parseInt(index) + 1;
}
},
{
title: '工单编号',
align: "center",
dataIndex: 'orderCode'
},
{
title: '吊挂编号',
align: "center",
@ -131,6 +136,11 @@ export default {
align: "center",
dataIndex: 'duration'
},
{
title: '创建时间',
align: "center",
dataIndex: 'createTime'
},
{
title: '状态',
align: "center",

@ -6,6 +6,7 @@
<div>
<j-vxe-table
ref="xTable"
bordered
toolbar
:toolbarConfig="toolbarConfig"
row-number
@ -33,7 +34,7 @@
import '@/assets/less/TableExpand.less'
import {mixinDevice} from '@/utils/mixin'
import {JeecgListMixin} from '@/mixins/JeecgListMixin'
import {getAction, postAction} from "@api/manage";
import {getAction, postAction, putAction} from "@api/manage";
import {filterObj, pushIfNotExist, randomNumber, randomUUID} from "@/utils/util";
import {JVXETypes} from '@/components/jeecg/JVxeTable'
@ -53,12 +54,12 @@ export default {
{
title: '车间',
key: 'workshopName',
width: '220px',
// width: '220px',
},
{
title: '吊挂编号',
key: 'code',
width: '220px',
// width: '220px',
},
{
title: '工站数量',
@ -69,7 +70,7 @@ export default {
title: '工站编号',
key: 'point',
type: JVXETypes.input,
width: '220px',
// width: '220px',
/*validateRules: [
{
required: true, //
@ -130,7 +131,7 @@ export default {
url: {
list: "/org.jeecg.modules.hanger/zyHang/getPointById",
getStationList: "/jeecg-boot/org.jeecg.modules.hanger/zyHang/getStationList",
syncHangRecord: "/org.jeecg.modules.productplan/zyPlanProcess/syncHangRecord",
syncHangRecord: "/org.jeecg.modules.hanger/hangRecord/syncHangRecord",
addBatch: "/org.jeecg.modules.hanger/zyHangPoint/addBatch",
},
loadRouteType: false,
@ -144,23 +145,25 @@ export default {
},
created() {
this.loadParameter();
// this.getStationList();
},
methods: {
async getStationList() {
const {data: res} = await this.$axios.get(this.url.getStationList, {params: {id: this.id}})
if (res.success) {
// this.dataSource = res.result.records || res.result;
this.stationIdList = JSON.stringify(res.result);
console.log("the getStationList=" + this.stationIdList)
console.log("this.columns[6].options------------:" + this.columns[6].options);
this.columns[6].options = this.stationIdList;
} else {
this.$message.warning(res.message)
}
},
/* updated() {
console.log("beforeUpdate-------",JSON.stringify(this.stationIdList));
console.log("this.$refs.vxe.columns[5].options-------",this.$refs.xTable.columns);
// this.$data.columns[5].options = this.stationIdList;
if (this.$refs.xTable.columns.concat('stationName2')) {
// this.$refs.xTable.columns[5].options = this.stationIdList
console.log("concat")
this.$refs.xTable.columns[5].options= this.stationIdList;
this.$refs.xTable.columns[4].options= this.stationIdList;
}
// this.$forceUpdate();
// this.$refs.xTable.columns[6].options = this.stationIdList
// this.$refs.xTable.columns[7].options = this.stationIdList
},*/
methods: {
//
handleTableSave({$table, target}) {
console.log("生产计划工序保存开始-----------------")
@ -195,7 +198,7 @@ export default {
//
syncHangRecord() {
this.loading = true;
getAction(this.url.syncHangRecord, {"code": this.code}).then((res) => {
putAction(this.url.syncHangRecord, {"hangCode": this.code}).then((res) => {
if (res.success) {
this.$message.success("操作成功");
} else {
@ -264,7 +267,7 @@ export default {
console.log("handleSelectRowChange-event:", event)
const {type, row, column, value, target, $table} = event
console.log("stationIdList", JSON.stringify(this.stationIdList));
target.$refs.vxe.columns[6].options = this.stationIdList;
target.$refs.vxe.columns[7].options = this.stationIdList;
},
/** 当选项被改变时,联动其他组件 */

@ -28,7 +28,7 @@
<!-- 操作按钮区域 -->
<div class="table-operator">
<a-button @click="fanhui" type="primary" icon="plus">返回</a-button>
<a-button @click="fanhui" type="primary" icon="rollback">返回</a-button>
<!-- <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>-->
<!-- <a-button type="primary" icon="download" @click="handleExportXls('产品辅料表')">导出</a-button>-->
<!-- <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">-->
@ -194,7 +194,7 @@
deleteBatch: "/pdaccessories/productAccessories/deleteBatch",
exportXlsUrl: "/pdaccessories/productAccessories/exportXls",
importExcelUrl: "pdaccessories/productAccessories/importExcel",
},
dictOptions:{},
superFieldList:[],

@ -42,7 +42,7 @@
<!-- </a-menu>-->
<!-- <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>-->
<!-- </a-dropdown>-->
<a-button @click="fanhui" type="primary" icon="plus">返回</a-button>
<a-button @click="fanhui" type="primary" icon="rollback">返回</a-button>
</div>
<!-- table区域-begin -->
@ -189,7 +189,7 @@
deleteBatch: "/pdfabric/productFabric/deleteBatch",
exportXlsUrl: "/pdfabric/productFabric/exportXls",
importExcelUrl: "pdfabric/productFabric/importExcel",
},
dictOptions:{},
superFieldList:[],

@ -42,11 +42,6 @@
<!-- table区域-begin -->
<div>
<div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
<i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>
<a style="margin-left: 24px" @click="onClearSelected">清空</a>
</div>
<a-table
ref="table"
size="middle"
@ -61,31 +56,12 @@
class="j-table-force-nowrap"
@change="handleTableChange">
<template slot="htmlSlot" slot-scope="text">
<div v-html="text"></div>
</template>
<template slot="imgSlot" slot-scope="text">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
<img v-else :src="getImgView(text)" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/>
</template>
<template slot="fileSlot" slot-scope="text">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
<a-button
v-else
:ghost="true"
type="primary"
icon="download"
size="small"
@click="downloadFile(text)">
下载
</a-button>
</template>
<span slot="action" slot-scope="text, record">
<!-- <a @click="handleEdit(record)">编辑</a>-->
<a-divider type="vertical" />
<a @click="handleDetail(record)">详情</a>
<a-divider type="vertical" />
<!--<a @click="handleEdit(record)">编辑</a>-->
<!--<a @click="handleDetail(record)">详情</a>-->
<a @click="openDetail(record.id)">详情</a>
<a-divider type="vertical"/>
<a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
<a>删除</a>
</a-popconfirm>
@ -94,123 +70,125 @@
</a-table>
</div>
<product-module-detail ref="ProductModuleDetail"/>
<product-module-modal ref="modalForm" @ok="modalFormOk"></product-module-modal>
</a-card>
</template>
<script>
import '@/assets/less/TableExpand.less'
import { mixinDevice } from '@/utils/mixin'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import ProductModuleModal from './modules/ProductModuleModal'
import '@/assets/less/TableExpand.less'
import {mixinDevice} from '@/utils/mixin'
import {JeecgListMixin} from '@/mixins/JeecgListMixin'
import ProductModuleModal from './modules/ProductModuleModal'
import ProductModuleDetail from '@/views/product/productModule/modules/ProductModuleDetail'
export default {
name: 'ProductModuleList',
mixins:[JeecgListMixin, mixinDevice],
components: {
ProductModuleModal
},
data () {
return {
description: '工单管理下面的产品模块管理页面',
biaoTi:'',
loadRouteType: false,
//
columns: [
{
title: '#',
dataIndex: '',
key:'rowIndex',
width:60,
align:"center",
customRender:function (t,r,index) {
return parseInt(index)+1;
}
},
{
title:'产品id',
align:"center",
dataIndex: 'productId'
},
{
// title:'id',
title:'模块编号',
align:"center",
dataIndex: 'styleModuleId'
},
{
title:'模块名称',
align:"center",
dataIndex: 'moduleId'
},
{
title:'部位',
align:"center",
dataIndex: 'place'
},
{
title: '创建时间',
align: "center",
dataIndex: 'createTime'
},
{
title: '操作',
dataIndex: 'action',
align:"center",
fixed:"right",
width:147,
scopedSlots: { customRender: 'action' }
export default {
name: 'ProductModuleList',
mixins: [JeecgListMixin, mixinDevice],
components: {
ProductModuleDetail,
ProductModuleModal
},
data() {
return {
description: '工单管理下面的产品模块管理页面',
biaoTi: '',
loadRouteType: false,
//
columns: [
{
title: '#',
dataIndex: '',
key: 'rowIndex',
width: 60,
align: "center",
customRender: function (t, r, index) {
return parseInt(index) + 1;
}
],
url: {
list: "/productModule/productModule/list",
delete: "/productModule/productModule/delete",
deleteBatch: "/productModule/productModule/deleteBatch",
exportXlsUrl: "/productModule/productModule/exportXls",
importExcelUrl: "productModule/productModule/importExcel",
},
dictOptions:{},
superFieldList:[],
}
},
created() {
{
title: '产品编号',
align: "center",
dataIndex: 'productId'
},
{
// title:'id',
title: '模块编号',
align: "center",
dataIndex: 'styleModuleId'
},
{
title: '模块名称',
align: "center",
dataIndex: 'moduleId'
},
{
title: '创建时间',
align: "center",
dataIndex: 'createTime'
},
{
title: '操作',
dataIndex: 'action',
align: "center",
fixed: "right",
width: 147,
scopedSlots: {customRender: 'action'}
}
],
url: {
list: "/productModule/productModule/list",
delete: "/productModule/productModule/delete",
deleteBatch: "/productModule/productModule/deleteBatch",
exportXlsUrl: "/productModule/productModule/exportXls",
importExcelUrl: "productModule/productModule/importExcel",
},
dictOptions: {},
superFieldList: [],
}
},
created() {
// this.getSuperFieldList();
this.loadParameter();
this.loadParameter();
},
computed: {
importExcelUrl: function () {
return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
},
computed: {
importExcelUrl: function(){
return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
},
},
methods: {
openDetail(id) {
this.$refs.ProductModuleDetail.showModal(id)
// this.$children[0].showModal(id)
},
methods: {
fanHui(){
this.$router.push({
/*返回产品*/
path: '/WorkProduct',/*在引号中填写返回vue*/
});
},
loadParameter() {
if (this.loadRouteType === false) {
this.biaoTi=this.$route.query.productName+" 产品模块管理";
console.log("***********",this.$route.query.productName)
this.loadRouteType = true;
}
},
initDictConfig(){
},
getSuperFieldList(){
let fieldList=[];
fieldList.push({type:'string',value:'productId',text:'产品id',dictCode:''})
fieldList.push({type:'string',value:'styleModuleId',text:'款式模块id',dictCode:''})
fieldList.push({type:'string',value:'moduleId',text:'模块id',dictCode:''})
fieldList.push({type:'string',value:'place',text:'部位',dictCode:''})
this.superFieldList = fieldList
fanHui() {
this.$router.push({
/*返回产品*/
path: '/WorkProduct',/*在引号中填写返回vue*/
});
},
loadParameter() {
if (this.loadRouteType === false) {
this.biaoTi = this.$route.query.productName + " 产品模块管理";
//console.log("***********", this.$route.query.productName)
this.loadRouteType = true;
}
},
initDictConfig() {
},
getSuperFieldList() {
let fieldList = [];
fieldList.push({type: 'string', value: 'productId', text: '产品id', dictCode: ''})
fieldList.push({type: 'string', value: 'styleModuleId', text: '款式模块id', dictCode: ''})
fieldList.push({type: 'string', value: 'moduleId', text: '模块id', dictCode: ''})
fieldList.push({type: 'string', value: 'place', text: '部位', dictCode: ''})
this.superFieldList = fieldList
}
}
}
</script>
<style scoped>
@import '~@assets/less/common.less';
@import '~@assets/less/common.less';
</style>

@ -0,0 +1,112 @@
<template>
<div>
<a-modal
title="模块管理-详情"
:visible="visible"
:confirm-loading="confirmLoading"
:width='1200'
@ok="handleOk"
@cancel="handleCancel"
style="display:flex;"
>
<div style="width: 96%;margin:0 auto 40px;padding-bottom: 30px">
<h1 style="text-align: center;margin-bottom: 0px;padding-bottom: 20px">黄淮学院服装智能制造管理平台 - <span>模块管理</span></h1>
<div>
<el-descriptions class="margin-top" :column="4" border style="margin-top: 50px">
<el-descriptions-item>
<template slot="label"><i class="el-icon-receiving"></i>产品名称</template>
{{model.productId}}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"><i class="el-icon-coin"></i>模块编号</template>
{{model.styleModuleId}}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"><i class="el-icon-postcard"></i>模块名称</template>
{{model.moduleId}}
</el-descriptions-item>
<!-- <el-descriptions-item>-->
<!-- <template slot="label"><i class="el-icon-copy-document"></i>颜色</template>-->
<!-- {{model.color}}-->
<!-- </el-descriptions-item>-->
<el-descriptions-item>
<template slot="label"><i class="el-icon-copy-document"></i>创建时间</template>
{{model.createTime}}
</el-descriptions-item>
</el-descriptions>
</div>
</div>
</a-modal>
</div>
</template>
<script>
export default {
name: "ProductModuleDetail.vue",
components: {
},
props: {
//
disabled: {
type: Boolean,
default: false,
required: false
}
},
data() {
return {
model: {},
labelCol: {xs: {span: 24}, sm: {span: 5}},
wrapperCol: {xs: {span: 24}, sm: {span: 16}},
confirmLoading: false,
url: {
add: "/fabric/zyFabric/add",
edit: "/fabric/zyFabric/edit",
queryById: "/fabric/zyFabric/queryById"
},
visible: false
}
},
computed: {
formDisabled() {
return this.disabled
},
},
created() {
//model
this.modelDefault = JSON.parse(JSON.stringify(this.model));
},
methods: {
showModal(id) {
this.visible = true;
this.$http.get('/productModule/productModule/queryById?id=' + id).then(
res => {
this.model = res.result
console.log(this.model)
}
)
},
handleOk() {
this.ModalText = 'The modal will be closed after two seconds';
this.confirmLoading = true;
setTimeout(() => {
this.visible = false;
this.confirmLoading = false;
}, 1);
},
handleCancel() {
this.visible = false;
},
}
}
</script>
<style scoped>
</style>

@ -28,7 +28,7 @@
<!-- 操作按钮区域 -->
<div class="table-operator">
<a-button @click="fanhui" type="primary" icon="plus">返回</a-button>
<a-button @click="fanhui" type="primary" icon="rollback">返回</a-button>
<!-- <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>-->
<!-- <a-button type="primary" icon="download" @click="handleExportXls('产品工序')">导出</a-button>-->
<!-- <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">-->

@ -33,6 +33,7 @@
<j-vxe-table
ref="xTable"
toolbar
bordered
:toolbarConfig="toolbarConfig"
row-number
row-selection

@ -148,6 +148,19 @@
<span class="f_14 c_31">总计</span>
<span class="f_20 c_31">35,500</span>
</p>
<div class="btnDiv">
<div type="primary" class="dialogButton primary f_14">立即购买</div>
</div>
<p class="explain f_12 c_999">说明</p>
<p class="f_12 c_999">在线支付订单提交之后15分钟内未付款订单将被系统自动取消请您尽快完成支付以确保商品能及时送达避免取消订单带来不必要的麻烦</p>
</div>
<div class="time">
<p class="f_20 c_333">预计配送时间</p>
<p class="f_12 c_333">我们将会在第一时间为您发货</p>
<p class="f_12 c_333">所有现货商品在1-2个工作日发货门店调货商品会视货品情况进行发货</p>
<p class="f_12 c_333">*定制商品除外</p>
<p class="f_16 c_333">需要多长时间能够送达 </p>
<p class="f_12 c_333">中国大陆2-5个工作日视货品情况而定</p>
</div>
</div>
</div>
@ -201,6 +214,28 @@
};
</script>
<style lang="less" scoped>
.btnDiv{
border-bottom: 1px solid #E7E7E7;
padding-bottom: 30px;
padding-top: 20px;
.dialogButton {
height: 44px;
text-align: center;
line-height: 44px;
transition: all 0.2s;
}
.primary {
background: #1b1b1b;
border: 2px solid #1b1b1b;
color: #e5dfd9;
&:hover {
// border-color: #1b1b1b;
// color: #1b1b1b;
// background-color: #fff;
opacity: 0.8;
}
}
}
.placeOrder{
padding-top: 54px;
padding-bottom: 80px;
@ -266,6 +301,7 @@
.order{
background: #FFFFFF;
padding: 24px 43px;
margin-bottom: 24px;
.d-flex{
justify-content: space-between;
.left{
@ -288,6 +324,27 @@
width: 60px;
height: 77px;
}
}
.explain{
padding-top: 25px;
padding-bottom: 10px;
}
}
.time{
background: #fff;
padding: 24px 43px;
p{
margin-bottom: 5px;
}
.f_20{
font-weight: 500;
margin-bottom: 30px;
}
.f_16{
font-weight: 500;
margin-top: 45px;
margin-bottom: 25px;
}
}
}

@ -5,23 +5,120 @@
<Header></Header>
<h1 class="c_fff">感谢您的订购</h1>
</div>
<a-modal v-model="visible" class="toPay">
<template slot="title">
<div class="c_1B f_20" style="text-align: center;padding: 5px;font-weight: 500">支付宝支付</div>
</template>
<div class="d-flex"
style="
width: 450px;
padding: 30px 10px;
margin: 0 auto;">
<div class="l"
style="
width: 120px;
height: 120px;
background-color: grey;
margin-right: 20px;">
</div>
<div class="r" style="width:290px">
<p class="f_16 c_4B">总计: 9,900</p>
<p class="f_14 c_4B">请使用支付宝扫描左图二维码进行支付</p>
<p class="f_14 c_4B">请您在15分钟内付款以免订单被取消如有疑问请联系客服</p>
<p class="f_14 c_4B">订单发货后您将收到订单发货通知短信</p>
</div>
</div>
<template slot="footer">
<div class="d-flex" style="justify-content: center;align-items:center">
<a-button style="margin-right: 30px;border:none;font-size: 12px" @click="handleOk">手机不在身边 登录账号付款</a-button>
<a-button style="font-size: 12px" size="small" @click="handleCancel">
返回
</a-button>
</div>
</template>
</a-modal>
<div class="jz">
<a-button style="border: none" @click="handleBack">
<a-icon type="left" />返回
</a-button>
<div class="success">
<p class="c_1B f_24">您的订单已提交成功</p>
<p class="c_999 f_14">请继续支付15分钟内未付款订单将自动取消</p>
<p class="c_999 f_14">如有疑问请联系客服</p>
<p class="c_1B f_16"><span>1</span><span>4</span><span>:</span><span>5</span><span>2</span></p>
<p class="c_1B f_16">
<!-- letter-spacing-->
<span>1</span>
<span>4</span>
<span>:</span>
<span>5</span>
<span>2</span>
</p>
<div class="d-flex btnDiv">
<div class="dialogButton default c_1B f_12">修改支付方式</div>
<div type="primary" class="dialogButton primary f_12">立即支付</div></div>
<div type="primary" class="dialogButton primary f_12" @click="showModal">立即支付</div></div>
</div>
<p class="orderNum f_16"><span class="f_16">订单编号 # </span>GU202301052604844</p>
<p class="date f_16 d-flex">
<span class="f_16 c_31">下单日期 <span>2023/01/05</span></span>
<span class="f_12 c_888">订单状态 待付款</span>
<span class="f_12 c_31">数量: 1</span>
<span class="f_12 c_31">总计 9,900</span>
<span class="r d-flex">
<span class="f_12 c_31">数量: 1</span>
<span class="f_12 c_31">总计 9,900</span>
</span>
</p>
<div class="table d-flex">
<div class="tableImg"></div>
<div class="tableTitle">
<div class="title c_31 f_16">中国新年系列针织慢跑裤</div>
<div class="c_999 f_12">款式 象牙白色和多色</div>
<div class="c_999 f_12">主辅料 主料1辅料1叮叮叮辅料n主辅料 主料1辅料1叮叮叮辅料n主辅料 主料1辅料1叮叮叮辅料n</div>
<div class="c_999 f_12">尺码 S</div>
</div>
<div class="fahuo c_31 f_12">预计发货后1-4个工作日送达</div>
<div class="r d-flex">
<div class="tableNum c_31 f_12">数量 : 1</div>
<div class="tablePrice c_31 f_12">9,900</div>
</div>
</div>
<div class="total d-flex">
<div class="d-flex">
<span>商品总计</span>
<span>9,900</span>
</div>
<div class="d-flex">
<span>运费</span>
<span>免费</span>
</div>
<div class="d-flex">
<span>总计</span>
<span>9,900</span>
</div>
</div>
<div class="addr d-flex">
<div class="f_16 c_31 title">配送地址</div>
<div class="addrDiv">
<p class="f_14 c_31">是的发财树是</p>
<p class="f_12 c_4B">天津天津市和平区水擦拭订餐撒上天津天津市和平区水擦拭订餐撒上天津天津市和平区水擦拭订餐撒上天津天津市和平区水擦拭订餐撒上天津天津市和平区水擦拭订餐撒上天津天津市和平区水擦拭订餐撒上</p>
<p class="f_12 c_4B">17766667777</p>
</div>
<div class="express">
<p class="f_14 c_31">普通快递</p>
<p class="f_12 c_4B">免费</p>
<p class="f_12 c_4B">预计发货后1-4个工作日送达</p>
</div>
</div>
<div class="payDiv">
<span class="title f_16 c_31">支付方式</span>
<span class="payWay f_12 c_1B" v-if="payWay ==0">
<a-icon type="alipay" />支付宝</span>
<span class="payWay f_12 c_1B" v-if="payWay ==1">
<a-icon type="wechat" />微信</span>
<span class=" f_12 c_31" v-if="!invoice">不需要发票</span>
<span class=" f_12 c_31" v-if="invoice">需要发票</span>
</div>
</div>
<Footer></Footer>
</div>
@ -34,10 +131,24 @@
components: { Header,Footer },
data() {
return {
visible: false,
payWay:'0',//
invoice:true,//
};
},
methods: {
handleBack(){
this.$router.go(-1)
},
showModal() {
this.visible = true;
},
handleOk(e) {
console.log('--')
},
handleCancel(e) {
this.visible = false;
},
},
};
</script>
@ -54,6 +165,9 @@
.c_31{
color: #313131;
}
.c_4B{
color: #4B4B4B;
}
.btnDiv{
justify-content: space-around;
.dialogButton {
@ -83,6 +197,7 @@
}
}
}
.pay{
.bg{
background-image: url("../assets/bg06.png");
@ -94,6 +209,8 @@
}
}
.jz{
padding-top: 20px;
padding-bottom: 100px;
.success{
width: 500px;
margin: 60px auto;
@ -124,11 +241,85 @@
}
.date{
justify-content: space-between;
margin-bottom: 20px;
.f_16{
font-weight: 600;
}
.r{
width:300px;
justify-content: space-between;
}
}
.table{
justify-content: space-between;
padding: 30px 0 30px 20px;
border-bottom: 2px solid #F2F2F2;
.tableImg{
width: 80px;
height: 80px;
background-color: grey;
}
.tableTitle{
max-width: 500px;
.title{
font-weight: 600;
margin-bottom: 8px;
}
.c_999{
margin-bottom: 2px;
}
}
.r{
width:300px;
justify-content: space-between;
}
}
.total{
flex-direction: column;
align-items: flex-end;
padding-top: 48px;
padding-bottom: 27px;
border-bottom: 2px solid #F2F2F2;
.d-flex{
width: 300px;
justify-content: space-between;
margin-bottom: 12px;
}
}
.addr{
padding: 32px 10px;
font-weight: 600;
border-bottom: 2px solid #F2F2F2;
.title{
}
.addrDiv{
margin: 0 80px;
max-width: 500px;
}
}
.payDiv{
padding: 32px 10px;
.title{
font-weight: 600;
}
.payWay{
margin: 0 80px;
i{
border-radius: 2px;
padding:1px;
margin-right: 5px;
}
.anticon-alipay{
background:#08AAFF;
color:#fff;
}
.anticon-wechat{
background:#00B40C;
color:#fff;
}
}
}
}
}
</style>

@ -356,7 +356,7 @@
},
//
//-
//-
jumpProcesses(record)
{
this.$router.push({

@ -11,6 +11,7 @@ import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.modules.hanger.entity.HangRecord;
import org.jeecg.modules.hanger.entity.ZyHangPoint;
import org.jeecg.modules.hanger.service.IHangRecordService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -56,6 +57,18 @@ public class HangRecordController extends JeecgController<HangRecord, IHangRecor
return Result.OK(pageList);
}
/**
* 根据吊挂编号-增量同步吊挂运行记录
* @param hangRecord
* @return
*/
@ApiOperation(value = "吊挂工位表-同步生产记录表数据到吊挂运行记录表", notes = "吊挂工位表-同步生产记录表数据到吊挂运行记录表")
@PutMapping(value = "/syncHangRecord")
public Result<?> syncHangRecord(@RequestBody HangRecord hangRecord) {
hangRecordService.syncHangRecord(hangRecord);
return Result.OK();
}
/**
* 添加
*

@ -65,14 +65,6 @@ public class ZyHangPointController extends JeecgController<ZyHangPoint, IZyHangP
return Result.OK(zyHangPointService.getLastPointCode());
}
@ApiOperation(value = "吊挂工位表-同步生产记录表数据到吊挂运行记录表", notes = "吊挂工位表-同步生产记录表数据到吊挂运行记录表")
@GetMapping(value = "/syncHangRecord")
public Result<?> syncHangRecord(ZyHangPoint zyHangPoint) {
zyHangPointService.syncHangRecord(zyHangPoint);
return Result.OK();
}
@ApiOperation(value = "吊挂工位表-工站、工位绑定批量添加", notes = "吊挂工位表-工站、工位绑定批量添加")
@PostMapping(value = "/addBatch")
public Result<?> addBatch(@RequestBody List<ZyHangPoint> pointList) {

@ -100,12 +100,12 @@ public class HangRecord implements Serializable {
*/
@Excel(name = "时长", width = 15)
@ApiModelProperty(value = "时长")
private Integer duration;
private String duration;
/**
* 状态
*/
@Excel(name = "状态", width = 15)
@ApiModelProperty(value = "状态")
@Dict(dicCode = "hang_record_status")
private Integer status;
private String status;
}

@ -11,5 +11,5 @@ import org.jeecg.modules.hanger.entity.HangRecord;
* @Version: V1.0
*/
public interface IHangRecordService extends IService<HangRecord> {
void syncHangRecord(HangRecord hangRecord);
}

@ -17,6 +17,4 @@ public interface IZyHangPointService extends IService<ZyHangPoint> {
String getLastPointCode();
void addBatch(List<ZyHangPoint> pointList);
void syncHangRecord(ZyHangPoint zyHangPoint);
}

@ -1,11 +1,28 @@
package org.jeecg.modules.hanger.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.modules.demo.productrecord.entity.ProductRecord;
import org.jeecg.modules.demo.productrecord.service.IProductRecordService;
import org.jeecg.modules.hanger.entity.HangRecord;
import org.jeecg.modules.hanger.entity.ZyHang;
import org.jeecg.modules.hanger.entity.ZyHangPoint;
import org.jeecg.modules.hanger.mapper.HangRecordMapper;
import org.jeecg.modules.hanger.service.IHangRecordService;
import org.jeecg.modules.hanger.service.IZyHangPointService;
import org.jeecg.modules.hanger.service.IZyHangService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.Optional;
/**
* @Description: 吊挂运行记录表
@ -16,4 +33,62 @@ import org.springframework.stereotype.Service;
@Service
public class HangRecordServiceImpl extends ServiceImpl<HangRecordMapper, HangRecord> implements IHangRecordService {
@Autowired
private IZyHangService iZyHangService;
@Autowired
private IZyHangPointService iZyHangPointService;
@Autowired
private IProductRecordService iProductRecordService;
@Override
@Transactional(readOnly = false, rollbackFor = Exception.class)
public void syncHangRecord(HangRecord hangRecord) {
ZyHang one = iZyHangService.getOne(new LambdaQueryWrapper<ZyHang>().eq(ZyHang::getCode, hangRecord.getHangCode()));
Optional.ofNullable(one).orElseThrow(() -> new JeecgBootException("吊挂不存在!"));
List<ZyHangPoint> pointList = iZyHangPointService.list(new LambdaQueryWrapper<ZyHangPoint>().eq(ZyHangPoint::getCode, hangRecord.getHangCode()));
//没有配置工站时,不同步运行记录
if (ObjectUtils.isEmpty(pointList)) return;
//查询每一工站是否已有同步过的工站运行记录数据,
// 有同步过则根据生产记录表创建时间为条件增量同步,
// 未同步过则全量同步
pointList.forEach(e -> {
List<HangRecord> saveList;
List<HangRecord> pointRecordList = this.list(new LambdaQueryWrapper<HangRecord>()
.eq(HangRecord::getHangCode, hangRecord.getHangCode())
.eq(HangRecord::getPoint, e.getPoint())
.orderByDesc(HangRecord::getCreateTime)
);
if (!ObjectUtils.isEmpty(pointRecordList)) {//该工站已同步过,增量同步
Date createTime = pointRecordList.get(0).getCreateTime();
List<ProductRecord> productRecords = iProductRecordService.list(new LambdaQueryWrapper<ProductRecord>()
.eq(ProductRecord::getStationId, e.getStationId())
.gt(ProductRecord::getCreateTime, createTime)
);
saveList = this.convertHangRecord(one.getCode(), e.getPoint(), productRecords);
} else {//该工站未同步过
List<ProductRecord> productRecords = iProductRecordService.list(new LambdaQueryWrapper<ProductRecord>()
.eq(ProductRecord::getStationId, e.getStationId())
);
saveList = this.convertHangRecord(one.getCode(), e.getPoint(), productRecords);
}
this.saveBatch(saveList);
});
}
private List<HangRecord> convertHangRecord(final String hangCode, final String point, List<ProductRecord> productRecords) {
List<HangRecord> saveList = new LinkedList<>();
Optional.ofNullable(productRecords).orElse(new LinkedList<>()).forEach(obj -> {
HangRecord hangRecord1 = new HangRecord();
BeanUtils.copyProperties(obj, hangRecord1);
hangRecord1.setHangCode(hangCode);
hangRecord1.setPoint(point);
hangRecord1.setId(null);
saveList.add(hangRecord1);
});
return saveList;
}
}

@ -4,12 +4,9 @@ package org.jeecg.modules.hanger.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.modules.hanger.entity.ZyHang;
import org.jeecg.modules.hanger.entity.ZyHangPoint;
import org.jeecg.modules.hanger.mapper.ZyHangPointMapper;
import org.jeecg.modules.hanger.service.IZyHangPointService;
import org.jeecg.modules.hanger.service.IZyHangService;
import org.jeecg.modules.team.entity.Station;
import org.jeecg.modules.team.service.IStationService;
import org.springframework.beans.factory.annotation.Autowired;
@ -32,9 +29,6 @@ public class ZyHangPointServiceImpl extends ServiceImpl<ZyHangPointMapper, ZyHan
@Autowired
private IStationService iStationService;
@Autowired
private IZyHangService iZyHangService;
@Override
public String getLastPointCode() {
List<ZyHangPoint> pointList = this.list(new LambdaQueryWrapper<ZyHangPoint>().orderByDesc(ZyHangPoint::getPoint));
@ -63,11 +57,4 @@ public class ZyHangPointServiceImpl extends ServiceImpl<ZyHangPointMapper, ZyHan
});
this.saveOrUpdateBatch(pointList);
}
@Override
public void syncHangRecord(ZyHangPoint zyHangPoint) {
ZyHang zyHang = iZyHangService.getOne(new LambdaQueryWrapper<ZyHang>().eq(ZyHang::getCode, zyHangPoint.getCode()));
Optional.ofNullable(zyHang).orElseThrow(() -> new JeecgBootException(zyHangPoint.getCode() + "不存在"));
//TODO
}
}

@ -2,6 +2,7 @@ package org.jeecg.modules.product.productModule.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
@ -43,31 +44,38 @@ public class ProductModule implements Serializable {
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建日期")
private Date createTime;
// /**更新人*/
// @ApiModelProperty(value = "更新人")
// private String updateBy;
// /**更新日期*/
// @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
// @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
// @ApiModelProperty(value = "更新日期")
// private Date updateTime;
// /**所属部门*/
// @ApiModelProperty(value = "所属部门")
// private String sysOrgCode;
/**产品id*/
/**
* 产品id 应该是产品编号
* 关联产品表 zy_product ZyProductList.vue ZyProduct.java
*/
@Excel(name = "产品id", width = 15)
@ApiModelProperty(value = "产品id")
private String productId;
/**款式模块id*/
@TableField(exist = false)
private String productName;
/**
* 款式模块id 应该是模块编号
* 关联款式模块表 zy_style_module
* 款式表联动筛选款式模块表数据
*/
@Excel(name = "款式模块id", width = 15)
@ApiModelProperty(value = "款式模块id")
private String styleModuleId;
/**模块id*/
/**
* 模块id 应该是模块名称
* 关联制衣模块表 zy_cloths_modular
* 从款式模块表同步读取
*/
@Excel(name = "模块名称", width = 15)
@Dict(dictTable = "zy_cloths_modular ", dicText = "modular_name", dicCode = "id")
@ApiModelProperty(value = "模块名称")
private String moduleId;
/**部位*/
/**
* 暂时弃用
* 部位
*/
@Excel(name = "部位", width = 15)
@ApiModelProperty(value = "部位")
private String place;

Loading…
Cancel
Save