| | |
| | | import com.example.erp.mapper.sd.*; |
| | | 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 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.DecimalFormat; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDate; |
| | | import java.util.*; |
| | |
| | | log.setContent(orderMap.toString()); |
| | | |
| | | if(order.getOrderId() == null || order.getOrderId().isEmpty()){ |
| | | insertOrder(order,OrderDetails,orderOtherMoneyList,orderIdType); |
| | | insertOrder(order,OrderDetails,orderOtherMoneyList,orderIdType, (Map<String, String>) orderMap.get("position")); |
| | | log.setFunction("saveOrder创建:"+order.getOrderId()); |
| | | }else { |
| | | updateOrder(order,OrderDetails,orderOtherMoneyList); |
| | | updateOrder(order,OrderDetails,orderOtherMoneyList,(Map<String, String>) orderMap.get("position")); |
| | | log.setFunction("saveOrder修改:"+order.getOrderId()); |
| | | } |
| | | |
| | | logService.saveLog(log); |
| | | }catch (Exception e){ |
| | | TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint); |
| | |
| | | sysError.setFunc("saveOrder"); |
| | | sysErrorService.insert(sysError); |
| | | saveState = false; |
| | | |
| | | //throw new Exception(); |
| | | } |
| | | return saveState; |
| | |
| | | public boolean saveOrderTitle(Map<String,Object> orderMap) throws Exception { |
| | | JSONObject orderJson = new JSONObject(orderMap); |
| | | Order order = JSONObject.parseObject(JSONObject.toJSONString(orderJson.get("title")), Order.class); |
| | | |
| | | boolean saveState = true; |
| | | //设置回滚点 |
| | | Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint(); |
| | |
| | | sysError.setFunc("saveOrder"); |
| | | sysErrorService.insert(sysError); |
| | | saveState = false; |
| | | |
| | | //throw new Exception(); |
| | | } |
| | | return saveState; |
| | |
| | | return map; |
| | | } |
| | | //生成订单数据 |
| | | public void insertOrder(Order order, List<OrderDetail> OrderDetails, List<OrderOtherMoney> orderOtherMoneyList, String orderIdType) { |
| | | public void insertOrder(Order order, List<OrderDetail> OrderDetails, List<OrderOtherMoney> orderOtherMoneyList, String orderIdType, Map<String,String> position) { |
| | | //根据传入的当前月份或者当天生成订单id |
| | | String orderId = getOrderId(orderIdType); |
| | | //往主表插数据 |
| | | order.setOrderId(orderId); |
| | | order.setCreateOrder(2); |
| | | orderMapper.insert(order); |
| | | |
| | | insertOtherDetail(orderId,OrderDetails,orderOtherMoneyList); |
| | | insertOtherDetail(orderId,OrderDetails,orderOtherMoneyList,position); |
| | | } |
| | | |
| | | private String getOrderId(String dateType){ |
| | |
| | | String formattedDate = dateFormat.format(currentDate); |
| | | orderId = "NG"+formattedDate+formattedNumber; |
| | | } |
| | | |
| | | return orderId; |
| | | } |
| | | |
| | | |
| | | //修改订单数据,并且重新生成多个副表数据 |
| | | public void updateOrder(Order order,List<OrderDetail> OrderDetails,List<OrderOtherMoney> orderOtherMoneyList) throws Exception { |
| | | public void updateOrder(Order order, List<OrderDetail> OrderDetails, List<OrderOtherMoney> orderOtherMoneyList, Map<String, String> position) throws Exception { |
| | | Order oldOrder = orderMapper.selectOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderId,order.getOrderId())); |
| | | if(oldOrder.getProcessReview()==2){ |
| | | throw new ServiceException(Constants.Code_600,"该订单已经审核,无法修改"); |
| | |
| | | |
| | | orderDetailMapper.deleteOrderFile(order.getOrderId()); |
| | | |
| | | insertOtherDetail(order.getOrderId(),OrderDetails,orderOtherMoneyList); |
| | | insertOtherDetail(order.getOrderId(),OrderDetails,orderOtherMoneyList, position); |
| | | } |
| | | |
| | | |
| | | |
| | | //插入其他副表数据,被其他方法引用 |
| | | public void insertOtherDetail(String orderId,List<OrderDetail> OrderDetails,List<OrderOtherMoney> orderOtherMoneyList) { |
| | | public void insertOtherDetail(String orderId, List<OrderDetail> OrderDetails, List<OrderOtherMoney> orderOtherMoneyList, Map<String, String> position) { |
| | | //先把其他金额副表的金额与数量置0 |
| | | if(orderOtherMoneyList!=null){ |
| | | orderOtherMoneyList.forEach(orderOtherMoney -> { |
| | |
| | | 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 && !value.equals("") && key.contains("M")) { |
| | |
| | | }else{ |
| | | OrderDetails.get(i).setOtherColumns("{}"); |
| | | } |
| | | |
| | | if(OrderDetails.get(i).getFileName()!=null){ |
| | | orderMapper.saveOrderFile(OrderDetails.get(i).getFileName(), OrderDetails.get(i).getFileData(),orderId,OrderDetails.get(i).getOrderNumber()); |
| | | OrderDetails.get(i).setFileData(null); |
| | | if(OrderDetails.get(i).getFileName()!=null&&!OrderDetails.get(i).getFileName().trim().isEmpty()){ |
| | | orderMapper.saveOrderFile(OrderDetails.get(i).getFileName(), OrderDetails.get(i).getFileData(),orderId,OrderDetails.get(i).getOrderNumber(),OrderDetails.get(i).getFileJson()); |
| | | } |
| | | if(OrderDetails.get(i).getShape()==null){ |
| | | OrderDetails.get(i).setShape("1"); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | //往明细表插数据 |
| | | orderDetailMapper.insertBatch(OrderDetails); |
| | | //往小片表传入产品数据 |
| | | orderGlassDetailMapper.insertOrderGlassDetail(orderId); |
| | | |
| | | orderGlassDetailMapper.insertOrderGlassDetail(orderId,position.get("outside"),position.get("inside")); |
| | | //修改成品拱高 |
| | | List<OrderDetail> orderDetails = orderDetailMapper |
| | | .selectList(new LambdaQueryWrapper<OrderDetail>() |
| | |
| | | |
| | | orderDetails.forEach(orderDetail -> { |
| | | //获取最小弧度 |
| | | OrderGlassDetail orderGlassDetail = orderGlassDetailMapper |
| | | .selectOne(new LambdaQueryWrapper<OrderGlassDetail>() |
| | | List<OrderGlassDetail> orderGlassDetails = orderGlassDetailMapper |
| | | .selectList(new LambdaQueryWrapper<OrderGlassDetail>() |
| | | .eq(OrderGlassDetail::getOrderId, orderId) |
| | | .eq(OrderGlassDetail::getOrderNumber, orderDetail.getOrderNumber()) |
| | | .orderByDesc(OrderGlassDetail::getArc) |
| | | .last("limit 1") |
| | | ); |
| | | //获取当前序号产品Math.cos( |
| | | Product product = productMapper.selectById(orderDetail.getProductId()); |
| | | //内半径 |
| | | Double radius = orderDetail.getBendRadius() - product.getTotalThickness(); |
| | | |
| | | //内片内弧长 |
| | | Double innerArc = orderGlassDetail.getArc() |
| | | -orderGlassDetail.getArc()*product.getTotalThickness()/orderDetail.getBendRadius(); |
| | | for(OrderGlassDetail orderGlassDetail:orderGlassDetails) { |
| | | //获取当前层数与之前层数的厚度 |
| | | Double glassThickness = productMapper |
| | | .getGlassThickness(orderDetail.getProductId(), orderGlassDetail.getTechnologyNumber()); |
| | | //内半径 |
| | | Double radius = orderDetail.getBendRadius() - glassThickness; |
| | | |
| | | //拱高 |
| | | String archRiseS = String.format("%.1f",radius-radius*Math.cos(innerArc/2/radius)); |
| | | Double archRise = Double.parseDouble(archRiseS); |
| | | orderDetail.setArchRise(archRise); |
| | | |
| | | orderDetailMapper.update(null,new LambdaUpdateWrapper<OrderDetail>() |
| | | .set(OrderDetail::getArchRise,archRise) |
| | | .eq(OrderDetail::getId, orderDetail.getId()) |
| | | ); |
| | | //内片内弧长 |
| | | Double innerArc = orderGlassDetails.get(0).getArc() |
| | | - orderGlassDetails.get(0).getArc() * glassThickness / orderDetail.getBendRadius(); |
| | | |
| | | //拱高 |
| | | String archRiseS = String.format("%.1f", radius - radius * Math.cos(innerArc / 2 / radius)); |
| | | Double archRise = Double.parseDouble(archRiseS); |
| | | orderGlassDetailMapper.update(null, new LambdaUpdateWrapper<OrderGlassDetail>() |
| | | .set(OrderGlassDetail::getArchRise, archRise) |
| | | .eq(OrderGlassDetail::getId, orderGlassDetail.getId()) |
| | | ); |
| | | |
| | | // orderDetailMapper.update(null,new LambdaUpdateWrapper<OrderDetail>() |
| | | // .set(OrderDetail::getArchRise,archRise) |
| | | // .eq(OrderDetail::getId, orderDetail.getId()) |
| | | } |
| | | |
| | | }); |
| | | |
| | |
| | | |
| | | //修改订单主表面积与周长以及重量 |
| | | orderMapper.updateOrderParameter(orderId); |
| | | |
| | | |
| | | } |
| | | |
| | | public static List<OrderProcessDetail> getOrderProcessDetails(List<OrderGlassDetail> orderGlassDetails) { |
| | |
| | | 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(); |
| | | String startDate = LocalDate.now().minusDays(365).toString(); |
| | | if(selectDate !=null && selectDate.size()==2){ |
| | | if(!selectDate.get(0).isEmpty()){ |
| | | startDate = selectDate.get(0); |
| | |
| | | Order order = orderMapper.selectOne(new QueryWrapper<Order>().eq("order_id",id)); |
| | | List<OrderDetail> orderDetails = orderDetailMapper.selectList(new QueryWrapper<OrderDetail>().eq("order_id",id)); |
| | | List<OrderOtherMoney> orderOtherMoneyList = orderOtherMoneyMapper.findById(id); |
| | | |
| | | |
| | | List<Map<String,String>> orderFileList = orderMapper.selectOrderFileList(id); |
| | | Map<String,Object> map = new HashMap<>(); |
| | | map.put("order",order); |
| | | map.put("orderDetails",orderDetails); |
| | | map.put("orderOtherMoneyList",orderOtherMoneyList); |
| | | map.put("orderFile",orderFileList); |
| | | return map; |
| | | } |
| | | //订单审核 |
| | |
| | | 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(); |
| | | String startDate = LocalDate.now().minusDays(30).toString(); |
| | | if(selectDate !=null && selectDate.size()==2){ |
| | | if(!selectDate.get(0).isEmpty()){ |
| | | startDate = selectDate.get(0); |
| | |
| | | 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(); |
| | | String startDate = LocalDate.now().minusDays(30).toString(); |
| | | if(selectDate !=null && selectDate.size()==2){ |
| | | if(!selectDate.get(0).isEmpty()){ |
| | | startDate = selectDate.get(0); |
| | |
| | | public Map<String,Object> getOrderProductSummary(Integer pageNum, Integer pageSize, List<String> selectDate, OrderDetail orderDetail) { |
| | | Integer offset = (pageNum-1)*pageSize; |
| | | String endDate = LocalDate.now().toString(); |
| | | String startDate = LocalDate.now().minusDays(15).toString(); |
| | | String startDate = LocalDate.now().minusDays(30).toString(); |
| | | if(selectDate !=null && selectDate.size()==2){ |
| | | if(!selectDate.get(0).isEmpty()){ |
| | | startDate = selectDate.get(0); |
| | |
| | | }); |
| | | returns.put("orderDetail",orderProductDetail); |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | return returns; |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | public boolean updateOrderPrintNumber(String orderId) { |
| | |
| | | byte[] dxfData = Base64.getDecoder().decode(fileData); |
| | | String orderId="NG25010101"; |
| | | Integer orderNumber=1; |
| | | orderMapper.saveOrderFile(fileName, fileData,orderId,orderNumber); |
| | | //orderMapper.saveOrderFile(fileName, fileData,orderId,orderNumber); |
| | | return true; |
| | | } |
| | | |
| | |
| | | map.put("data",orderMapper.selectOrderFile(orderId,orderNumber)); |
| | | return map; |
| | | } |
| | | |
| | | public boolean updateOrderFile(JSONObject object) throws JsonProcessingException { |
| | | String orderId = ""; |
| | | if (object.get("orderId") != null) { |
| | | orderId = object.get("orderId").toString(); |
| | | } |
| | | int orderNumber =0; |
| | | if (object.get("orderNumber") != null) { |
| | | orderNumber = Integer.parseInt(object.get("orderNumber").toString()); |
| | | } |
| | | String dataBase64 = ""; |
| | | if (object.get("dataBase64") != null) { |
| | | dataBase64 = object.get("dataBase64").toString(); |
| | | } |
| | | String fileJson = null; |
| | | ObjectMapper om = new ObjectMapper(); |
| | | if (object.get("fileJson") != null) { |
| | | fileJson = om.writeValueAsString(object.get("fileJson")); |
| | | } |
| | | Map<String,String> orderFile =orderMapper.selectOrderFile(orderId,orderNumber); |
| | | if(orderFile!=null){ |
| | | orderMapper.updateOrderFile("map.dxf", dataBase64,orderId,orderNumber,fileJson); |
| | | }else{ |
| | | orderMapper.saveOrderFile("map.dxf", dataBase64,orderId,orderNumber,fileJson); |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | public Map<String,Object> appGetOrderList(List<String> dates) { |
| | | //设置当前时间 |
| | | String endDate = LocalDate.now().toString(); |
| | | String startDate = LocalDate.now().minusDays(30).toString(); |
| | | if(dates !=null && dates.size()==2){ |
| | | if(dates.get(0) != null){ |
| | | startDate = String.valueOf(dates.get(0)); |
| | | } |
| | | if(dates.get(1) != null){ |
| | | endDate = String.valueOf(dates.get(1)); |
| | | } |
| | | } |
| | | List<String> date = new ArrayList<>(); |
| | | date.add(startDate); |
| | | date.add(endDate); |
| | | |
| | | List<Order> list = orderMapper.selectList(new LambdaQueryWrapper<Order>() |
| | | .apply("create_order > 0") |
| | | .apply("date(create_time) between {0} and {1}",startDate, endDate) |
| | | ); |
| | | Integer quantity = 0; |
| | | Double area = 0.00; |
| | | Double perimeter = 0.00; |
| | | for(Order order:list){ |
| | | quantity += Integer.parseInt(String.valueOf(order.getQuantity())); |
| | | area += Double.parseDouble(String.valueOf(order.getArea())); |
| | | perimeter += order.getPerimeter(); |
| | | } |
| | | Map<String, Object> totalSum = new HashMap<>(); |
| | | DecimalFormat df = new DecimalFormat("#.00"); |
| | | totalSum.put("quantity",quantity); |
| | | totalSum.put("area", df.format(area)); |
| | | totalSum.put("perimeter", df.format(perimeter)); |
| | | totalSum.put("count", list.size()); |
| | | |
| | | |
| | | Map<String,Object> map = new HashMap<>(); |
| | | map.put("data",list); |
| | | map.put("date",date); |
| | | map.put("totalSum",totalSum); |
| | | |
| | | return map; |
| | | } |
| | | } |