From d5bb894f9be2e0a3b62d475b60b44f2ab138528c Mon Sep 17 00:00:00 2001 From: guoyujie <guoyujie@ng.com> Date: 星期四, 12 六月 2025 16:48:35 +0800 Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/ERP_override --- north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java | 154 +++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 135 insertions(+), 19 deletions(-) diff --git a/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java b/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java index d319fe6..8f479a8 100644 --- a/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java +++ b/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java @@ -1,5 +1,6 @@ package com.example.erp.service.sd; +import cn.dev33.satoken.stp.StpUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -10,29 +11,26 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.example.erp.common.Constants; import com.example.erp.dto.sd.OrderDTO; -import com.example.erp.dto.sd.OrderDetailProductDTO; +import com.example.erp.dto.sd.OrderSearchDTO; import com.example.erp.entity.sd.*; 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.pp.FlowCardMapper; import com.example.erp.mapper.pp.WorkOrderMapper; import com.example.erp.mapper.sd.*; import com.example.erp.service.userInfo.LogService; import com.example.erp.service.userInfo.SysErrorService; -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.math.BigDecimal; import java.math.RoundingMode; -import java.sql.SQLOutput; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.util.*; import java.util.stream.Collectors; - -import static org.apache.coyote.http11.Constants.a; @Service @DS("sd") @@ -46,9 +44,10 @@ private final ProductMapper productMapper; private final LogService logService; private final WorkOrderMapper workOrderMapper; + private final FlowCardMapper flowCardMapper; private final OrderProcessDetailMapper orderProcessDetailMapper; - public OrderService(OrderMapper orderMapper, OrderDetailMapper orderDetailMapper, OrderGlassDetailMapper orderGlassDetailMapper, OrderProcessDetailMapper orderProcessDetailMapper, SysErrorService sysErrorService, OrderOtherMoneyMapper orderOtherMoneyMapper, ProductMapper productMapper, LogService logService, WorkOrderMapper workOrderMapper) { + public OrderService(OrderMapper orderMapper, OrderDetailMapper orderDetailMapper, OrderGlassDetailMapper orderGlassDetailMapper, OrderProcessDetailMapper orderProcessDetailMapper, SysErrorService sysErrorService, OrderOtherMoneyMapper orderOtherMoneyMapper, ProductMapper productMapper, LogService logService, WorkOrderMapper workOrderMapper, FlowCardMapper flowCardMapper) { this.orderMapper = orderMapper; this.orderDetailMapper = orderDetailMapper; this.orderGlassDetailMapper = orderGlassDetailMapper; @@ -58,6 +57,7 @@ this.productMapper = productMapper; this.logService = logService; this.workOrderMapper = workOrderMapper; + this.flowCardMapper = flowCardMapper; } public boolean saveOrder(Map<String,Object> orderMap) throws Exception { @@ -119,7 +119,15 @@ log.setFunction("saveOrderTitle淇濆瓨琛ㄥご:"+order.getOrderId()); Order order1 = orderMapper.selectOrderId(order.getOrderId()); + //浣跨敤璁㈠崟鍘熸湰鐨勭姸鎬佸拰璁$畻鏂瑰紡 order.setCalculateType(order1.getCalculateType()); + order.setCreateOrder(order1.getCreateOrder()); + order.setProcessReview(order1.getProcessReview()); + order.setOrderReview(order1.getOrderReview()); + order.setProductionOrder(order1.getProductionOrder()); + order.setProcessingCard(order1.getProcessingCard()); + order.setWarehousing(order1.getWarehousing()); + order.setDelivery(order1.getDelivery()); LambdaUpdateWrapper<Order> updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(Order::getOrderId, order.getOrderId()); @@ -201,9 +209,16 @@ //淇敼璁㈠崟鏁版嵁锛屽苟涓旈噸鏂扮敓鎴愬涓壇琛ㄦ暟鎹� - public void updateOrder(Order order,List<OrderDetail> OrderDetails,List<OrderOtherMoney> orderOtherMoneyList) { - + public void updateOrder(Order order,List<OrderDetail> OrderDetails,List<OrderOtherMoney> orderOtherMoneyList) throws Exception { + Order oldOrder = orderMapper.selectOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderId,order.getOrderId())); + if(oldOrder.getProcessReview()==2){ + throw new ServiceException(Constants.Code_600,"璇ヨ鍗曞凡缁忓鏍革紝鏃犳硶淇敼"); + } + if(!Objects.equals(oldOrder.getVersion(), order.getVersion())){ + throw new ServiceException(Constants.Code_600,"璇ヨ鍗曞凡缁忎慨鏀癸紝璇峰埛鏂伴〉闈�"); + } order.setCreateTime(null); + order.setVersion(order.getVersion()+1); LambdaUpdateWrapper<Order> updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(Order::getOrderId, order.getOrderId()); orderMapper.update(order,updateWrapper); @@ -334,7 +349,7 @@ } } JSONObject orderJson = new JSONObject(config); - Order order = JSONObject.parseObject(JSONObject.toJSONString(orderJson.get("filter")), Order.class); + OrderSearchDTO order = JSONObject.parseObject(JSONObject.toJSONString(orderJson.get("filter")), OrderSearchDTO.class); Map<String,String> sortDate = (Map<String, String>) config.get("sort"); String field = sortDate.get("field").replaceAll("(?<!^)([A-Z])", "_$1").toLowerCase(); String orderBy = sortDate.get("order"); @@ -371,6 +386,12 @@ } //璁㈠崟瀹℃牳 public boolean reviewOrderById(String id, Integer status, String userId, String userName) { + Log log = new Log(); + log.setOperator(userName); + log.setOperatorId(userId); + log.setContent(status.toString()); + log.setFunction("reviewOrderById:"+id); + logService.saveLog(log); Order order = orderMapper.selectOne(new QueryWrapper<Order>().eq("order_id",id)); if(order.getProcessReview()!=2){ throw new ServiceException(Constants.Code_600,"璇ヨ鍗曡繕鏈鏍�"); @@ -383,6 +404,9 @@ } //宸ヨ壓瀹℃牳鐣岄潰瀹℃牳鏇存柊鏁版嵁 public boolean reviewProcessById(String id, Integer status,List<OrderGlassDetail> orderGlassDetails) { + Log log = new Log(); + log.setContent(orderGlassDetails.toString()); + log.setFunction("reviewProcessById:"+id); if(!orderGlassDetails.isEmpty() && status==2){ orderGlassDetails.forEach(orderGlassDetail ->{ double area = Math.round((orderGlassDetail.getChildWidth()*orderGlassDetail.getChildHeight()/1000000) * 100) * 0.01d; @@ -397,7 +421,7 @@ // //璧嬪�艰鍗曞伐鑹鸿〃 // orderProcessDetailMapper.insertOrderProcessDetail(orderProcessDetailList); } - + logService.saveLog(log); return orderMapper.reviewProcessById(id,status); } //宸ヨ壓瀹℃牳鐣岄潰鏁版嵁鏌ヨ @@ -490,9 +514,21 @@ 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; @@ -504,7 +540,7 @@ } - public Map<String,Object> getOrderReport(Integer pageNum, Integer pageSize, List<String> selectDate, OrderDetail orderDetail) { + public Map<String,Object> getOrderReport(Integer pageNum, Integer pageSize, List<String> selectDate, OrderDetail orderDetail, Integer model, Integer scope) { Integer offset = (pageNum-1)*pageSize; String endDate = LocalDate.now().toString(); String startDate = LocalDate.now().minusDays(15).toString(); @@ -516,9 +552,8 @@ endDate = selectDate.get(1); } } - Map<String,Object> map = new HashMap<>(); - map.put("data",orderDetailMapper.getOrderReport(offset, pageSize, startDate, endDate, orderDetail)); + map.put("data",orderDetailMapper.getOrderReport(offset, pageSize, startDate, endDate, orderDetail,model,scope)); map.put("total",orderDetailMapper.getOrderReportTotal(offset, pageSize, startDate, endDate, orderDetail,"order")); List<String> list = new ArrayList<>(); list.add(startDate); @@ -610,6 +645,19 @@ orderProductDetailMap.put("productId",map.get("productId")); orderProductDetailMap.put("productName",map.get("productName")); List<OrderDetail> orderDetails = orderDetailMapper.getOrderProductByProductId(map.get("productId"),orderId); + orderDetails.forEach(orderDetail->{ + + List<OrderGlassDetail> orderGlassDetails = + orderGlassDetailMapper.selectList( + new QueryWrapper<OrderGlassDetail>(). + eq("order_id",orderId). + eq("order_number",orderDetail.getOrderNumber()) + ); + Integer differentSize = orderGlassDetailMapper.getDifferentSizeNumber(orderId,orderDetail.getOrderNumber()); + orderDetail.setDifferentSize(differentSize); + orderDetail.setOrderGlassDetails(orderGlassDetails); + }); + orderProductDetailMap.put("productDetail",orderDetails); orderProductDetail.add(orderProductDetailMap); }); @@ -628,13 +676,24 @@ }else{ orderProductDistinct = orderDetailMapper.getOrderProductDistinctById(orderId); } - List<Map<String,Object>> orderProductDetail = new ArrayList<>(); orderProductDistinct.forEach(map->{ Map<String,Object> orderProductDetailMap = new HashMap<>(); orderProductDetailMap.put("productId",map.get("productId")); orderProductDetailMap.put("productName",map.get("productName")); List<OrderDetail> orderDetails = orderDetailMapper.getOrderProductByProductId(map.get("productId"),orderId); + orderDetails.forEach(orderDetail->{ + + List<OrderGlassDetail> orderGlassDetails = + orderGlassDetailMapper.selectList( + new QueryWrapper<OrderGlassDetail>(). + eq("order_id",orderId). + eq("order_number",orderDetail.getOrderNumber()) + ); + Integer differentSize = orderGlassDetailMapper.getDifferentSizeNumber(orderId,orderDetail.getOrderNumber()); + orderDetail.setDifferentSize(differentSize); + orderDetail.setOrderGlassDetails(orderGlassDetails); + }); orderProductDetailMap.put("productDetail",orderDetails); @@ -812,9 +871,66 @@ return !orderMapper.selectDifferentSize(orderId).isEmpty(); } - public Object processBack(String orderId) { - workOrderMapper.deleteOrderWorkMp(orderId, null); - workOrderMapper.updateWorkType(orderId, 0); - return null; + public Object processBack(String orderId,Integer status) { + //鍒ゆ柇鏄惁杞紭鍖� + if(flowCardMapper.flowCardToOptimizeCount(orderId)>0){ + return "false1"; + } + //鍒ゆ柇鏄惁鏈夋姤宸� + if(flowCardMapper.reportingWorkCountByOrderId(orderId)>0){ + return "false2"; + } + //鍒ゆ柇鏄惁鏈夊簱瀛� + if(orderMapper.searchOrderWarehousing(orderId)>0){ + return "false3"; + } + //閫�鍥炲埌鐢熶骇鍔犲伐鍗� + if(status<5){ + //鏇存柊灏忕墖鏄庣粏琛ㄥ垎鏋剁姸鎬� + flowCardMapper.updateDeleteState(orderId,"all"); + //鍒犻櫎姝よ鍗曞皬鐗囨祦绋嬫姤宸ユ槑缁� + flowCardMapper.deleteReportingWorkByOrderId(orderId); + //鍒犻櫎娴佺▼鍗� + flowCardMapper.deleteFlowCardMp(orderId,"all"); + //鍒犻櫎娴佺▼鍗℃帓搴� + flowCardMapper.deleteflowCardSortByOrderId(orderId); + flowCardMapper.updateProcessingCard(orderId, 0); + } + //閫�鍥炲埌璁㈠崟瀹℃牳鍚� + if(status<4){ + workOrderMapper.deleteOrderWorkMp(orderId, null); + workOrderMapper.updateWorkType(orderId, 0); + } + //閫�鍥炲埌宸ヨ壓瀹℃牳鍚� + if(status<3){ + orderMapper.backReviewOrderById(orderId); + } + //閫�鍥炲埌涓嬪崟鍚� + if(status<2){ + orderMapper.reviewProcessById(orderId,0); + } + //鏃ュ織浼犲叆 + Log log = new Log(); + log.setOperator((String) StpUtil.getLoginId()); + log.setOperatorId((String) StpUtil.getLoginId()); + log.setContent(String.valueOf(status)); + log.setFunction("updateOrderMoney閲戦閲嶇疆:"+orderId); + return true; + } + + public Object scannerGlassInfo(String projectNo) { + 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; + } + } } -- Gitblit v1.8.0