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 | 501 ++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 439 insertions(+), 62 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 32f102c..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,16 +11,22 @@ 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.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.util.*; @@ -34,15 +41,23 @@ private final OrderGlassDetailMapper orderGlassDetailMapper; private final SysErrorService sysErrorService; private final OrderOtherMoneyMapper orderOtherMoneyMapper; + 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) { + 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; this.orderProcessDetailMapper = orderProcessDetailMapper; this.sysErrorService = sysErrorService; this.orderOtherMoneyMapper = orderOtherMoneyMapper; + this.productMapper = productMapper; + this.logService = logService; + this.workOrderMapper = workOrderMapper; + this.flowCardMapper = flowCardMapper; } public boolean saveOrder(Map<String,Object> orderMap) throws Exception { @@ -51,22 +66,34 @@ Order order = JSONObject.parseObject(JSONObject.toJSONString(orderJson.get("title")), Order.class); List<OrderDetail> OrderDetails = JSONArray.parseArray(JSONObject.toJSONString(orderJson.get("detail")), OrderDetail.class); List<OrderOtherMoney> orderOtherMoneyList = JSONArray.parseArray(JSONObject.toJSONString(orderJson.get("otherMoney")), OrderOtherMoney.class); - orderOtherMoneyList = orderOtherMoneyList.stream().filter(o -> o.getColumn().indexOf("M")==0).collect(Collectors.toList()); + if(orderOtherMoneyList != null ){ + orderOtherMoneyList = orderOtherMoneyList.stream().filter(o -> o.getColumn().indexOf("M")==0).collect(Collectors.toList()); + } + boolean saveState = true; //璁剧疆鍥炴粴鐐� Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint(); //鍒ゆ柇浼犲叆id鍙傛暟鏄惁涓虹┖锛屾湭浼犲叆id涓虹┖鎻掑叆璁㈠崟琛紝浼犲叆鏇存柊琛� try{ + Log log = new Log(); + log.setOperator(orderJson.getString("creator")); + log.setOperatorId(orderJson.getString("creatorId")); + log.setContent(orderMap.toString()); + if(order.getOrderId() == null || order.getOrderId().isEmpty()){ insertOrder(order,OrderDetails,orderOtherMoneyList,orderIdType); + log.setFunction("saveOrder鍒涘缓:"+order.getOrderId()); }else { updateOrder(order,OrderDetails,orderOtherMoneyList); + log.setFunction("saveOrder淇敼:"+order.getOrderId()); } + + logService.saveLog(log); }catch (Exception e){ TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint); //灏嗗紓甯镐紶鍏ユ暟鎹簱 SysError sysError = new SysError(); - sysError.setError(e.toString()); + sysError.setError(e.toString()+Arrays.toString(e.getStackTrace())); sysError.setFunc("saveOrder"); sysErrorService.insert(sysError); saveState = false; @@ -85,11 +112,30 @@ Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint(); //鍒ゆ柇浼犲叆id鍙傛暟鏄惁涓虹┖锛屾湭浼犲叆id涓虹┖鎻掑叆璁㈠崟琛紝浼犲叆鏇存柊琛� try{ + Log log = new Log(); + log.setOperator(order.getCreator()); + log.setOperatorId(order.getCreatorId()); + log.setContent(orderMap.toString()); + 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()); + order.setCreateTime(null); orderMapper.update(order,updateWrapper); //淇敼璁㈠崟涓昏〃闈㈢Н涓庡懆闀夸互鍙婇噸閲� orderMapper.updateOrderParameter(order.getOrderId()); + logService.saveLog(log); }catch (Exception e){ TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint); @@ -132,7 +178,7 @@ private String getOrderId(String dateType){ String orderId = null; - if(dateType.equals("day")){ + if(dateType==null || dateType.equals("day")){ Integer maxOrderId = orderMapper.selectMaxOrderId(); //鏌ヨ璁㈠崟id锛屽苟涓旇嚜澧� String formattedNumber = String.format("%02d", maxOrderId+1); @@ -149,6 +195,13 @@ String formattedDate = dateFormat.format(currentDate); orderId = "NG"+formattedDate+formattedNumber; + }else if(dateType.equals("year")){ + Integer maxOrderId = orderMapper.selectMaxOrderIdByYear(); + String formattedNumber = String.format("%06d", maxOrderId+1); + Date currentDate = new Date(); + SimpleDateFormat dateFormat = new SimpleDateFormat("yy"); + String formattedDate = dateFormat.format(currentDate); + orderId = "NG"+formattedDate+formattedNumber; } return orderId; @@ -156,38 +209,53 @@ //淇敼璁㈠崟鏁版嵁锛屽苟涓旈噸鏂扮敓鎴愬涓壇琛ㄦ暟鎹� - 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); - //鍒犻櫎璁㈠崟鏄庣粏琛� - orderDetailMapper.delete(new LambdaQueryWrapper<OrderDetail>().eq(OrderDetail::getOrderId, order.getOrderId())); - //鍒犻櫎璁㈠崟灏忕墖琛� - orderGlassDetailMapper.delete(new LambdaQueryWrapper<OrderGlassDetail>().eq(OrderGlassDetail::getOrderId, order.getOrderId())); - //鍒犻櫎鍏朵粬閲戦鏄庣粏琛� - orderOtherMoneyMapper.delete(new LambdaQueryWrapper<OrderOtherMoney>().eq(OrderOtherMoney::getOrderId, order.getOrderId())); + //鍒犻櫎璁㈠崟鏄庣粏琛� + orderDetailMapper.delete(new LambdaQueryWrapper<OrderDetail>().eq(OrderDetail::getOrderId, order.getOrderId())); + //鍒犻櫎璁㈠崟灏忕墖琛� + orderGlassDetailMapper.delete(new LambdaQueryWrapper<OrderGlassDetail>().eq(OrderGlassDetail::getOrderId, order.getOrderId())); + //鍒犻櫎鍏朵粬閲戦鏄庣粏琛� + orderOtherMoneyMapper.delete(new LambdaQueryWrapper<OrderOtherMoney>().eq(OrderOtherMoney::getOrderId, order.getOrderId())); + //鍒犻櫎璁㈠崟宸ヨ壓琛� + // orderProcessDetailMapper.delete(new LambdaQueryWrapper<OrderProcessDetail>().eq(OrderProcessDetail::getOrderId, order.getOrderId())); - //鍒犻櫎璁㈠崟宸ヨ壓琛� - // orderProcessDetailMapper.delete(new LambdaQueryWrapper<OrderProcessDetail>().eq(OrderProcessDetail::getOrderId, order.getOrderId())); - insertOtherDetail(order.getOrderId(),OrderDetails,orderOtherMoneyList); + insertOtherDetail(order.getOrderId(),OrderDetails,orderOtherMoneyList); } + //鎻掑叆鍏朵粬鍓〃鏁版嵁锛岃鍏朵粬鏂规硶寮曠敤 public void insertOtherDetail(String orderId,List<OrderDetail> OrderDetails,List<OrderOtherMoney> orderOtherMoneyList) { - //鍏堟妸鍏朵粬閲戦鍓〃鐨勯噾棰濅笌鏁伴噺缃�0 - orderOtherMoneyList.forEach(orderOtherMoney -> { - orderOtherMoney.setQuantity(0.0); - }); + if(orderOtherMoneyList!=null){ + orderOtherMoneyList.forEach(orderOtherMoney -> { + orderOtherMoney.setQuantity(0.0); + }); + } + //寰幆缁欒鍗曟槑缁嗚〃瀛楁娣诲姞搴忓彿鍜屽懆闀� for (int i = 0; i < OrderDetails.size(); i++) { OrderDetails.get(i).setOrderNumber(i+1); OrderDetails.get(i).setOrderId(orderId); OrderDetails.get(i).setPerimeter(Double.valueOf(String.format("%.3f",(OrderDetails.get(i).getWidth()+OrderDetails.get(i).getHeight())*2/1000*OrderDetails.get(i).getQuantity()))); - OrderDetails.get(i).setWeight(1.0); + OrderDetails.get(i).setMonolithicPerimeter(Double.valueOf(String.format("%.3f",(OrderDetails.get(i).getWidth()+OrderDetails.get(i).getHeight())*2/1000))); + Product product = productMapper.selectById(OrderDetails.get(i).getProductId()); + + OrderDetails.get(i).setWeight(Double.valueOf(String.format("%.2f",product.getThickness()*OrderDetails.get(i).getWidth()*OrderDetails.get(i).getHeight()/1000000*2.5))); if(OrderDetails.get(i).getBendRadius()!=null && OrderDetails.get(i).getBendRadius()!=0){ //鑾峰彇寮挗寮у害 Double bendRadius = OrderDetails.get(i).getBendRadius(); @@ -201,22 +269,26 @@ Map<String,Object> otherColumns = JSON.parseObject(OrderDetails.get(i).getOtherColumns(), new TypeReference<Map<String, Object>>(){}); int finalI = i; - if(otherColumns!=null){ + otherColumns.values().removeIf(value -> value == null || value.equals("")); + OrderDetails.get(i).setOtherColumns(JSON.toJSONString(otherColumns)); + otherColumns.forEach((key, value) ->{ - if(value!=null && key.contains("M")) { + + if(value!=null && !value.equals("") && key.contains("M")) { orderOtherMoneyList.forEach(orderOtherMoney -> { if (orderOtherMoney.getColumn().equals(key)) { - orderOtherMoney.setQuantity(orderOtherMoney.getQuantity()+(Double.parseDouble((String) value) * OrderDetails.get(finalI).getQuantity())); + orderOtherMoney.setQuantity( + orderOtherMoney.getQuantity()+(Double.parseDouble((String) value) * OrderDetails.get(finalI).getQuantity())); } }); } }); - }else if(OrderDetails.get(i).getOtherColumns()==null){ - + }else{ OrderDetails.get(i).setOtherColumns("{}"); } + } @@ -226,14 +298,21 @@ orderDetailMapper.insertBatch(OrderDetails); //寰�灏忕墖琛ㄤ紶鍏ヤ骇鍝佹暟鎹� orderGlassDetailMapper.insertOrderGlassDetail(orderId); - orderOtherMoneyList.forEach(orderOtherMoney ->{ - orderOtherMoney.setId(null); - orderOtherMoney.setOrderId(orderId); - if(orderOtherMoney.getQuantity()!=null && orderOtherMoney.getPrice()!=null){ - orderOtherMoney.setMoney((orderOtherMoney.getQuantity()*orderOtherMoney.getPrice())); - } - orderOtherMoneyMapper.insert(orderOtherMoney); - }); + if(orderOtherMoneyList!=null){ + orderOtherMoneyList.forEach(orderOtherMoney ->{ + orderOtherMoney.setId(null); + orderOtherMoney.setOrderId(orderId); + if(orderOtherMoney.getQuantity()!=null && orderOtherMoney.getPrice()!=null){ + BigDecimal getQuantity= BigDecimal.valueOf(orderOtherMoney.getQuantity()); + BigDecimal getPrice= BigDecimal.valueOf(orderOtherMoney.getPrice()); + orderOtherMoney.setMoney(getQuantity.multiply(getPrice).setScale(2, RoundingMode.HALF_UP).doubleValue()); + }else { + orderOtherMoney.setMoney(0.0); + } + orderOtherMoneyMapper.insert(orderOtherMoney); + }); + } + //淇敼璁㈠崟涓昏〃闈㈢Н涓庡懆闀夸互鍙婇噸閲� orderMapper.updateOrderParameter(orderId); @@ -257,7 +336,7 @@ } //鏌ヨ鑾峰彇鍒楄〃 - public Map<String,Object> getOrderList(Integer pageNum, Integer pageSize, List<String> selectDate, Order order,Integer orderType) { + public Map<String,Object> getOrderList(Integer pageNum, Integer pageSize, List<String> selectDate, Map<String,Object> config,Integer orderType) { Integer offset = (pageNum-1)*pageSize; String endDate = LocalDate.now().toString(); String startDate = LocalDate.now().minusDays(15).toString(); @@ -269,9 +348,14 @@ endDate = selectDate.get(1); } } + JSONObject orderJson = new JSONObject(config); + 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"); Map<String,Object> map = new HashMap<>(); - map.put("data",orderMapper.getOrderList(offset, pageSize, startDate, endDate, order,orderType)); + map.put("data",orderMapper.getOrderList(offset, pageSize, startDate, endDate, order,orderType, field, orderBy)); map.put("total",orderMapper.getPageTotal(offset, pageSize, startDate, endDate, order,orderType)); List<String> list = new ArrayList<>(); list.add(startDate); @@ -302,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,"璇ヨ鍗曡繕鏈鏍�"); @@ -314,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; @@ -328,7 +421,7 @@ // //璧嬪�艰鍗曞伐鑹鸿〃 // orderProcessDetailMapper.insertOrderProcessDetail(orderProcessDetailList); } - + logService.saveLog(log); return orderMapper.reviewProcessById(id,status); } //宸ヨ壓瀹℃牳鐣岄潰鏁版嵁鏌ヨ @@ -346,30 +439,97 @@ Order order = JSONObject.parseObject(JSONObject.toJSONString(jsonObject.get("order")), Order.class); List<OrderDetail> OrderDetails = JSONArray.parseArray(JSONObject.toJSONString(jsonObject.get("detail")), OrderDetail.class); List<OrderOtherMoney> orderOtherMoneyList = JSONArray.parseArray(JSONObject.toJSONString(jsonObject.get("otherMoney")), OrderOtherMoney.class); + + if(orderOtherMoneyList != null ){ + orderOtherMoneyList = orderOtherMoneyList.stream().filter(o -> o.getColumn().indexOf("M")==0).collect(Collectors.toList()); + } + if(orderOtherMoneyList!=null){ + orderOtherMoneyList.forEach(orderOtherMoney -> { + orderOtherMoney.setQuantity(0.0); + }); + } + + Log log = new Log(); + log.setOperator(order.getCreator()); + log.setOperatorId(order.getCreatorId()); + log.setContent(jsonObject.toString()); + log.setFunction("updateOrderMoney閲戦閲嶇疆:"+order.getOrderId()); + + //鍒犻櫎鍏朵粬閲戦鏄庣粏琛� + orderOtherMoneyMapper.delete(new LambdaQueryWrapper<OrderOtherMoney>().eq(OrderOtherMoney::getOrderId, order.getOrderId())); + List<OrderOtherMoney> orderOtherMoneyLists=orderOtherMoneyList; + double money = 0; for (OrderDetail orderDetail : OrderDetails) { orderDetail = updateOrderMoneyComputed(orderDetail,order.getCalculateType()); - money+= orderDetail.getGrossAmount(); - } - orderOtherMoneyList.forEach(orderOtherMoney -> { - if(orderOtherMoney.getQuantity()!=null && orderOtherMoney.getPrice()!=null){ - orderOtherMoney.setMoney((orderOtherMoney.getQuantity()*orderOtherMoney.getPrice())); + BigDecimal getGrossAmount= BigDecimal.valueOf(orderDetail.getGrossAmount()); + money+=getGrossAmount.doubleValue(); + + Map<String,Object> otherColumns = JSON.parseObject(orderDetail.getOtherColumns(), new TypeReference<Map<String, Object>>(){}); + if(otherColumns!=null){ + otherColumns.values().removeIf(value -> value == null || value.equals("")); + orderDetail.setOtherColumns(JSON.toJSONString(otherColumns)); + + OrderDetail finalOrderDetail = orderDetail; + otherColumns.forEach((key, value) ->{ + + if(value!=null && !value.equals("") && key.contains("M")) { + orderOtherMoneyLists.forEach(orderOtherMoney -> { + if (orderOtherMoney.getColumn().equals(key)) { + orderOtherMoney.setQuantity( + orderOtherMoney.getQuantity()+(Double.parseDouble((String) value) * finalOrderDetail.getQuantity())); + } + }); + } + + }); + }else{ + orderDetail.setOtherColumns("{}"); } - orderOtherMoneyMapper.update(orderOtherMoney,new QueryWrapper<OrderOtherMoney>() - .eq("order_id",orderOtherMoney.getOrderId()) - .eq("`column`",orderOtherMoney.getColumn())); - }); + + } + + if(orderOtherMoneyLists!=null){ + orderOtherMoneyLists.forEach(orderOtherMoney ->{ + orderOtherMoney.setId(null); + orderOtherMoney.setOrderId(order.getOrderId()); + if(orderOtherMoney.getQuantity()!=null && orderOtherMoney.getPrice()!=null){ + orderOtherMoney.setMoney((orderOtherMoney.getQuantity()*orderOtherMoney.getPrice())); + }else { + orderOtherMoney.setMoney(0.0); + } + orderOtherMoneyMapper.insert(orderOtherMoney); + }); + } + order.setMoney(money+orderOtherMoneyMapper.selectGrossAmount(order.getOrderId())); + order.setOtherMoney(orderOtherMoneyMapper.selectGrossAmount(order.getOrderId())); orderMapper.updateMoney(order); orderDetailMapper.updateOrderMoney(OrderDetails); + logService.saveLog(log); return false; } private OrderDetail updateOrderMoneyComputed(OrderDetail orderDetail, Integer calculateType) { + 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(orderDetail.getPrice() * orderDetail.getQuantity()); - } else { - orderDetail.setGrossAmount(orderDetail.getComputeGrossArea() * orderDetail.getPrice()); + orderDetail.setGrossAmount(getPrice.multiply(getQuantity).setScale(2, RoundingMode.HALF_UP).doubleValue()); + }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; } @@ -380,7 +540,34 @@ } - 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(); + if(selectDate !=null && selectDate.size()==2){ + if(!selectDate.get(0).isEmpty()){ + startDate = selectDate.get(0); + } + if(!selectDate.get(1).isEmpty()){ + endDate = selectDate.get(1); + } + } + Map<String,Object> map = new HashMap<>(); + 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); + list.add(endDate); + map.put("selectDate",list); +// map.put("total",orderMapper.getPageTotal(offset, pageSize, startDate, endDate, orderDetail)); + return map; + } + + public List<OrderDTO> exportOrderReport(List<LocalDate> dates) { + return orderDetailMapper.exportOrderReport(dates); + } + + public Map<String,Object> getOrderSummaryReport(Integer pageNum, Integer pageSize, List<String> selectDate, Order order) { Integer offset = (pageNum-1)*pageSize; String endDate = LocalDate.now().toString(); String startDate = LocalDate.now().minusDays(15).toString(); @@ -394,8 +581,8 @@ } Map<String,Object> map = new HashMap<>(); - map.put("data",orderDetailMapper.getOrderReport(offset, pageSize, startDate, endDate, orderDetail)); - map.put("total",orderDetailMapper.getOrderReportTotal(offset, pageSize, startDate, endDate, orderDetail,"order")); + map.put("data",orderDetailMapper.getOrderSummaryReport(offset, pageSize, startDate, endDate, order)); + map.put("total",orderDetailMapper.getOrderSummaryReportTotal(offset, pageSize, startDate, endDate, order,"order")); List<String> list = new ArrayList<>(); list.add(startDate); list.add(endDate); @@ -404,8 +591,8 @@ return map; } - public List<OrderDTO> exportOrderReport(List<LocalDate> dates) { - return orderDetailMapper.exportOrderReport(dates); + public List<Order> exportOrderSummary(List<LocalDate> dates) { + return orderDetailMapper.exportOrderSummary(dates); } public Map<String,Object> getOrderProductSummary(Integer pageNum, Integer pageSize, List<String> selectDate, OrderDetail orderDetail) { @@ -460,12 +647,15 @@ List<OrderDetail> orderDetails = orderDetailMapper.getOrderProductByProductId(map.get("productId"),orderId); orderDetails.forEach(orderDetail->{ - orderDetail.setGrossArea( - Double.parseDouble(String.format("%.3f",Double.parseDouble( - String.format("%.3f", - orderDetail.getWidth()*orderDetail.getHeight()/1000000) - ) * orderDetail.getQuantity())) - ); + 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); @@ -486,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); @@ -503,6 +704,56 @@ returns.put("orderProductDetail",orderProductDetail); returns.put("order",orderMapper.selectOne(new QueryWrapper<Order>().eq("order_id",orderId))); + return returns; + } + + public Object printOrderProductGlassDetailMonolithic(String orderId,List<String> productId) { + List<Map<String,Object>> orderProductDistinct; + if (productId.size()>0){ + orderProductDistinct = orderDetailMapper.getOrderProductDistinctByIds(orderId,productId); + }else{ + orderProductDistinct = orderDetailMapper.getOrderProductDistinctById(orderId); + } + + Map<String,Object> returns = new HashMap<>(); + returns.put("order",orderMapper.selectOne(new QueryWrapper<Order>().eq("order_id",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<Map<String,Object>> orderDetails = orderDetailMapper.getOrderProductByProductIds(map.get("productId"),orderId); + List<Map<String,Object>> orderProductDetail1 = new ArrayList<>(); + + for(Map<String,Object> objectMap:orderDetails){ + Map<String,Object> orderProductDetailMap1 = new HashMap<>(); + orderProductDetailMap1.put("detail",objectMap.get("detail").toString()); + List<Map<String,Object>> orderGlassDetails =orderGlassDetailMapper.getOrderGlassDetailByProductId(objectMap.get("order_id").toString(), + objectMap.get("detail").toString(), Long.valueOf(objectMap.get("product_id").toString())); + orderProductDetailMap1.put("orderGlassDetails",orderGlassDetails); + orderProductDetail1.add(orderProductDetailMap1); + } + + /*orderDetails.forEach(orderDetail->{ + List<OrderGlassDetail> glassChildList=orderGlassDetailMapper.getOrderGlassDetailByProductIdGlassChild(orderDetail.getOrderId(),orderDetail.getOrderNumber()); + + for (OrderGlassDetail glassChildLists:glassChildList){ + orderProductDetailMap1.put("glassChild",glassChildLists.getGlassChild()); + List<OrderGlassDetail> orderGlassDetails =orderGlassDetailMapper.getOrderGlassDetailByProductId(orderDetail.getOrderId(),orderDetail.getOrderNumber(),glassChildLists.getGlassChild()); + Integer differentSize = orderGlassDetailMapper.getDifferentSizeNumber(orderId,orderDetail.getOrderNumber()); + orderDetail.setDifferentSize(differentSize); + orderDetail.setOrderGlassDetails(orderGlassDetails); + orderProductDetailMap1.put("orderGlassDetail",orderGlassDetails); + } + orderProductDetail1.add(orderProductDetailMap1); + + });*/ + orderProductDetailMap.put("productDetail",orderProductDetail1); + orderProductDetail.add(orderProductDetailMap); + }); + returns.put("orderDetail",orderProductDetail); return returns; } @@ -519,10 +770,11 @@ List<OrderDetail> orderDetails = orderDetailMapper.getOrderProductByProductId(map.get("productId"),orderId); orderDetails.forEach(orderDetail->{ orderDetail.setGrossArea( - Double.parseDouble(String.format("%.3f",Double.parseDouble( + /*Double.parseDouble(String.format("%.3f",Double.parseDouble( String.format("%.3f", orderDetail.getWidth()*orderDetail.getHeight()/1000000) - ) * orderDetail.getQuantity())) + ) * orderDetail.getQuantity()))*/ + orderDetail.getComputeGrossArea() ); List<OrderGlassDetail> orderGlassDetails = @@ -556,4 +808,129 @@ public boolean updateOrderPrintNumber(String orderId) { return orderMapper.updateOrderPrintNumber(orderId); } + + public String updateOrderId(Map<String, Object> map) { + String saveState = "true"; + JSONObject orderJson = new JSONObject(map); + String oldOrderId = orderJson.getString("oldOrderId"); + String newOrderId = orderJson.getString("newOrderId"); + String orderIdType = orderJson.getString("orderIdType"); + + Log log = new Log(); + log.setContent(map.toString()); + log.setFunction("updateOrderId淇敼璁㈠崟鍙�"); + log.setOperator(orderJson.getString("creator")); + + + if(!Objects.equals(newOrderId, oldOrderId)){ + if(newOrderId.length()!=10){ + return "false4"; + } + if(!newOrderId.substring(2, 10).matches("\\d+")){ + return "false5"; + } + if(Objects.equals(orderIdType, "day")){ + if(orderMapper.selectOrderIdDay(oldOrderId)==1){ + return "false6"; + } + }else if(Objects.equals(orderIdType, "month")){ + if(orderMapper.selectOrderIdMonth(oldOrderId)==1){ + return "false6"; + } + }else if(Objects.equals(orderIdType, "year")){ + if(orderMapper.selectOrderIdYear(oldOrderId)==1){ + return "false6"; + } + } + String substring = newOrderId.substring(1, 3); + Integer substringInt = Integer.parseInt(newOrderId.substring(2, 10)); + if(!substring.equals("NG")){ + substring="NG"; + } + //澶т簬杈撳叆璁㈠崟鍙风殑鏁伴噺 + Integer count1 = orderMapper.selectOrderIdMin(substringInt); + //杈撳叆璁㈠崟鍙峰瓨鍦ㄧ殑鏁伴噺 + Integer count2 = orderMapper.selectOrderIdIs(substringInt); + if(count1>0 && count2==0){ + orderMapper.updateOrderId(oldOrderId,newOrderId); + saveState= "true"; + logService.saveLog(log); + }else if(count1==0){ + saveState= "false1"; + ; + }else if(count2>0){ + saveState= "false2"; + } + }else{ + saveState= "false3"; + } + return saveState; + } + + public Boolean selectDifferentSize(String orderId) { + return !orderMapper.selectDifferentSize(orderId).isEmpty(); + } + + 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