Merge branch 'master' of http://10.153.19.25:10101/r/ERP_override
| | |
| | | compound = null |
| | | } |
| | | let name=company.companyName |
| | | let sole = company.soleQRCode |
| | | |
| | | let printNumberFc = props.printFc |
| | | data.value.printList = JSON.parse(props.printList) |
| | |
| | | const handleGetQRCode = async () => { |
| | | let technologyNumber='' |
| | | for (let i = 0; i < produceList.value.length; i++) { |
| | | console.log(produceList.value[i].detail[0]) |
| | | // if (produceList.value[i].detail[0].qrcode!="" && produceList.value[i].detail[0].qrcode!=null){ |
| | | // technologyNumber = produceList.value[i].detail[0].qrcode.toString(); // 转æ¢ä¸ºå符串以便å¤çæ¯ä¸ªå符,åå¹¶æ ç¾ |
| | | // }else { |
| | | technologyNumber = produceList.value[i].detail[0].technologyNumber.toString(); // 转æ¢ä¸ºå符串以便å¤çæ¯ä¸ªå符 |
| | | // } |
| | | if (sole==true){ |
| | | if (produceList.value[i].detail[0].qrcode!="" && produceList.value[i].detail[0].qrcode!=null){ |
| | | technologyNumber = produceList.value[i].detail[0].qrcode.toString(); // 转æ¢ä¸ºå符串以便å¤çæ¯ä¸ªå符,åå¹¶æ ç¾ |
| | | }else { |
| | | technologyNumber = produceList.value[i].detail[0].technologyNumber.toString(); // 转æ¢ä¸ºå符串以便å¤çæ¯ä¸ªå符 |
| | | } |
| | | } |
| | | else{ |
| | | technologyNumber = produceList.value[i].detail[0].technologyNumber.toString(); // 转æ¢ä¸ºå符串以便å¤çæ¯ä¸ªå符 |
| | | } |
| | | |
| | | produceList.value[i].detail[0]["qrcodeList"] = []; // åå§åä¸ä¸ªç©ºæ°ç»ç¨æ¥åå¨ QR Code |
| | | if (compound == null ){ |
| | | const processId = produceList.value[i].detail[0].process_id; |
| | |
| | | data.value.printList = JSON.parse(props.printList) |
| | | |
| | | let name=company.companyName |
| | | let replenishQRCode=company.replenishQRCode |
| | | //å»é¤éå¤å¯¹è±¡ |
| | | // let uniqueObjects = {}; |
| | | // // éååå§æ°æ®æ°ç» |
| | |
| | | flowCardCount=produceList.value.length |
| | | |
| | | handleSummary() |
| | | if (name=='天津åç»ç»çå·¥ä¸ææ¯æéå
¬å¸ï¼TJBB-QR7.1-01ï¼'){ |
| | | if (replenishQRCode == 2){ |
| | | handleGetQRCodeTj()//天津æ«ç æªæ¥å·¥éè¦åå¹¶å±å·äºç»´ç |
| | | }else{ |
| | | handleGetQRCode()//æåå±å·äºç»´ç |
| | |
| | | addFlowCardMsg2:'è¯·éæ©æªåæ¶è®¢åæå°', |
| | | okFlowCard:'已忶', |
| | | noFlowCard:'æªåæ¶', |
| | | mainWidth:'宽é«', |
| | | mainHeight:'é«å®½', |
| | | terminationQuantity:'çäº§ç»æ¢æ°é', |
| | | terminationMsg:'请è¾å
¥æ£ç¡®çå¯ä¿®æ¹æ°é', |
| | | maxCompleted:'æå¤§å·²å®å·¥æ°é', |
| | | }, |
| | | reportingWorks:{ |
| | | page:{ |
| | |
| | | addFlowCardMsg2:'è¯·éæ©æªåæ¶è®¢åæå°', |
| | | okFlowCard:'已忶', |
| | | noFlowCard:'æªåæ¶', |
| | | mainWidth:'宽é«', |
| | | mainHeight:'é«å®½', |
| | | terminationQuantity:'çäº§ç»æ¢æ°é', |
| | | terminationMsg:'请è¾å
¥æ£ç¡®çå¯ä¿®æ¹æ°é', |
| | | maxCompleted:'æå¤§å·²å®å·¥æ°é', |
| | | }, |
| | | reportingWorks:{ |
| | | page:{ |
| | |
| | | addFlowCardMsg2:'è¯·éæ©æªåæ¶è®¢åæå°', |
| | | okFlowCard:'已忶', |
| | | noFlowCard:'æªåæ¶', |
| | | mainWidth:'宽é«', |
| | | mainHeight:'é«å®½', |
| | | terminationQuantity:'çäº§ç»æ¢æ°é', |
| | | terminationMsg:'请è¾å
¥æ£ç¡®çå¯ä¿®æ¹æ°é', |
| | | maxCompleted:'æå¤§å·²å®å·¥æ°é', |
| | | }, |
| | | reportingWorks:{ |
| | | page:{ |
| | |
| | | addFlowCardMsg2:'è¯·éæ©æªåæ¶è®¢åæå°', |
| | | okFlowCard:'已忶', |
| | | noFlowCard:'æªåæ¶', |
| | | mainWidth:'宽é«', |
| | | mainHeight:'é«å®½', |
| | | terminationQuantity:'çäº§ç»æ¢æ°é', |
| | | terminationMsg:'请è¾å
¥æ£ç¡®çå¯ä¿®æ¹æ°é', |
| | | maxCompleted:'æå¤§å·²å®å·¥æ°é', |
| | | }, |
| | | reportingWorks:{ |
| | | page:{ |
| | |
| | | noFlowCard:'æªåæ¶', |
| | | mainWidth:'宽é«', |
| | | mainHeight:'é«å®½', |
| | | |
| | | terminationQuantity:'çäº§ç»æ¢æ°é', |
| | | terminationMsg:'请è¾å
¥æ£ç¡®çå¯ä¿®æ¹æ°é', |
| | | maxCompleted:'æå¤§å·²å®å·¥æ°é', |
| | | }, |
| | | reportingWorks:{ |
| | | page:{ |
| | |
| | | storageBtn:false,//æ¯å¦æ¾ç¤ºæ¥å·¥å
¥åºç¸å
³å
å®¹ï¼æ´é³trueï¼å
¶ä»false |
| | | teamsType:false,//æ¯å¦å¼å¯çç»ä¸ææ¡ï¼æ´é³trueï¼å
¶ä»false |
| | | alienFunction:false,//æ¯å¦å¼å¯å¼å½¢åè½ï¼ææ¶é½æ¯false |
| | | replenishQRCode:2,//æ¯å¦è¡¥çäºç»´ç æ¯å¦æåå±,1æåï¼2䏿 |
| | | soleQRCode:false,//æµç¨å¡åå¹¶äºç»´ç æ¾ç¤ºåå±ï¼ä¹ä¹true.å
¶å®false |
| | | //天津 |
| | | printLabel: { |
| | | custom: (item1) => { |
| | |
| | | storageBtn:false,//æ¯å¦æ¾ç¤ºæ¥å·¥å
¥åºç¸å
³å
å®¹ï¼æ´é³trueï¼å
¶ä»false |
| | | teamsType:false,//æ¯å¦å¼å¯çç»ä¸ææ¡ï¼æ´é³trueï¼å
¶ä»false |
| | | alienFunction:false,//æ¯å¦å¼å¯å¼å½¢åè½ï¼ææ¶é½æ¯false |
| | | replenishQRCode:1,//æ¯å¦è¡¥çäºç»´ç æ¯å¦æåå±,1æåï¼2䏿 |
| | | soleQRCode:false,//æµç¨å¡åå¹¶äºç»´ç æ¾ç¤ºåå±ï¼ä¹ä¹true.å
¶å®false |
| | | //天津 |
| | | printLabel: { |
| | | custom: (item1) => { |
| | |
| | | storageBtn:false,//æ¯å¦æ¾ç¤ºæ¥å·¥å
¥åºç¸å
³å
å®¹ï¼æ´é³trueï¼å
¶ä»false |
| | | teamsType:false,//æ¯å¦å¼å¯çç»ä¸ææ¡ï¼æ´é³trueï¼å
¶ä»false |
| | | alienFunction:false,//æ¯å¦å¼å¯å¼å½¢åè½ï¼ææ¶é½æ¯false |
| | | replenishQRCode:1,//æ¯å¦è¡¥çäºç»´ç æ¯å¦æåå±,1æåï¼2䏿 |
| | | soleQRCode:false,//æµç¨å¡åå¹¶äºç»´ç æ¾ç¤ºåå±ï¼ä¹ä¹true.å
¶å®false |
| | | //天津 |
| | | printLabel: { |
| | | custom: (item1) => { |
| | |
| | | storageBtn:true,//æ¯å¦æ¾ç¤ºæ¥å·¥å
¥åºç¸å
³å
å®¹ï¼æ´é³trueï¼å
¶ä»false |
| | | teamsType:true,//æ¯å¦å¼å¯çç»ä¸ææ¡ï¼æ´é³trueï¼å
¶ä»false |
| | | alienFunction:false,//æ¯å¦å¼å¯å¼å½¢åè½ï¼ææ¶é½æ¯false |
| | | replenishQRCode:1,//æ¯å¦è¡¥çäºç»´ç æ¯å¦æåå±,1æåï¼2䏿 |
| | | soleQRCode:false,//æµç¨å¡åå¹¶äºç»´ç æ¾ç¤ºåå±ï¼ä¹ä¹true.å
¶å®false |
| | | //天津 |
| | | printLabel: { |
| | | custom: (item1) => { |
| | |
| | | storageBtn:false,//æ¯å¦æ¾ç¤ºæ¥å·¥å
¥åºç¸å
³å
å®¹ï¼æ´é³trueï¼å
¶ä»false |
| | | teamsType:true,//æ¯å¦å¼å¯çç»ä¸ææ¡ï¼æ´é³trueï¼å
¶ä»false |
| | | alienFunction:false,//æ¯å¦å¼å¯å¼å½¢åè½ï¼ææ¶é½æ¯false |
| | | replenishQRCode:1,//æ¯å¦è¡¥çäºç»´ç æ¯å¦æåå±,1æåï¼2䏿 |
| | | soleQRCode:true,//æµç¨å¡åå¹¶äºç»´ç æ¾ç¤ºåå±ï¼ä¹ä¹true.å
¶å®false |
| | | //天津 |
| | | printLabel: { |
| | | custom: (item1) => { |
| | |
| | | craftObj.technologyNumber.push(...numberList.technologyNumber); |
| | | rowIndex.value = row |
| | | } |
| | | |
| | | const updateTermination = (row) => { |
| | | let processId = row.process_id |
| | | let orderNumber = row.order_number |
| | | let process = row.process |
| | | const completed = ref() |
| | | const completedOk = ref() |
| | | //è·å第ä¸éå·¥åºå®å·¥æ°é |
| | | request.post(`/processCard/selectCompleted/${processId}/${orderNumber}/${process}`, filterData.value).then((res) => { |
| | | |
| | | if (res.code == 200) { |
| | | completed.value=res.data.data |
| | | completedOk.value = row.quantity*1 - completed.value*1 |
| | | //å¼¹çª |
| | | ElMessageBox.prompt( t('processCard.maxCompleted')+completed.value, { |
| | | confirmButtonText: t('basicData.save'), |
| | | cancelButtonText: t('basicData.cancelButtonText'), |
| | | inputPattern:/^(\d+|)$/, |
| | | inputErrorMessage: t('processCard.terminationMsg'), |
| | | inputValue:row.quantity |
| | | }).then(({ value }) => { |
| | | if (completedOk.value < value ) { |
| | | ElMessage.warning(t('processCard.terminationMsg')) |
| | | return |
| | | } |
| | | request.post(`/processCard/updateTermination/${processId}/${orderNumber}/${value}`).then((res) => { |
| | | if (res.code == 200 && res.data === true) { |
| | | ElMessage.success(t('basicData.msg.saveSuccess')) |
| | | router.push({ |
| | | path: '/main/processCard/SelectDetailProcessCard', |
| | | query: {processId: processId,random: Math.random()} |
| | | }) |
| | | } |
| | | }) |
| | | }) |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | } |
| | | }) |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | //ç¬¬ä¸æ¬¡å è½½ |
| | | |
| | | const {currentRoute} = useRouter() |
| | |
| | | if (res.code == 200) { |
| | | produceList = produceList.value.concat(deepClone(res.data.data)) |
| | | merge = res.data.merge |
| | | console.log(merge) |
| | | if(merge != 0){ |
| | | gridOptions.toolbarConfig.buttons[0].name=t('processCard.cancelMerger') |
| | | } |
| | |
| | | },//è¡¨å¤´åæ° |
| | | columns:[ |
| | | {type:'expand',fixed:"left",slots: { content:'content' },width: 50}, |
| | | {title: t('basicData.operate'), width: 100, slots: { default: 'button_slot' },fixed:"left",}, |
| | | {title: t('basicData.operate'), width: 120, slots: { default: 'button_slot' },fixed:"left",}, |
| | | { type: 'seq',fixed:"left", title: t('basicData.Number'), width: 50 }, |
| | | {field: 'order_id', title: t('order.orderId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },width: 110 }, |
| | | {field: 'process_id', width: 140, title: t('processCard.processId') ,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'order_number', title: t('order.OrderNum') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },width: 100}, |
| | | {field: 'technology_number', title: t('processCard.technologyNumber') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },width: 100}, |
| | | {field: 'quantity', title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, width: 80}, |
| | | {field: 'termination_quantity', title: t('processCard.terminationQuantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, width: 80}, |
| | | {field: 'child_width', title: t('order.width'),width: 80 }, |
| | | {field: 'child_height', title: t('order.height'),width: 80 }, |
| | | {field: 'area', title: t('order.area') ,showOverflow:"ellipsis",width: 70}, |
| | |
| | | <!--左边åºå®æ¾ç¤ºçææ§½--> |
| | | <template #button_slot="{ row }"> |
| | | <el-button @click="updateCraft(row)" link type="primary" size="small">{{$t('craft.updateCraft')}}</el-button> |
| | | <el-button @click="updateTermination(row)" link type="primary" size="small">ç»æ¢</el-button> |
| | | </template> |
| | | |
| | | |
| | | <template #num1_filter="{ column, $panel }"> |
| | | <div> |
| | | <div v-for="(option, index) in column.filters" :key="index"> |
| | | <input type="text" |
| | | v-model="option.data" |
| | | @keyup.enter.native="$panel.confirmFilter()" |
| | | @input="changeFilterEvent($event, option, $panel)"/> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | </vxe-grid> |
| | | |
| | | <el-dialog id="processChange" |
| | |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | {field: 'batch', title: t('order.batch'), filters: [{data: ''}], slots: {filter: 'num1_filter'}, width: 110}, |
| | | { |
| | | field: 'quantity', |
| | | title: t('order.quantity'), |
| | |
| | | { |
| | | field: 'project', width: 120, title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' } |
| | | }, |
| | | {field: 'batch', width: 90, title: t('order.batch')}, |
| | | {field: 'batch', width: 90, title: t('order.batch'), |
| | | filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'orderType', width: 90, title: t('order.orderType')}, |
| | | { |
| | | field: 'processId', width: 140, title: t('processCard.processId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' } |
| | |
| | | { |
| | | field: 'deviceName', width: 140, title: t('machine.basicName'),filters:[{ data: '' }],slots: { filter: 'num1_filter' } |
| | | }, |
| | | {field: 'workProcessName', width: 120, title: t('report.workProcessName')}, |
| | | {field: 'workProcessName', width: 120, title: t('report.workProcessName'), |
| | | filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'edgingType', width: 110, title: t('order.edgingType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'completedQuantity', width: 90, title: t('reportingWorks.completedQuantity')}, |
| | | {field: 'area', width: 100, title: t('reportingWorks.completedArea')}, |
| | |
| | | return Result.seccess(glassOptimizeService.getProcessCardMpThirdParty(projectNo)); |
| | | } |
| | | |
| | | |
| | | @ApiOperation("meså·¥ç¨ä»»å¡ä¸åæ¥å£") |
| | | @PostMapping("/getIssuingProjects") |
| | | public Result issuingProjects(@RequestBody String projectNo) throws JsonProcessingException { |
| | | return Result.seccess(glassOptimizeService.issuingProjects(projectNo)); |
| | | } |
| | | |
| | | |
| | | |
| | |
| | | //åæ°ï¼ç¸åºçæ°æ®ï¼å®ä½ç±»ä¿¡æ¯ï¼ç¸åºçæ¹æ³ï¼æ°æ®è·åï¼ï¼çæçexcelåå |
| | | DownExcel.download(response, FlowCardDTO.class, flowCardService.exportDateProcessSv(dates), "DateProcess"); |
| | | } |
| | | |
| | | @ApiOperation("ä¿®æ¹çäº§ç»æ¢æ°é") |
| | | @PostMapping("/updateTermination/{processId}/{orderNumber}/{value}") |
| | | public Result updateTermination( |
| | | @PathVariable String processId, |
| | | @PathVariable Integer orderNumber, |
| | | @PathVariable Integer value |
| | | ) { |
| | | |
| | | return Result.seccess(flowCardService.updateTerminationSv(processId,orderNumber,value)); |
| | | } |
| | | |
| | | @ApiOperation("æ¥è¯¢ç¨äºä¿®æ¹çäº§ç»æ¢æ°éçå®å·¥æ°é") |
| | | @PostMapping("/selectCompleted/{processId}/{orderNumber}/{process}") |
| | | public Result selectCompleted( |
| | | @PathVariable String processId, |
| | | @PathVariable Integer orderNumber, |
| | | @PathVariable String process) { |
| | | return Result.seccess(flowCardService.selectCompletedSv(processId, orderNumber,process)); |
| | | |
| | | } |
| | | } |
| | |
| | | import com.example.erp.exception.ServiceException; |
| | | import com.example.erp.service.sd.DeliveryService; |
| | | import com.example.erp.tools.DownExcel; |
| | | import com.fasterxml.jackson.core.JsonProcessingException; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | @ApiOperation("åè´§è®¢åæ¥è¯¢æ¥å£") |
| | | @SaCheckPermission("selectDelivery.search") |
| | | @PostMapping("/getSelectShippingOrder/{pageNum}/{pageSize}/{selectDate}") |
| | | public Result getSelectShippingOrder(@PathVariable Integer pageNum, @PathVariable Integer pageSize,@PathVariable List<String> selectDate, @RequestBody Delivery delivery){ |
| | | public Result getSelectShippingOrder(@PathVariable Integer pageNum, @PathVariable Integer pageSize,@PathVariable List<String> selectDate, @RequestBody Delivery delivery) throws JsonProcessingException { |
| | | return Result.seccess(deliveryService.getSelectShippingOrder(pageNum,pageSize,selectDate,delivery)); |
| | | } |
| | | |
| | |
| | | |
| | | return Result.seccess(deliveryService.updateDeliveryPrintNumber(deliveryId)); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | |
| | | Integer getLayoutStatus(String processId); |
| | | |
| | | List<Map<String, String>> selectSortingCardMp(String orderId, String productionId, String flashback, String optionVal, FlowCard flowCard); |
| | | |
| | | Boolean updateTerminationMp(String processId, Integer orderNumber, Integer value); |
| | | |
| | | Integer selectCompletedMp(String processId, Integer orderNumber, String interceptProcess); |
| | | } |
| | |
| | | List<Map<String, Object>> getProjectByProjectNoSv(String projectNo); |
| | | |
| | | void updateFlowCardRack(String processId, String technologyNumber, int rackValue); |
| | | |
| | | Map<String,Object> selectOptimizeProject(String projectNo); |
| | | |
| | | List<Map<String,Object>> selectOptimizeLayout(String projectNo); |
| | | |
| | | List<Map<String,Object>> selectOptimizeDetail(String projectNo); |
| | | |
| | | List<Map<String,Object>> selectFlowCardInfoList(String projectNo); |
| | | } |
| | |
| | | |
| | | List<Map<String,String>> filterOrderProcess(String orderId); |
| | | |
| | | List<Map<String,Integer>> getGlassLRow(String orderId); |
| | | List<Map<String,Object>> getGlassLRow(String orderId); |
| | | |
| | | List<Map<String, String>> filterLastProcess(String orderId, String orderNumber, String technologyNumber,String id); |
| | | |
| | |
| | | import com.example.erp.entity.userInfo.Log; |
| | | import com.example.erp.exception.ServiceException; |
| | | import com.example.erp.mapper.pp.FlowCardMapper; |
| | | import com.example.erp.mapper.pp.ReportingWorkMapper; |
| | | import com.example.erp.mapper.sd.*; |
| | | import com.example.erp.service.userInfo.LogService; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.awt.*; |
| | | import java.time.LocalDate; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | |
| | | |
| | | private final OrderDetailMapper orderDetailMapper; |
| | | private final OrderMapper orderMapper; |
| | | private final ReportingWorkMapper reportingWorkMapper; |
| | | |
| | | public FlowCardService(FlowCardMapper flowCardMapper, OrderGlassDetailMapper orderGlassDetailMapper, OrderProcessDetailMapper orderProcessDetailMapper, LogService logService, ProductMapper productMapper, ProductDetailMapper productDetailMapper, OrderDetailMapper orderDetailMapper, OrderMapper orderMapper) { |
| | | public FlowCardService(FlowCardMapper flowCardMapper, OrderGlassDetailMapper orderGlassDetailMapper, |
| | | OrderProcessDetailMapper orderProcessDetailMapper, LogService logService, |
| | | ProductMapper productMapper, ProductDetailMapper productDetailMapper, |
| | | OrderDetailMapper orderDetailMapper, OrderMapper orderMapper,ReportingWorkMapper reportingWorkMapper) { |
| | | this.flowCardMapper = flowCardMapper; |
| | | this.orderGlassDetailMapper = orderGlassDetailMapper; |
| | | this.orderProcessDetailMapper = orderProcessDetailMapper; |
| | |
| | | this.productDetailMapper = productDetailMapper; |
| | | this.orderDetailMapper = orderDetailMapper; |
| | | this.orderMapper = orderMapper; |
| | | this.reportingWorkMapper = reportingWorkMapper; |
| | | } |
| | | |
| | | //æµç¨å¡ç®¡çæ¥è¯¢ |
| | |
| | | map.put("orderOtherMoney", flowCardMapper.selectorderOtherMoney()); |
| | | return map; |
| | | } |
| | | |
| | | public Boolean updateTerminationSv(String processId, Integer orderNumber, Integer value) { |
| | | if (processId!=""){ |
| | | flowCardMapper.updateTerminationMp(processId,orderNumber,value); |
| | | return true; |
| | | }else { |
| | | return false; |
| | | } |
| | | |
| | | } |
| | | |
| | | public Map<String, Object> selectCompletedSv(String processId, Integer orderNumber, String process) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | String[] processList = process.split("->"); |
| | | //è·åå·¥èºæµç¨ç¬¬ä¸ä¸ªå·¥åº |
| | | String interceptProcess = processList[0]; |
| | | map.put("data", flowCardMapper.selectCompletedMp(processId, orderNumber,interceptProcess)); |
| | | |
| | | return map; |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | import com.example.erp.entity.userInfo.SysError; |
| | | import com.example.erp.mapper.pp.GlassOptimizeMapper; |
| | | import com.example.erp.service.userInfo.SysErrorService; |
| | | import com.fasterxml.jackson.core.JsonProcessingException; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | |
| | | return map; |
| | | } |
| | | |
| | | |
| | | public Boolean issuingProjects(String projectNo) throws JsonProcessingException { |
| | | boolean saveState=false; |
| | | try { |
| | | // 1. å建URL对象 |
| | | URL url = new URL("http://localhost:88/api/loadGlass/engineering/importEngineer"); |
| | | |
| | | // 2. æå¼è¿æ¥ |
| | | HttpURLConnection conn = (HttpURLConnection) url.openConnection(); |
| | | conn.setRequestMethod("POST"); |
| | | conn.setRequestProperty("Content-Type", "application/json"); |
| | | conn.setRequestProperty("Accept", "application/json"); |
| | | conn.setDoOutput(true); |
| | | |
| | | // 3. åå¤è¯·æ±ä½ |
| | | Map<String, Object> optimizeProject=glassOptimizeMapper.selectOptimizeProject(projectNo); |
| | | optimizeProject.put("engineeringRawQueueList", glassOptimizeMapper.selectOptimizeLayout(projectNo)); |
| | | optimizeProject.put("glassInfolList", glassOptimizeMapper.selectOptimizeDetail(projectNo)); |
| | | optimizeProject.put("flowCardInfoList", glassOptimizeMapper.selectFlowCardInfoList(projectNo)); |
| | | ObjectMapper mapper = new ObjectMapper(); |
| | | mapper.registerModule(new JavaTimeModule()); |
| | | String jsonInputString = mapper.writeValueAsString(optimizeProject); |
| | | |
| | | //åéè¯·æ± |
| | | try(OutputStream os = conn.getOutputStream()) { |
| | | byte[] input = jsonInputString.getBytes(StandardCharsets.UTF_8); |
| | | os.write(input, 0, input.length); |
| | | } |
| | | |
| | | // è·åååº |
| | | try(BufferedReader br = new BufferedReader( |
| | | new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8))) { |
| | | StringBuilder response = new StringBuilder(); |
| | | String responseLine; |
| | | while ((responseLine = br.readLine()) != null) { |
| | | response.append(responseLine.trim()); |
| | | } |
| | | System.out.println("Response: " + response.toString()); |
| | | JSONObject obj = JSONObject.parseObject(response.toString()); |
| | | if(obj.get("code").equals(200)&&obj.get("data").equals(true)){ |
| | | saveState=true; |
| | | } |
| | | |
| | | } |
| | | |
| | | //å
³éè¿æ¥ |
| | | conn.disconnect(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | saveState= false; |
| | | } |
| | | return saveState; |
| | | } |
| | | |
| | | } |
| | |
| | | } |
| | | |
| | | |
| | | List<Map<String, Integer>> getRowCount = orderProcessDetailMapper.getGlassLRow(orderId); |
| | | List<Map<String, Object>> getRowCount = orderProcessDetailMapper.getGlassLRow(orderId); |
| | | List<Map<String, Integer>> rowCount = new ArrayList<>(); |
| | | columns.forEach(col -> { |
| | | getRowCount.forEach(row -> { |
| | | Map<String, Integer> getRow = new HashMap<>(); |
| | | // { row: 0, col: 1, rowspan: 3, colspan: 0}, |
| | | getRow.put("row", row.get("RowNum")); |
| | | getRow.put("row", ((Number) row.get("RowNum")).intValue()); |
| | | getRow.put("col", col); |
| | | getRow.put("rowspan", row.get("rowCount")); |
| | | getRow.put("rowspan", ((Number) row.get("rowCount")).intValue()); |
| | | getRow.put("colspan", 0); |
| | | rowCount.add(getRow); |
| | | }); |
| | |
| | | map.put("title", uniqueList); |
| | | |
| | | |
| | | List<Map<String, Integer>> getRowCount = orderProcessDetailMapper.getGlassLRow(orderId); |
| | | List<Map<String, Object>> getRowCount = orderProcessDetailMapper.getGlassLRow(orderId); |
| | | List<Map<String, Integer>> rowCount = new ArrayList<>(); |
| | | columns.forEach(col -> { |
| | | getRowCount.forEach(row -> { |
| | | Map<String, Integer> getRow = new HashMap<>(); |
| | | // { row: 0, col: 1, rowspan: 3, colspan: 0}, |
| | | getRow.put("row", row.get("RowNum")); |
| | | getRow.put("row", ((Number) row.get("RowNum")).intValue()); |
| | | getRow.put("col", col); |
| | | getRow.put("rowspan", row.get("rowCount")); |
| | | getRow.put("rowspan", ((Number) row.get("rowCount")).intValue()); |
| | | getRow.put("colspan", 0); |
| | | rowCount.add(getRow); |
| | | }); |
| | |
| | | log.setOperatorId(userId); |
| | | log.setOperator(userName); |
| | | if(reportingWork.getReviewedState()==0){ |
| | | //æ¥è¯¢å½åæ¥å·¥ç¼å·å®å·¥æ¬¡ç ´æ°éçæ°æ® |
| | | List<Map<String, Object>> workDateList = reportingWorkMapper.reportingWorkDate(reportingWorkId); |
| | | for (Map<String, Object> item : workDateList) { |
| | | //æ´æ°æ¥å·¥æµç¨è¡¨æ°æ® |
| | | reportingWorkMapper.updateWorkProcess(processId, item.get("order_number"), item.get("technology_number"), item.get("completed_quantity"), item.get("breakage_quantity"), thisProcess); |
| | | } |
| | | //å 餿¥å·¥ï¼å°å®¡æ ¸ç¶ææ¹ä¸º-1 |
| | | reportingWorkMapper.deleteWork(reportingWorkId); |
| | | logService.saveLog(log); |
| | | return true; |
| | |
| | | import com.example.erp.dto.sd.DeliveryDetailDTO; |
| | | import com.example.erp.dto.sd.DeliveryDetailProductDTO; |
| | | import com.example.erp.entity.mm.FinishedOperateLog; |
| | | import com.example.erp.entity.pp.BasicDataProduce; |
| | | import com.example.erp.entity.sd.*; |
| | | import com.example.erp.entity.userInfo.Log; |
| | | import com.example.erp.entity.userInfo.SysError; |
| | |
| | | import com.example.erp.service.mm.FinishedGoodsInventoryService; |
| | | import com.example.erp.service.userInfo.LogService; |
| | | import com.example.erp.service.userInfo.SysErrorService; |
| | | import com.fasterxml.jackson.core.JsonProcessingException; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.transaction.interceptor.TransactionAspectSupport; |
| | | |
| | | import java.io.BufferedReader; |
| | | import java.io.InputStreamReader; |
| | | import java.io.OutputStream; |
| | | import java.lang.reflect.Field; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.net.HttpURLConnection; |
| | | import java.net.URL; |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDate; |
| | | import java.util.*; |
| | |
| | | FinishedGoodsInventoryService finishedGoodsInventoryService; |
| | | |
| | | |
| | | public Map<String, Object> getSelectShippingOrder(Integer pageNum, Integer pageSize,List<String> selectDate, Delivery delivery) { |
| | | public Map<String, Object> getSelectShippingOrder(Integer pageNum, Integer pageSize,List<String> selectDate, Delivery delivery) throws JsonProcessingException { |
| | | Integer offset = (pageNum - 1) * pageSize; |
| | | String endDate = LocalDate.now().toString(); |
| | | String startDate = LocalDate.now().minusDays(15).toString(); |
| | |
| | | |
| | | return oddNumbers; |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | <select id="getSelectMaterialInventoryMes"> |
| | | select |
| | | mi.material_code AS materialCode, |
| | | mi.producer, |
| | | sum(mi.available_quantity) AS quantity, |
| | | JSON_UNQUOTE(JSON_EXTRACT(ms.json, '$.width')) AS width, |
| | | JSON_UNQUOTE(JSON_EXTRACT(ms.json, '$.height')) AS height, |
| | |
| | | fc.founder, |
| | | date(fc.splitFrame_time) as splitFrame_time, |
| | | ogd.process, |
| | | c.concatNumber |
| | | c.concatNumber, |
| | | ifnull(fc.termination_quantity,0) as termination_quantity |
| | | from flow_card as fc |
| | | left join sd.order_glass_detail as ogd |
| | | on fc.order_id = ogd.order_id and fc.order_number = ogd.order_number and |
| | |
| | | ORDER BY od.height DESC, od.width DESC |
| | | </if> |
| | | </select> |
| | | |
| | | <update id="updateTerminationMp"> |
| | | update pp.flow_card fc set fc.termination_quantity=#{value} |
| | | where fc.process_id = #{processId} and fc.order_number=#{orderNumber} |
| | | </update> |
| | | |
| | | <select id="selectCompletedMp"> |
| | | SELECT max(reporting_work_num) FROM sd.`order_process_detail` |
| | | where process_id=#{processId} and order_number=#{orderNumber} and process=#{interceptProcess} |
| | | </select> |
| | | </mapper> |
| | |
| | | </delete> |
| | | |
| | | |
| | | <select id="selectOptimizeProject"> |
| | | select |
| | | project_no as engineerId, |
| | | project_name as engineerName, |
| | | avg_cut_pct as avgAvailability, |
| | | valid_cut_pct as validAvailability, |
| | | last_cut_pct as lastAvailability, |
| | | glass_total as glassTotal, |
| | | glass_total_area as glassTotalArea, |
| | | raw_stock_qty as planPatternTotal, |
| | | raw_stock_area as planPatternTotalArea, |
| | | glass_thickness as thickness, |
| | | glass_type as filmsId |
| | | from |
| | | pp.optimize_project |
| | | where |
| | | project_no = #{projectNo} |
| | | </select> |
| | | |
| | | <select id="selectOptimizeLayout"> |
| | | select |
| | | ol.project_no as engineeringId, |
| | | op.glass_type as filmsId, |
| | | ol.realwidth as rawGlassWidth, |
| | | ol.realheight as rawGlassHeight, |
| | | op.glass_thickness as rawGlassThickness, |
| | | ol.stock_id rawSequence |
| | | from |
| | | pp.optimize_layout ol |
| | | left join pp.optimize_project op on ol.project_no = op.project_no |
| | | where |
| | | ol.project_no = #{projectNo} |
| | | order by |
| | | ol.stock_id |
| | | </select> |
| | | |
| | | |
| | | <select id="selectOptimizeDetail"> |
| | | select |
| | | opd.glass_id as glassId, |
| | | opd.project_no as engineerId, |
| | | opd.process_id as flowCardId, |
| | | opd.order_sort as orderNumber, |
| | | opd.o_width as width, |
| | | opd.o_height as height, |
| | | op.glass_thickness as thickness, |
| | | op.glass_type as filmsId, |
| | | opd.total_layer as totalLayer, |
| | | opd.layer, |
| | | opd.stock_id as rawSequence, |
| | | opd.p_width as edgWidth, |
| | | opd.p_height as edgHeight, |
| | | opd.x_axis as xAxis, |
| | | opd.y_axis as yAxis, |
| | | if(opd.o_width!=opd.width,1,0) as rawAngle, |
| | | opd.heat_layout_id as temperingLayoutId, |
| | | opd.heat_layout_sort as temperingFeedSequence, |
| | | ohd.x_axis as xCoordinate, |
| | | ohd.y_axis as yCoordinate, |
| | | ohd.rotate_angle as angle, |
| | | IF(LOCATE('ä¸ç©º', ogd.process ) > 0 or LOCATE('夹å±', ogd.process ) > 0, 1, 0) as isMultiple, |
| | | od.width as maxWidth, |
| | | od.height as maxHeight, |
| | | opd.mark_icon as markIcon, |
| | | fc.`merge` as combine, |
| | | concat( opd.process_id, '/', opd.layer ) as flowCardSequence, |
| | | ogd.process |
| | | from |
| | | pp.optimize_detail opd |
| | | left join pp.optimize_project op on op.project_no = opd.project_no |
| | | left join pp.flow_card fc on opd.process_id = fc.process_id |
| | | and opd.layer = fc.technology_number |
| | | and opd.order_sort = order_number |
| | | left join sd.`order` o on fc.order_id = o.order_id |
| | | left join sd.order_detail od on fc.order_id = od.order_id |
| | | and fc.order_number = od.order_number |
| | | left join sd.order_glass_detail ogd on fc.order_id = ogd.order_id |
| | | and fc.order_number = ogd.order_number |
| | | and ogd.technology_number = fc.technology_number |
| | | left join pp.optimize_heat_detail ohd on ohd.layout_id = opd.heat_layout_id |
| | | and ohd.sort = opd.heat_layout_sort and ohd.project_no=opd.project_no |
| | | where |
| | | opd.project_no = #{projectNo} |
| | | </select> |
| | | |
| | | <select id="selectFlowCardInfoList"> |
| | | select |
| | | fc.process_id as flowCardId, |
| | | ogd.child_width as width, |
| | | ogd.child_height as height, |
| | | REPLACE (JSON_UNQUOTE( JSON_EXTRACT( pd.separation, '$.thickness' )), 'mm', '' ) as thickness, |
| | | JSON_UNQUOTE(JSON_EXTRACT( pd.separation, '$.color' )) as filmsId, |
| | | fc.layers_number as totalLayer, |
| | | fc.technology_number as layer, |
| | | fc.quantity as glassTotal, |
| | | od.order_number as orderNumber, |
| | | od.product_name as productName, |
| | | o.customer_name as customerName |
| | | from |
| | | pp.flow_card fc |
| | | left join sd.`order` o on fc.order_id = o.order_id |
| | | left join sd.order_detail od on fc.order_id = od.order_id |
| | | and fc.order_number = od.order_number |
| | | left join sd.order_glass_detail ogd on fc.order_id = ogd.order_id |
| | | and fc.order_number = ogd.order_number |
| | | and ogd.technology_number = fc.technology_number |
| | | left join sd.product p on od.product_id = p.id |
| | | left join sd.product_detail pd on od.product_id = pd.prod_id |
| | | and fc.technology_number = pd.glass_sort |
| | | where |
| | | project_no =#{projectNo} |
| | | </select> |
| | | |
| | | |
| | | |
| | |
| | | ogd.glass_address, |
| | | ogd.glass_child, |
| | | r.patch_num, |
| | | od.width, |
| | | od.height, |
| | | ogd.child_width as width, |
| | | ogd.child_height as height, |
| | | od.shape, |
| | | r.patch_type, |
| | | r.patch_reason, |
| | |
| | | and r.quality_inspector regexp #{patchLog.qualityInspector} |
| | | </if> |
| | | <if test="patchLog.width != null and patchLog.width != ''"> |
| | | and od.width regexp #{patchLog.width} |
| | | and ogd.child_width regexp REGEXP_REPLACE(#{patchLog.width},'\\.0+$','') |
| | | </if> |
| | | <if test="patchLog.height != null and patchLog.height != ''"> |
| | | and od.height regexp #{patchLog.height} |
| | | and ogd.child_height regexp REGEXP_REPLACE(#{patchLog.height},'\\.0+$','') |
| | | </if> |
| | | <if test="patchLog.shape != null and patchLog.shape != ''"> |
| | | and od.shape regexp #{patchLog.shape} |
| | |
| | | and r.quality_inspector regexp #{patchLog.qualityInspector} |
| | | </if> |
| | | <if test="patchLog.width != null and patchLog.width != ''"> |
| | | and od.width regexp #{patchLog.width} |
| | | and ogd.child_width regexp REGEXP_REPLACE(#{patchLog.width},'\\.0+$','') |
| | | </if> |
| | | <if test="patchLog.height != null and patchLog.height != ''"> |
| | | and od.height regexp #{patchLog.height} |
| | | and ogd.child_height regexp REGEXP_REPLACE(#{patchLog.height},'\\.0+$','') |
| | | </if> |
| | | <if test="patchLog.shape != null and patchLog.shape != ''"> |
| | | and od.shape regexp #{patchLog.shape} |
| | |
| | | dd.technology_number as technologyNumber, |
| | | ogd.glass_address as glassAddress, |
| | | dd.breakage_quantity-dd.quantity as patchNum, |
| | | od.width, |
| | | od.height, |
| | | ogd.child_width as width, |
| | | ogd.child_height as height, |
| | | od.shape, |
| | | dd.responsible_process as responsibleProcess, |
| | | rw.this_process as patchProcesses, |
| | |
| | | and rw.quality_inspector regexp #{patchLogAddDTO.qualityInspector} |
| | | </if> |
| | | <if test="patchLogAddDTO.width != null and patchLogAddDTO.width != ''"> |
| | | and od.width regexp #{patchLogAddDTO.width} |
| | | and ogd.child_width regexp REGEXP_REPLACE(#{patchLogAddDTO.width},'\\.0+$','') |
| | | </if> |
| | | <if test="patchLogAddDTO.height != null and patchLogAddDTO.height != ''"> |
| | | and od.height regexp #{patchLogAddDTO.height} |
| | | and ogd.child_height regexp REGEXP_REPLACE(#{patchLogAddDTO.height},'\\.0+$','') |
| | | </if> |
| | | <if test="patchLogAddDTO.shape != null and patchLogAddDTO.shape != ''"> |
| | | and od.shape regexp #{patchLogAddDTO.shape} |
| | |
| | | c.technology_number, |
| | | b.child_width, |
| | | b.child_height, |
| | | if(c.technology_number=1,c.quantity,0) as quantity, |
| | | if(c.technology_number=1,c.quantity-ifnull(c.termination_quantity,0),0) as quantity, |
| | | |
| | | c.quantity as thisQuantity,/*ç¨äºå¤ææ¯å¦æ¹åé¢è²*/ |
| | | c.quantity-ifnull(c.termination_quantity,0) as thisQuantity,/*ç¨äºå¤ææ¯å¦æ¹åé¢è²*/ |
| | | e.reportWorkQuantity, |
| | | e.reportWorkQuantityShow, |
| | | e.reportWorkQuantityCount, |
| | | e.reportWorkTime, |
| | | e.broken_num, |
| | | c.quantity as glassQuantity, |
| | | c.quantity-ifnull(c.termination_quantity,0) as glassQuantity, |
| | | |
| | | c.quantity as quantityShow, |
| | | c.quantity*a.area as grossAreaShow, |
| | | c.quantity-ifnull(c.termination_quantity,0) as quantityShow, |
| | | (c.quantity-ifnull(c.termination_quantity,0))*a.area as grossAreaShow, |
| | | ifnull(f.inventory, 0) as inventoryShow, |
| | | round(ifnull(f.inventory, 0) * a.area, 2) as inventoryAreaShow, |
| | | ifnull(dd.quantity, 0) as shippedQuantityShow, |
| | |
| | | on e.process_id = c.process_id |
| | | and e.technology_number = c.technology_number |
| | | and e.order_number = c.order_number |
| | | where a.order_id = #{orderId} and d.create_order>0 |
| | | where a.order_id = #{orderId} and d.create_order>0 and c.quantity-ifnull(c.termination_quantity,0)>0 |
| | | group by c.order_number, |
| | | c.technology_number, |
| | | c.process_id |
| | |
| | | ogd.glass_child, |
| | | ogd.child_width, |
| | | ogd.child_height, |
| | | fc.quantity, |
| | | fc.quantity - ifnull(fc.termination_quantity,0) as quantity, |
| | | ROUND(ogd.child_width * ogd.child_height / 1000000, 2) as childArea, |
| | | ROUND(ogd.child_width * ogd.child_height * fc.quantity / 1000000, 2) as actualArea, |
| | | ROUND(ogd.child_width * ogd.child_height * (fc.quantity- ifnull(fc.termination_quantity,0)) / 1000000, 2) as actualArea, |
| | | odpd.reporting_work_num as completeNum, |
| | | ROUND(ogd.child_width * ogd.child_height * odpd.reporting_work_num / 1000000, |
| | | 2) as completeArea, |
| | | fc.quantity - odpd.reporting_work_num as incompleteNum, |
| | | ROUND(ogd.child_width * ogd.child_height * (fc.quantity - odpd.reporting_work_num) / 1000000, |
| | | fc.quantity - odpd.reporting_work_num - ifnull(fc.termination_quantity,0) as incompleteNum, |
| | | ROUND(ogd.child_width * ogd.child_height * (fc.quantity - odpd.reporting_work_num- ifnull(fc.termination_quantity,0)) / 1000000, |
| | | 2) as incompleteArea, |
| | | od.product_name |
| | | |
| | |
| | | and position(#{orderId} in od.order_id) |
| | | and position(#{inputProject} in o.project) |
| | | and GREATEST(fc.quantity - odpd.reporting_work_num, 0)>0 |
| | | and fc.quantity-ifnull(fc.termination_quantity,0)>0 |
| | | |
| | | group by fc.process_id, fc.order_number, fc.technology_number |
| | | order by fc.process_id, fc.order_number, fc.technology_number |
| | |
| | | a.product_name, |
| | | b.child_width, |
| | | b.child_height, |
| | | c.quantity, |
| | | c.quantity - ifnull(c.termination_quantity,0) as quantity, |
| | | c.technology_number, |
| | | b.glass_child, |
| | | ifnull(e.reportWorkQuantity, 0) as reportWorkQuantity, |
| | |
| | | and e.order_number=c.order_number |
| | | and e.technology_number = c.technology_number |
| | | left join sd.delivery_detail as dd on dd.order_id = a.order_id and dd.order_number = a.order_number |
| | | where a.order_id = #{orderId} and d.create_order>0 |
| | | where a.order_id = #{orderId} and d.create_order>0 and c.quantity - ifnull(c.termination_quantity,0)>0 |
| | | group by c.order_number,c.technology_number |
| | | ORDER BY a.order_number |
| | | </select> |
| | |
| | | ogd.child_width, |
| | | ogd.child_height, |
| | | if(od.shape=1,'æ®å½¢',if(od.shape=2,'å¼å½¢','')) as shape, |
| | | 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, |
| | | fc.quantity -fc.export_number + ifnull(patch.patch_num,0) -odpd.reporting_work_num -odpd.broken_num - ifnull(fc.termination_quantity,0) as quantity, |
| | | fc.quantity -fc.export_number + ifnull(patch.patch_num,0) -odpd.reporting_work_num -odpd.broken_num - ifnull(fc.termination_quantity,0) 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, -- 夿æ¯å¦å·²ç»å®æï¼å·²ç»å®æä¸åºå·åååºå·æ°éç¸åæè½æäº¤ |
| | |
| | | AND POSITION(fc.technology_number in #{technologyStr}) |
| | | AND odpd.process = #{process} |
| | | and if(#{reportType}=1,o.order_type!='æ ·å订å',o.order_id!='') |
| | | and o.create_order>0 |
| | | and o.create_order>0 and fc.quantity - ifnull(fc.termination_quantity,0)>0 |
| | | group by fc.order_number, |
| | | ogd.technology_number |
| | | order by fc.order_number |
| | |
| | | where delivery_id = #{deliveryId} |
| | | |
| | | </update> |
| | | |
| | | |
| | | |
| | | </mapper> |