Merge branch 'master' of http://10.153.19.25:10105/r/ERP_override
| | |
| | | </thead> |
| | | <tr> |
| | | <td style="font-size: 15px;text-align: left" colspan="4">产品名称:<span>{{item.DeliveryDetail.orderDetail.productName}}</span></td> |
| | | <td v-if="company.showDeliveryCreator" style="font-size: 15px;text-align: left" colspan="2">对方单号:</td> |
| | | <td v-if="company.showDeliveryCreator" style="font-size: 15px;text-align: left" colspan="2">订货日期:<span>{{item.DeliveryDetail.order.contractId}}</span></td> |
| | | <td style="font-size: 15px;text-align: left" colspan="3">订单编号:<span>{{item.DeliveryDetail.orderDetail.orderId}}</span></td> |
| | | </tr> |
| | | |
| | |
| | | </thead> |
| | | <tr> |
| | | <td style="font-size: 15px;text-align: left" colspan="4">产品名称:<span>{{item.DeliveryDetail.orderDetail.productName}}</span></td> |
| | | <td style="font-size: 15px;text-align: left" colspan="2">对方单号:</td> |
| | | <td style="font-size: 15px;text-align: left" colspan="2">订货日期:<span>{{item.DeliveryDetail.order.contractId}}</span></td> |
| | | <td style="font-size: 15px;text-align: left" colspan="3">订单编号:<span>{{item.DeliveryDetail.orderDetail.orderId}}</span></td> |
| | | </tr> |
| | | |
| | |
| | | productIdData.value=deepClone(res.data.data) |
| | | produceList.value = deepClone(res.data.data) |
| | | |
| | | |
| | | delivery.value=deepClone(res.data.delivery) |
| | | console.log(delivery.value) |
| | | money.value=deepClone(res.data.money) |
| | | produceList.value.forEach(item => { |
| | | sumMoney+=item.DeliveryDetail.grossAmount |
| | |
| | | <span v-if="company.productName!=='product_abbreviation'">{{item.productName}}</span> |
| | | <span v-else >{{item.remarks}}</span> |
| | | </td> |
| | | <td v-if="company.showDeliveryCreator" style="font-size: 15px;font-weight: bold;text-align: left" colspan="2">对方单号:</td> |
| | | <td v-if="company.showDeliveryCreator" style="font-size: 15px;font-weight: bold;text-align: left" colspan="2">订货日期:<span>{{delivery.contractId}}</span></td> |
| | | <td v-else style="font-size: 15px;font-weight: bold;text-align: left" colspan="2"></td> |
| | | <td style="font-size: 15px;font-weight: bold;text-align: left" colspan="3">订单编号:<span>{{item.DeliveryDetail.orderId}}</span></td> |
| | | </tr> |
| | |
| | | oneClickReturn:'一键退回', |
| | | |
| | | quantityMount:'数量金额', |
| | | allAmount:'面积金额(总金额)', |
| | | |
| | | msg:{ |
| | | productCheck:'الرجاء اختيار منتج', |
| | |
| | | oneClickReturn:'一键退回', |
| | | |
| | | quantityMount:'Quantity and Amount', |
| | | allAmount:'面积金额(总金额)', |
| | | |
| | | msg:{ |
| | | productCheck:'Please select a product', |
| | |
| | | oneClickReturn:'一键退回', |
| | | |
| | | quantityMount:'数量金额', |
| | | allAmount:'面积金额(总金额)', |
| | | |
| | | msg:{ |
| | | productCheck:'Пожалуйста, выберите продукт', |
| | |
| | | oneClickReturn:'一键退回', |
| | | |
| | | quantityMount:'数量金额', |
| | | allAmount:'面积金额(总金额)', |
| | | |
| | | msg:{ |
| | | productCheck:'请选择产品', |
| | |
| | | component: () => import('../views/RegisterView.vue') |
| | | }, |
| | | { |
| | | path: '/appDownLoad', |
| | | name: 'appDownLoad', |
| | | path: '/app', |
| | | name: 'app', |
| | | component: () => import('../views/system/app/appDownload.vue') |
| | | } |
| | | |
| | |
| | | path: '/main/processCard/AddProcessCard', |
| | | query: {orderId: orderId, |
| | | productionId: productionId, |
| | | quantity: orderQuantity, |
| | | random:Math.random() |
| | | } |
| | | }) |
| | |
| | | |
| | | let quantit = ref('') |
| | | let weight = ref('') |
| | | const handleCheckboxChange = ({row}) => { |
| | | const $grid = xGrid.value |
| | | //获取右边表格checkbox选中的数据 |
| | | const checkedList = $grid.getCheckboxRecords() |
| | | const handleCheckboxChange = ({ row }) => { |
| | | const $grid = xGrid.value; |
| | | // 获取右边表格 checkbox 选中的数据 |
| | | const checkedList = $grid.getCheckboxRecords(); |
| | | let quantitySum = 0; |
| | | let weightsum = 0; |
| | | |
| | | checkedList.forEach(item => { |
| | | quantitySum += item.baiscQuantity; |
| | | quantitySum += Number(item.baiscQuantity) || 0; // 确保转换为数字 |
| | | weightsum += weightSum(item); |
| | | }); |
| | | quantit.value = quantitySum; |
| | | |
| | | quantit.value = Number(quantitySum) || 0; // 确保最终值是数字 |
| | | weight.value = parseFloat(weightsum.toFixed(2)); |
| | | } |
| | | }; |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | |
| | | <div height="100%" style="margin: 5px" width="11%"> |
| | | <el-main style=""> |
| | | <div> |
| | | <span><el-input v-model="quantit" style="width: 80px;"/></span> |
| | | <span><el-input v-model="weight" style="width: 80px;"/></span> |
| | | <span><el-input :readonly="true" v-model="quantit" style="width: 80px;"/></span> |
| | | <span><el-input :readonly="true" v-model="weight" style="width: 80px;"/></span> |
| | | </div> |
| | | <span>{{ $t('processCard.selectedQuantity') }}:<el-input id="checkedNum" v-model="checkedNum" clearable |
| | | type="number"></el-input></span><br> |
| | |
| | | v-bind="gridOptions" |
| | | v-on="gridEventsRight" |
| | | @checkbox-change="handleCheckboxChange" |
| | | @checkbox-all="handleCheckboxChange" |
| | | > |
| | | <!-- @toolbar-button-click="toolbarButtonClickEvent"--> |
| | | <!-- 下拉显示所有信息插槽--> |
| | |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'glass_thickness', |
| | | title: t('order.totalThickness'), |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'glass_type', |
| | | title: t('ingredients.films'), |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'glass_total', |
| | | title: t('order.quantity'), |
| | | filters: [{data: ''}], |
| | |
| | | {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50}, |
| | | {field: 'orderId', title: t('order.orderId'), filters: [{data: ''}], slots: {filter: 'num1_filter'}, width: 110}, |
| | | {field: 'order.customerName', title: t('processCard.customerName'), filters: [{data: ''}], slots: {filter: 'num1_filter'}, width: 110}, |
| | | {field: 'order.batch', title: t('order.batch'), filters: [{data: ''}], slots: {filter: 'num1_filter'}, width: 110}, |
| | | |
| | | { |
| | | field: 'processId', |
| | | width: 140, |
| | |
| | | {field: 'deliveryDetail.money',width:120, title: t('order.grossAmount'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'order.batch',width:120, title: t('order.batch'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'shape',width:120, title: t('order.shape'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'finishedGoodsInventory.actualSignalArea',width:120, title: t('productStock.singlePieceArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'area',width:120, title: t('productStock.singlePieceArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'grossArea',width:120, title: t('productStock.totalArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'computeArea',width:120, title: t('order.computeArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'computeGrossArea',width:120, title: t('order.computeGrossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | |
| | | printConfig: {}, |
| | | importConfig: {}, |
| | | exportConfig: {}, |
| | | scrollY:{ enabled: true,gt:0 },//开启虚拟滚动 |
| | | scrollX:{ enabled: true,gt:0 },//开启虚拟滚动 |
| | | virtualXConfig:{ enabled: true,gt:0 },//开启虚拟滚动 |
| | | virtualYConfig:{ enabled: true,gt:0 },//开启虚拟滚动 |
| | | showOverflow:true, |
| | | menuConfig: { |
| | | body: { |
| | |
| | | |
| | | if(titleUploadData.value.calculateType===3){ |
| | | item.grossAmount=multiply(item.price,item.quantity) |
| | | }else if(titleUploadData.value.calculateType===4){ |
| | | item.grossAmount=parseFloat(divideAuto(item.width * item.height* item.quantity*item.price,1000000,company.decValue)) |
| | | }else{ |
| | | item.grossAmount=multiply(item.price,item.computeGrossArea) |
| | | } |
| | |
| | | // 获取保留面积, |
| | | const decValue = company.decValue |
| | | switch (titleUploadData.value.calculateType){ |
| | | case 2:{ |
| | | case 2 :{ |
| | | areaSum = parseFloat(divideAuto(row.width * row.height* row.quantity,1000000,company.decValue)) |
| | | break |
| | | } |
| | | case 4:{ |
| | | areaSum = parseFloat(divideAuto(row.width * row.height* row.quantity,1000000,company.decValue)) |
| | | break |
| | | } |
| | |
| | | } |
| | | if(titleUploadData.value.calculateType===3){ |
| | | item.grossAmount=multiply(item.price , item.quantity) |
| | | }else if(titleUploadData.value.calculateType===4){ |
| | | item.grossAmount=parseFloat(divideAuto(item.width * item.height* item.quantity*item.price,1000000,company.decValue)) |
| | | }else{ |
| | | item.grossAmount=multiply(item.price * 1 , item.computeGrossArea) |
| | | } |
| | |
| | | } |
| | | if(titleUploadData.value.calculateType===3){ |
| | | row.grossAmount=multiply(row.price ,row.quantity) |
| | | }else if(titleUploadData.value.calculateType===4){ |
| | | row.grossAmount=parseFloat(divideAuto(row.width * row.height* row.quantity*row.price,1000000,company.decValue)) |
| | | }else{ |
| | | row.grossAmount=multiply(row.price , row.computeGrossArea) |
| | | } |
| | |
| | | if( !isNaN(item.computeArea*1) && item.computeArea != null ){ |
| | | if(titleUploadData.value.calculateType===3){ |
| | | item.grossAmount=parseFloat(multiply(item.price , item.quantity)) |
| | | }else if(titleUploadData.value.calculateType===4){ |
| | | if(titleUploadData.value?.orderReview!==2){ |
| | | item.grossArea = countArea(item) |
| | | item.computeGrossArea = item.grossArea |
| | | item.grossAmount=parseFloat(divideAuto(item.width * item.height* item.quantity*item.price,1000000,company.decValue)) |
| | | }else{ |
| | | item.grossAmount=parseFloat(divideAuto(item.width * item.height* item.quantity*item.price,1000000,company.decValue)) |
| | | } |
| | | |
| | | }else{ |
| | | item.grossArea = countArea(item) |
| | | item.computeGrossArea = item.grossArea |
| | | item.grossAmount=parseFloat(multiply(item.price , item.computeGrossArea)) |
| | | if(titleUploadData.value?.orderReview!==2){ |
| | | item.grossArea = countArea(item) |
| | | item.computeGrossArea = item.grossArea |
| | | item.grossAmount=parseFloat(multiply(item.price , item.computeGrossArea)) |
| | | }else{ |
| | | item.grossAmount=parseFloat(multiply(item.price , item.computeGrossArea)) |
| | | } |
| | | |
| | | } |
| | | } |
| | | }) |
| | |
| | | <el-option :value="1" :label="t('order.areaAmountPerPiece')"/> |
| | | <el-option :value="2" :label="t('order.areaAmountAge')"/> |
| | | <el-option :value="3" :label="t('order.quantityMount')"/> |
| | | <el-option :value="4" :label="t('order.allAmount')"/> |
| | | </el-select> |
| | | </el-col> |
| | | <el-col :span="2"><el-text>*{{$t('order.salesman')}}:</el-text></el-col> |
| | |
| | | </el-row> |
| | | |
| | | <el-row> |
| | | <el-col :span="4">{{$t('craft.xMargin')}}:</el-col> |
| | | <el-col :span="4">{{$t('order.width')}}:</el-col> |
| | | <el-col :span="6"> |
| | | <el-input-number v-model="trademarkAttr.xMargin"/> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <el-row> |
| | | <el-col :span="4">{{$t('craft.yMargin')}}:</el-col> |
| | | <el-col :span="4">{{$t('order.height')}}:</el-col> |
| | | <el-col :span="6"> |
| | | <el-input-number v-model="trademarkAttr.yMargin"/> |
| | | </el-col> |
| | |
| | | </el-row> |
| | | |
| | | </div> |
| | | <div style="position: absolute;left: 405px;top: 115px;color: red">{{$t('order.width')}}</div> |
| | | <div style="position: absolute;left: 200px;top: 250px;color: red">{{$t('order.height')}}</div> |
| | | <div style="position: absolute;left: 405px;top: 115px;color: red">{{$t('order.height')}}</div> |
| | | <div style="position: absolute;left: 200px;top: 250px;color: red">{{$t('order.width')}}</div> |
| | | |
| | | |
| | | </div> |
| New file |
| | |
| | | package com.example.erp.config; |
| | | |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.context.annotation.Configuration; |
| | | import org.springframework.web.client.RestTemplate; |
| | | |
| | | @Configuration |
| | | public class AppConfig { |
| | | @Bean |
| | | public RestTemplate restTemplate() { |
| | | return new RestTemplate(); |
| | | } |
| | | } |
| | |
| | | return Result.seccess(reportingWorkService.SaveReportingWorkSv(reportingWork)); |
| | | } |
| | | |
| | | @ApiOperation("报工转移") |
| | | @PostMapping ("/reportingWorkTransfer") |
| | | public Result reportingWorkTransfer(@RequestBody Map<String,String> reportingWork) { |
| | | return Result.seccess(reportingWorkService.reportingWorkTransferSv(reportingWork)); |
| | | } |
| | | |
| | | } |
| | |
| | | @ApiOperation("手机扫码玻璃信息") |
| | | @PostMapping("/scannerGlassInfo/{projectNo}") |
| | | public Result scannerGlassInfo(@PathVariable String projectNo) { |
| | | System.out.println("123123"); |
| | | return Result.seccess(orderService.scannerGlassInfo(projectNo)); |
| | | } |
| | | |
| | | @PostMapping("/test") |
| | | public Result scannerGlassInfo() { |
| | | System.out.println("123123"); |
| | | return Result.seccess(null); |
| | | } |
| | | |
| | | |
| | | } |
| New file |
| | |
| | | package com.example.erp.dto.pp; |
| | | |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * 订单序号报工转换变更传输类 |
| | | */ |
| | | |
| | | @Data |
| | | public class OrderNumberTransferDTO { |
| | | /** |
| | | * 旧流程卡号 |
| | | */ |
| | | private String oldProcessId; |
| | | |
| | | /** |
| | | * 旧序号 |
| | | */ |
| | | private String oldOrderNumber; |
| | | |
| | | /** |
| | | * 旧层号 |
| | | */ |
| | | private Integer oldTechnologyNumber; |
| | | |
| | | /** |
| | | * 信流程卡号 |
| | | */ |
| | | private String newProcessId; |
| | | |
| | | /** |
| | | * 新序号 |
| | | */ |
| | | private String newOrderNumber; |
| | | |
| | | /** |
| | | * 新层号 |
| | | */ |
| | | private Integer newTechnologyNumber; |
| | | |
| | | /** |
| | | * 变更数量 |
| | | */ |
| | | private Integer changeNumber; |
| | | } |
| | |
| | | private Integer sort; |
| | | //架号 |
| | | private String rack; |
| | | //订单转移导入数量 |
| | | private Integer importNumber; |
| | | //订单转移导出数量 |
| | | private Integer exportNumber; |
| | | //建立时间 |
| | | private LocalDate createTime; |
| | | //修改时间 |
| New file |
| | |
| | | package com.example.erp.entity.pp; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import lombok.Data; |
| | | |
| | | import java.time.LocalDate; |
| | | |
| | | @Data |
| | | public class ReportingWorkTransfer { |
| | | @TableId(type = IdType.AUTO) |
| | | private Long id; |
| | | //被转移订单号 |
| | | private String oldOrder; |
| | | //被转移序号 |
| | | private Integer oldOrderNumber; |
| | | //被转移内容(sd报工流程表) |
| | | private String oldReportContent; |
| | | |
| | | //新订单 |
| | | private String newOrder; |
| | | //新订单序号 |
| | | private Integer newOrderNumber; |
| | | //新转移内容 |
| | | private String newReportContent; |
| | | //建立时间 |
| | | private LocalDate createTime; |
| | | } |
| | |
| | | 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.example.erp.entity.mm.FinishedGoodsInventory; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Data; |
| | |
| | | import java.util.List; |
| | | |
| | | @Data |
| | | @TableName("sd.`order_detail`") |
| | | public class OrderDetail { |
| | | @TableId(type = IdType.AUTO) |
| | | private Long id; |
| | |
| | | @TableField(exist= false,select = false) |
| | | private Integer landingSequence; |
| | | @TableField(exist= false,select = false) |
| | | private Integer thickness; |
| | | private Double thickness; |
| | | |
| | | } |
| New file |
| | |
| | | package com.example.erp.mapper.pp; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.example.erp.entity.pp.ReportingWorkTransfer; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | |
| | | @Mapper |
| | | public interface ReportingWorkTransferMapper extends BaseMapper<ReportingWorkTransfer> { |
| | | } |
| | |
| | | newOrderDetail.setLandingSequence(flowCardNo); |
| | | orderDetailList.add(newOrderDetail); |
| | | orderDetail.setQuantity(orderDetail.getQuantity() - shelfQuantity); |
| | | orderDetail.setBaiscQuantity(String.valueOf(Integer.valueOf(orderDetail.getBaiscQuantity())-shelfQuantity)); |
| | | flowCardNo += 1; |
| | | shelfQuantity = shelfQuantity - shelfQuantity; |
| | | } else { |
| | |
| | | newOrderDetail.setOrderNumber(orderDetail.getOrderNumber()); |
| | | newOrderDetail.setShape(orderDetail.getShape()); |
| | | newOrderDetail.setLandingSequence(flowCardNo); |
| | | newOrderDetail.setBaiscQuantity(String.valueOf(orderDetail.getBaiscQuantity())); |
| | | orderDetailList.add(newOrderDetail); |
| | | //当前架子剩余数量 |
| | | shelfQuantity = shelfQuantity - Math.toIntExact(orderDetail.getQuantity()); |
| | |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | | import com.example.erp.common.Constants; |
| | | import com.example.erp.entity.pp.DamageDetails; |
| | | import com.example.erp.entity.pp.FlowCard; |
| | | import com.example.erp.entity.pp.ReportingWork; |
| | | import com.example.erp.entity.pp.ReportingWorkDetail; |
| | | import com.example.erp.dto.pp.OrderNumberTransferDTO; |
| | | import com.example.erp.entity.pp.*; |
| | | import com.example.erp.entity.sd.Order; |
| | | import com.example.erp.entity.sd.OrderDetail; |
| | | import com.example.erp.entity.sd.OrderProcessDetail; |
| | | import com.example.erp.entity.userInfo.Log; |
| | | import com.example.erp.entity.userInfo.SysError; |
| | | import com.example.erp.exception.ServiceException; |
| | | import com.example.erp.mapper.mm.FinishedOperateLogMapper; |
| | | import com.example.erp.mapper.pp.*; |
| | | import com.baomidou.dynamic.datasource.annotation.DS; |
| | | import com.example.erp.mapper.sd.OrderDetailMapper; |
| | | import com.example.erp.mapper.sd.OrderGlassDetailMapper; |
| | | import com.example.erp.mapper.sd.OrderMapper; |
| | | import com.example.erp.mapper.sd.OrderProcessDetailMapper; |
| | |
| | | import com.example.erp.service.userInfo.LogService; |
| | | import com.example.erp.service.userInfo.SysErrorService; |
| | | import com.github.yulichang.wrapper.MPJLambdaWrapper; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.http.HttpEntity; |
| | | import org.springframework.http.HttpMethod; |
| | | import org.springframework.http.HttpStatus; |
| | | import org.springframework.http.ResponseEntity; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.transaction.interceptor.TransactionAspectSupport; |
| | | import org.springframework.web.client.RestTemplate; |
| | | |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDate; |
| | |
| | | |
| | | @Service |
| | | @DS("pp") |
| | | @RequiredArgsConstructor |
| | | public class ReportingWorkService { |
| | | final |
| | | ReportingWorkMapper reportingWorkMapper; |
| | | final |
| | | BasicDateProduceMapper basicDateProduceMapper; |
| | | final |
| | | DamageDetailsMapper damageDetailsMapper; |
| | | final |
| | | OrderProcessDetailMapper orderProcessDetailMapper; |
| | | final |
| | | ReportingWorkDetailMapper |
| | | reportingWorkDetailMapper; |
| | | final OrderMapper |
| | | orderMapper; |
| | | private final ReportingWorkTransferMapper reportingWorkTransferMapper; |
| | | private final ReportingWorkMapper reportingWorkMapper; |
| | | private final BasicDateProduceMapper basicDateProduceMapper; |
| | | private final DamageDetailsMapper damageDetailsMapper; |
| | | private final OrderProcessDetailMapper orderProcessDetailMapper; |
| | | private final ReportingWorkDetailMapper reportingWorkDetailMapper; |
| | | private final OrderMapper orderMapper; |
| | | private final OrderDetailMapper orderDetailMapper; |
| | | |
| | | final |
| | | FlowCardMapper flowCardMapper; |
| | | private final FlowCardMapper flowCardMapper; |
| | | |
| | | final |
| | | OrderProcessDetailService orderProcessDetailService; |
| | | private final OrderProcessDetailService orderProcessDetailService; |
| | | |
| | | final |
| | | LogService logService; |
| | | private final LogService logService; |
| | | |
| | | final LogMapper logMapper; |
| | | private final LogMapper logMapper; |
| | | private final OrderGlassDetailMapper orderGlassDetailMapper; |
| | | private final SysErrorService sysErrorService; |
| | | private final FinishedOperateLogMapper finishedOperateLogMapper; |
| | | private final RestTemplate restTemplate; |
| | | |
| | | |
| | | public ReportingWorkService(ReportingWorkMapper reportingWorkMapper, BasicDateProduceMapper basicDateProduceMapper, DamageDetailsMapper damageDetailsMapper, ReportingWorkDetailMapper reportingWorkDetailMapper, OrderProcessDetailMapper orderProcessDetailMapper, OrderProcessDetailService orderProcessDetailService, OrderMapper orderMapper, FlowCardMapper flowCardMapper, LogService logService, LogMapper logMapper, OrderGlassDetailMapper orderGlassDetailMapper, SysErrorService sysErrorService) { |
| | | /*public ReportingWorkService(ReportingWorkMapper reportingWorkMapper, BasicDateProduceMapper basicDateProduceMapper, DamageDetailsMapper damageDetailsMapper, ReportingWorkDetailMapper reportingWorkDetailMapper, OrderProcessDetailMapper orderProcessDetailMapper, OrderProcessDetailService orderProcessDetailService, OrderMapper orderMapper, FlowCardMapper flowCardMapper, LogService logService, LogMapper logMapper, OrderGlassDetailMapper orderGlassDetailMapper, SysErrorService sysErrorService, OrderDetailMapper orderDetailMapper, FinishedOperateLogMapper finishedOperateLogMapper, ReportingWorkTransferMapper reportingWorkTransferMapper) { |
| | | this.reportingWorkMapper = reportingWorkMapper; |
| | | this.basicDateProduceMapper = basicDateProduceMapper; |
| | | this.damageDetailsMapper = damageDetailsMapper; |
| | |
| | | this.logMapper = logMapper; |
| | | this.orderGlassDetailMapper = orderGlassDetailMapper; |
| | | this.sysErrorService = sysErrorService; |
| | | } |
| | | this.orderDetailMapper = orderDetailMapper; |
| | | this.finishedOperateLogMapper = finishedOperateLogMapper; |
| | | this.reportingWorkTransferMapper = reportingWorkTransferMapper; |
| | | }*/ |
| | | |
| | | public Map<String, Object> AddSelectLastWorkSv(String processIdStr, String technologyStr, String process, String reportType) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | |
| | | |
| | | } |
| | | } |
| | | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Object reportingWorkTransferSv(Map<String, String> reportingWork) { |
| | | Order oldOrder = orderMapper.selectOrderId(reportingWork.get("oldOrderId")); |
| | | OrderDetail oldOrderDetail = orderDetailMapper.selectOne( |
| | | new QueryWrapper<OrderDetail>() |
| | | .eq("order_id", reportingWork.get("oldOrderId")) |
| | | .eq("order_number", reportingWork.get("oldOrderNumber")) |
| | | ); |
| | | |
| | | Order newOrder = orderMapper.selectOrderId(reportingWork.get("newOrderId")); |
| | | OrderDetail newOrderDetail = orderDetailMapper.selectOne( |
| | | new QueryWrapper<OrderDetail>() |
| | | .eq("order_id", reportingWork.get("newOrderId")) |
| | | .eq("order_number", reportingWork.get("newOrderNumber")) |
| | | ); |
| | | if(!Objects.equals(oldOrder.getCustomerId(), newOrder.getCustomerId())){ |
| | | return "新旧订单客户不一致"; |
| | | } |
| | | if(!Objects.equals(oldOrderDetail.getProductId(), newOrderDetail.getProductId())){ |
| | | return "新旧订单产品不一致"; |
| | | } |
| | | if (!Objects.equals(oldOrderDetail.getWidth(), newOrderDetail.getWidth()) |
| | | || !Objects.equals(oldOrderDetail.getHeight(), newOrderDetail.getHeight())){ |
| | | return "新旧订单尺寸不一致"; |
| | | } |
| | | |
| | | |
| | | //获取旧订单是否流程卡是否存在 |
| | | List<OrderProcessDetail> oldOrderProcessDetailList = orderProcessDetailMapper |
| | | .selectList(new QueryWrapper<OrderProcessDetail>() |
| | | .eq("order_id", reportingWork.get("oldOrderId")) |
| | | .eq("order_number", reportingWork.get("oldOrderNumber")) |
| | | ); |
| | | if(oldOrderProcessDetailList.isEmpty()){ |
| | | return "旧订单未分流程卡"; |
| | | } |
| | | //获取新订单是否流程卡是否存在 |
| | | List<OrderProcessDetail> newOrderProcessDetailList = orderProcessDetailMapper |
| | | .selectList(new QueryWrapper<OrderProcessDetail>() |
| | | .eq("order_id", reportingWork.get("newOrderId")) |
| | | .eq("order_number", reportingWork.get("newOrderNumber")) |
| | | ); |
| | | if(newOrderProcessDetailList.isEmpty()){ |
| | | return "新订单未分流程卡"; |
| | | } |
| | | //新订单是否存在已经排版序号 |
| | | List<FlowCard> newFlowCardLayoutStatus = flowCardMapper.selectList(new QueryWrapper<FlowCard>() |
| | | .eq("order_id", reportingWork.get("newOrderId")) |
| | | .eq("order_number", reportingWork.get("newOrderNumber")) |
| | | .gt("layout_status",0) |
| | | ); |
| | | if(!newFlowCardLayoutStatus.isEmpty()){ |
| | | return "新订单此序号存在排版"; |
| | | } |
| | | //获取旧订单报工数据汇总 |
| | | List<OrderProcessDetail> oldOrderProcessDetailForReport = orderProcessDetailMapper |
| | | .selectList(new QueryWrapper<OrderProcessDetail>() |
| | | .eq( "order_id", reportingWork.get("oldOrderId")) |
| | | .eq("order_number", reportingWork.get("oldOrderNumber")) |
| | | .gt("reporting_work_num",0) |
| | | ); |
| | | |
| | | Map<String,Object> log = new HashMap<>(); |
| | | log.put("oldOrderBeforeChange",oldOrderProcessDetailForReport); |
| | | |
| | | Map<String,Object> newOrderLog = new HashMap<>(); |
| | | newOrderLog.put("newOrderBeforeChange",newOrderProcessDetailList); |
| | | |
| | | //传给mes流程卡数量集合 |
| | | List<OrderNumberTransferDTO> orderNumberTransferList = new ArrayList<>(); |
| | | |
| | | oldOrderProcessDetailForReport.forEach(oldOrderProcessDetail -> { |
| | | int maxNum = 0; |
| | | for(OrderProcessDetail newOrderProcessDetail : newOrderProcessDetailList){ |
| | | if(oldOrderProcessDetail.getReportingWorkNum() == 0){ |
| | | break; |
| | | } |
| | | //判断小片是否一致,工序是否一致 |
| | | if(newOrderProcessDetail.getProcess().equals(oldOrderProcessDetail.getProcess()) && |
| | | Objects.equals(newOrderProcessDetail.getTechnologyNumber(), oldOrderProcessDetail.getTechnologyNumber())){ |
| | | //判断是否为第一道工序,给可转移最大值赋值 |
| | | if(oldOrderProcessDetail.getProcess().equals("切割")){ |
| | | FlowCard thisFlowCard = flowCardMapper.selectOne(new QueryWrapper<FlowCard>() |
| | | .eq("process_id", newOrderProcessDetail.getProcessId()) |
| | | .eq("order_number", newOrderProcessDetail.getOrderNumber()) |
| | | .eq("technology_number",newOrderProcessDetail.getTechnologyNumber()) |
| | | ); |
| | | maxNum = thisFlowCard.getQuantity(); |
| | | }else{ |
| | | //当不是第一道工序则,拿上一道工序作为最大值 |
| | | maxNum = orderProcessDetailMapper.selectById(newOrderProcessDetail.getId()-1).getReportingWorkNum(); |
| | | } |
| | | //判断被转移的数量是否大于可转移的数量最大值 |
| | | int transferNum = 0; |
| | | if(oldOrderProcessDetail.getReportingWorkNum() > maxNum){ |
| | | transferNum = maxNum; |
| | | oldOrderProcessDetail.setReportingWorkNum(oldOrderProcessDetail.getReportingWorkNum()-maxNum); |
| | | oldOrderProcessDetail.setReportingWorkNumCount(oldOrderProcessDetail.getReportingWorkNumCount()-maxNum); |
| | | }else{ |
| | | transferNum = oldOrderProcessDetail.getReportingWorkNum(); |
| | | oldOrderProcessDetail.setReportingWorkNum(0); |
| | | oldOrderProcessDetail.setReportingWorkNumCount(0); |
| | | } |
| | | //更新旧订单小片流程表的报工数量 |
| | | orderProcessDetailMapper.update(null,new UpdateWrapper<OrderProcessDetail>() |
| | | .set("reporting_work_num",oldOrderProcessDetail.getReportingWorkNum()) |
| | | .set("reporting_work_num_count",oldOrderProcessDetail.getReportingWorkNumCount()) |
| | | .eq("id",oldOrderProcessDetail.getId()) |
| | | ); |
| | | //更新新订单小片流程表的报工数量 |
| | | orderProcessDetailMapper.update(null,new UpdateWrapper<OrderProcessDetail>() |
| | | .set("reporting_work_num",transferNum) |
| | | .set("reporting_work_num_count",transferNum) |
| | | .eq("id",newOrderProcessDetail.getId()) |
| | | ); |
| | | if(oldOrderProcessDetail.getProcess().equals("切割")){ |
| | | //更新旧订单流程卡转出数量 |
| | | flowCardMapper.update(null,new UpdateWrapper<FlowCard>() |
| | | .setSql("export_number = export_number + "+transferNum) |
| | | .eq("process_id", oldOrderProcessDetail.getProcessId()) |
| | | .eq("order_number", oldOrderProcessDetail.getOrderNumber()) |
| | | .eq("technology_number",oldOrderProcessDetail.getTechnologyNumber()) |
| | | ); |
| | | //更新新订单流程卡转出数量 |
| | | flowCardMapper.update(null,new UpdateWrapper<FlowCard>() |
| | | .setSql("import_number = import_number + "+transferNum) |
| | | .eq("process_id", newOrderProcessDetail.getProcessId()) |
| | | .eq("order_number", newOrderProcessDetail.getOrderNumber()) |
| | | .eq("technology_number",newOrderProcessDetail.getTechnologyNumber()) |
| | | ); |
| | | |
| | | //传给mes数据赋值 |
| | | OrderNumberTransferDTO orderNumberTransfer = new OrderNumberTransferDTO(); |
| | | orderNumberTransfer.setChangeNumber(transferNum); |
| | | orderNumberTransfer.setOldProcessId(oldOrderProcessDetail.getProcessId()); |
| | | orderNumberTransfer.setNewProcessId(newOrderProcessDetail.getProcessId()); |
| | | orderNumberTransfer.setOldOrderNumber(oldOrderProcessDetail.getOrderNumber()); |
| | | orderNumberTransfer.setNewOrderNumber(newOrderProcessDetail.getOrderNumber()); |
| | | orderNumberTransfer.setOldTechnologyNumber(oldOrderProcessDetail.getTechnologyNumber()); |
| | | orderNumberTransfer.setNewTechnologyNumber(newOrderProcessDetail.getTechnologyNumber()); |
| | | orderNumberTransferList.add(orderNumberTransfer); |
| | | |
| | | } |
| | | |
| | | } |
| | | } |
| | | }); |
| | | |
| | | |
| | | //把旧订单数据和新订单数据传到日志表当中 |
| | | log.put("oldOrderChange",JSON.toJSONString(oldOrderProcessDetailForReport)); |
| | | |
| | | newOrderLog.put("newOrderChange",orderProcessDetailMapper |
| | | .selectList(new QueryWrapper<OrderProcessDetail>() |
| | | .eq("order_id", reportingWork.get("newOrderId")) |
| | | .eq("order_number", reportingWork.get("newOrderNumber")) |
| | | )); |
| | | //旧订单信息传入日志 |
| | | ReportingWorkTransfer reportingWorkTransfer = new ReportingWorkTransfer(); |
| | | reportingWorkTransfer.setOldOrder(reportingWork.get("oldOrderId")); |
| | | reportingWorkTransfer.setOldOrderNumber(Integer.valueOf(reportingWork.get("oldOrderNumber"))); |
| | | reportingWorkTransfer.setOldReportContent(JSON.toJSONString(log)); |
| | | |
| | | //新订单信息传入日志 |
| | | reportingWorkTransfer.setNewOrder(reportingWork.get("newOrderId")); |
| | | reportingWorkTransfer.setNewOrderNumber(Integer.valueOf(reportingWork.get("newOrderNumber"))); |
| | | reportingWorkTransfer.setNewReportContent(JSON.toJSONString(newOrderLog)); |
| | | reportingWorkTransferMapper.insert(reportingWorkTransfer); |
| | | //restTemplate.postForObject("http://localhost:8086/order/test",orderNumberTransferList,String.class); |
| | | |
| | | //向mes发送http请求 |
| | | ResponseEntity<String> response =restTemplate.exchange( |
| | | "http://localhost:88/api/loadGlass/order/order/orderChange", |
| | | HttpMethod.POST, |
| | | new HttpEntity<>(orderNumberTransferList), |
| | | String.class); |
| | | |
| | | if(response.getStatusCode() == HttpStatus.OK){ |
| | | return true; |
| | | }else{ |
| | | return "mes响应超时"; |
| | | } |
| | | } |
| | | } |
| | |
| | | BigDecimal getPrice= BigDecimal.valueOf(orderDetail.getPrice()); |
| | | BigDecimal getQuantity= BigDecimal.valueOf(orderDetail.getQuantity()); |
| | | BigDecimal getComputeGrossArea= BigDecimal.valueOf(orderDetail.getComputeGrossArea()); |
| | | BigDecimal getComputeArea= BigDecimal.valueOf(orderDetail.getComputeArea()); |
| | | BigDecimal getWidth= BigDecimal.valueOf(orderDetail.getWidth()); |
| | | BigDecimal getHeight= BigDecimal.valueOf(orderDetail.getHeight()); |
| | | if (calculateType == 3) { |
| | | orderDetail.setGrossAmount(getPrice.multiply(getQuantity).setScale(2, RoundingMode.HALF_UP).doubleValue()); |
| | | } else { |
| | | }else if (calculateType == 4) { |
| | | if(Objects.equals(orderDetail.getArea(), orderDetail.getComputeArea())&&Objects.equals(orderDetail.getGrossArea(), orderDetail.getComputeGrossArea())){ |
| | | orderDetail.setGrossAmount(getWidth.multiply(getHeight).multiply(getQuantity).multiply(getPrice). |
| | | divide(BigDecimal.valueOf(1000000), 2, RoundingMode.HALF_UP).doubleValue()); |
| | | }else{ |
| | | orderDetail.setGrossAmount(getPrice.multiply(getComputeGrossArea).setScale(2, RoundingMode.HALF_UP).doubleValue()); |
| | | } |
| | | }else if (calculateType == 1){ |
| | | orderDetail.setGrossAmount(getPrice.multiply(getComputeArea).multiply(getQuantity).setScale(2, RoundingMode.HALF_UP).doubleValue()); |
| | | }else{ |
| | | orderDetail.setGrossAmount(getPrice.multiply(getComputeGrossArea).setScale(2, RoundingMode.HALF_UP).doubleValue()); |
| | | } |
| | | return orderDetail; |
| | |
| | | } |
| | | |
| | | public Object scannerGlassInfo(String projectNo) { |
| | | String projectId = "p" + projectNo.substring(0,8); |
| | | Integer heatNo = Integer.valueOf(projectNo.substring(8,11)); |
| | | Integer sortNo = Integer.valueOf(projectNo.substring(11,14)); |
| | | String processId = orderMapper.getProcessIdByOptimizeHeatDetail(projectId,heatNo,sortNo); |
| | | String orderId = flowCardMapper.getOrderIdByProcessId(processId); |
| | | return orderMapper.scannerGlassInfo(projectId,heatNo,sortNo,orderId); |
| | | try{ |
| | | String projectId = "P" + projectNo.substring(0,8); |
| | | //炉号 |
| | | Integer heatNo = Integer.valueOf(projectNo.substring(8,11)); |
| | | //炉内序号 |
| | | Integer sortNo = Integer.valueOf(projectNo.substring(11,14)); |
| | | String processId = orderMapper.getProcessIdByOptimizeHeatDetail(projectId,heatNo,sortNo); |
| | | String orderId = flowCardMapper.getOrderIdByProcessId(processId); |
| | | return orderMapper.scannerGlassInfo(projectId,heatNo,sortNo,orderId); |
| | | }catch (Exception e){ |
| | | return null; |
| | | } |
| | | |
| | | } |
| | | } |
| | |
| | | b.customer_name, |
| | | if(a.layout_status=0,'不可排版',if(a.layout_status=1,'可排版','已排版')) as layout_status, |
| | | a.merge, |
| | | a.rack |
| | | a.rack, |
| | | b.batch |
| | | from (select id,order_id,process_id,order_number, quantity,founder,max(layout_status) as layout_status,create_time,max(merge) as merge,rack from flow_card |
| | | group by process_Id,order_number) as a |
| | | left join sd.`order` as b on a.order_Id=b.order_id |
| | |
| | | </select> |
| | | |
| | | <select id="selectPrintFlowCard"> |
| | | select op.project_no,glass_total,glass_total_area,labelPrintNum,processPrintNum |
| | | select op.project_no,glass_total,glass_total_area,labelPrintNum,processPrintNum,glass_type,glass_thickness |
| | | from pp.optimize_project as op |
| | | left join pp.flow_card as fc on op.project_no=fc.project_no |
| | | left join sd.`order` as o on o.order_id=fc.order_id |
| | |
| | | ogd.child_width, |
| | | ogd.child_height, |
| | | if(od.shape=1,'普形',if(od.shape=2,'异形','')) as shape, |
| | | fc.quantity + ifnull(patch.patch_num,0) -odpd.reporting_work_num -odpd.broken_num as quantity, |
| | | fc.quantity + ifnull(patch.patch_num,0) -odpd.reporting_work_num -odpd.broken_num as completedQuantity, |
| | | fc.quantity -fc.export_number + ifnull(patch.patch_num,0) -odpd.reporting_work_num -odpd.broken_num as quantity, |
| | | fc.quantity -fc.export_number + ifnull(patch.patch_num,0) -odpd.reporting_work_num -odpd.broken_num as completedQuantity, |
| | | odpd.reporting_work_num as completed, |
| | | odpd.broken_num as onceBroken, |
| | | if(fc.quantity -odpd.reporting_work_num = 0 ,true,false) as saveFlag, -- 判断是否已经完成,已经完成不序号和同序号数量相同才能提交 |
| | |
| | | LEFT JOIN sd.order_glass_detail AS ogd |
| | | ON od.order_id = ogd.order_id |
| | | AND od.order_number = ogd.order_number |
| | | <if test="process == '夹胶' or (process == '打胶和粘框')"> |
| | | <if test="process == '夹胶'"> |
| | | AND ogd.`group` = (select `group` |
| | | from sd.order_glass_detail |
| | | where order_id = ogd.order_id |
| | |
| | | rw.notes, |
| | | rw.reviewed |
| | | # (IF(rw.reviewed_state = 0, '未审核', IF(rw.reviewed_state = 1, '审核通过', '审核不通过'))) as reviewed_state |
| | | from sd.order as o |
| | | left join sd.order_glass_detail as ogd on ogd.order_id = o.order_id |
| | | left join reporting_work as rw on rw.order_id = ogd.order_id and rw.production_id = ogd.production_id |
| | | left join reporting_work_detail as rwd |
| | | on rwd.reporting_work_id = rw.reporting_work_id and rwd.order_number = ogd.order_number and |
| | | rwd.technology_number = ogd.technology_number |
| | | from |
| | | reporting_work as rw left join reporting_work_detail as rwd on rw.reporting_work_id=rwd.reporting_work_id |
| | | left join sd.order_glass_detail as ogd on ogd.order_id=rw.order_id and ogd.order_number=rwd.order_number and ogd.technology_number=rwd.technology_number |
| | | left join sd.`order` as o on o.order_id=rw.order_id |
| | | where rw.reviewed_state != 2 |
| | | and rw.reporting_work_time >= #{selectTime1} |
| | | AND rw.reporting_work_time < #{selectTime2} |
| | |
| | | <select id="getPageTotal"> |
| | | select CEILING(count(rw.reporting_work_id)/#{pageSize}) as 'pageTotal', |
| | | count(distinct rw.reporting_work_id) as 'total' |
| | | from sd.order as o |
| | | left join sd.order_glass_detail as ogd on ogd.order_id = o.order_id |
| | | left join reporting_work as rw on rw.order_id = ogd.order_id and rw.production_id = ogd.production_id |
| | | left join reporting_work_detail as rwd |
| | | on rwd.reporting_work_id = rw.reporting_work_id and rwd.order_number = ogd.order_number and |
| | | rwd.technology_number = ogd.technology_number |
| | | from reporting_work as rw left join reporting_work_detail as rwd on rw.reporting_work_id=rwd.reporting_work_id |
| | | left join sd.order_glass_detail as ogd on ogd.order_id=rw.order_id and ogd.order_number=rwd.order_number and ogd.technology_number=rwd.technology_number |
| | | left join sd.`order` as o on o.order_id=rw.order_id |
| | | where rw.reviewed_state != 2 |
| | | and rw.reporting_work_time >= #{selectTime1} |
| | | AND rw.reporting_work_time < #{selectTime2} and position(#{orderId} in rw.order_id) |
| | |
| | | MAX(rw.this_worn_quantity) AS this_worn_quantity, |
| | | MAX(ogd.child_width) AS child_width, |
| | | MAX(ogd.child_height) AS child_height |
| | | FROM sd.order AS o |
| | | LEFT JOIN sd.order_glass_detail AS ogd |
| | | ON ogd.order_id = o.order_id |
| | | LEFT JOIN reporting_work AS rw |
| | | ON rw.order_id = ogd.order_id |
| | | AND rw.production_id = ogd.production_id |
| | | FROM reporting_work as rw left join reporting_work_detail as rwd on rw.reporting_work_id=rwd.reporting_work_id |
| | | left join sd.order_glass_detail as ogd on ogd.order_id=rw.order_id and ogd.order_number=rwd.order_number and ogd.technology_number=rwd.technology_number |
| | | left join sd.`order` as o on o.order_id=rw.order_id |
| | | WHERE rw.reviewed_state != 2 |
| | | and rw.reporting_work_time >= #{selectTime1} |
| | | AND rw.reporting_work_time < #{selectTime2} |
| | |
| | | <result column="product_name" property="orderDetail.productName"/> |
| | | <result column="order_id" property="orderDetail.orderId"/> |
| | | |
| | | <result column="contract_id" property="order.contractId"/> |
| | | |
| | | |
| | | |
| | | |
| | |
| | | od.area, |
| | | od.gross_area, |
| | | od.compute_area, |
| | | od.compute_gross_area, |
| | | dd.area as compute_gross_area, |
| | | od.processing_note, |
| | | od.edging_type, |
| | | od.perimeter, |
| | |
| | | </select> |
| | | |
| | | <select id="getSelectDeliveryPrinting" resultMap="selectDeliveryDetailOrderDetail" > |
| | | select dd.delivery_id,od.order_id,od.product_id,IF(#{type}='product_abbreviation',pt.remarks,od.product_name) as product_name,sum(dd.area) as area,sum(dd.money) as money,sum(dd.quantity) as quantity from |
| | | select dd.delivery_id,od.order_id,od.product_id,IF(#{type}='product_abbreviation',pt.remarks,od.product_name) as product_name,sum(dd.area) as area, |
| | | sum(dd.money) as money,sum(dd.quantity) as quantity,o.contract_id from |
| | | delivery_detail dd left join order_detail od on dd.order_id=od.order_id and dd.order_number=od.order_number |
| | | left join product pt on pt.id=od.product_id |
| | | |
| | | left join sd.`order` o on o.order_id=dd.order_id |
| | | |
| | | |
| | | where dd.delivery_id like concat('%',#{deliveryId},'%') |
| | |
| | | select |
| | | d.order_id,d.quantity,round(d.money,0) as money ,d.area,d.project, |
| | | d.customer_id,d.customer_name,d.creator,d.salesman,d.salesman_id, |
| | | d.processing_note |
| | | d.processing_note,d.contract_id |
| | | from sd.`order` d |
| | | <where> |
| | | <if test="orderDetail.orderId != null and orderDetail.orderId != ''"> |