| | |
| | | |
| | | 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.*; |
| | |
| | | private final WorkOrderMapper workOrderMapper; |
| | | private final FlowCardMapper flowCardMapper; |
| | | |
| | | private final BasicOtherMoneyMapper basicOtherMoneyMapper; |
| | | |
| | | private final OrderProcessDetailMapper orderProcessDetailMapper; |
| | | public OrderService(OrderMapper orderMapper, OrderDetailMapper orderDetailMapper, OrderGlassDetailMapper orderGlassDetailMapper, OrderProcessDetailMapper orderProcessDetailMapper, SysErrorService sysErrorService, OrderOtherMoneyMapper orderOtherMoneyMapper, ProductMapper productMapper, LogService logService, WorkOrderMapper workOrderMapper, FlowCardMapper flowCardMapper) { |
| | | public OrderService(OrderMapper orderMapper, OrderDetailMapper orderDetailMapper, OrderGlassDetailMapper orderGlassDetailMapper, OrderProcessDetailMapper orderProcessDetailMapper, SysErrorService sysErrorService, OrderOtherMoneyMapper orderOtherMoneyMapper, ProductMapper productMapper, LogService logService, WorkOrderMapper workOrderMapper, FlowCardMapper flowCardMapper, BasicOtherMoneyMapper basicOtherMoneyMapper) { |
| | | this.orderMapper = orderMapper; |
| | | this.orderDetailMapper = orderDetailMapper; |
| | | this.orderGlassDetailMapper = orderGlassDetailMapper; |
| | |
| | | this.logService = logService; |
| | | this.workOrderMapper = workOrderMapper; |
| | | this.flowCardMapper = flowCardMapper; |
| | | this.basicOtherMoneyMapper = basicOtherMoneyMapper; |
| | | } |
| | | |
| | | public boolean saveOrder(Map<String,Object> orderMap) throws Exception { |
| | | JSONObject orderJson = new JSONObject(orderMap); |
| | | String orderIdType = orderJson.getString("orderIdType"); |
| | | String orderIdTypeLetter = orderJson.getString("orderIdTypeLetter"); |
| | | Integer orderIdTypeMantissa = orderJson.getInteger("orderIdTypeMantissa"); |
| | | 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); |
| | |
| | | log.setContent(orderMap.toString()); |
| | | |
| | | if(order.getOrderId() == null || order.getOrderId().isEmpty()){ |
| | | insertOrder(order,OrderDetails,orderOtherMoneyList,orderIdType, (Map<String, String>) orderMap.get("position")); |
| | | insertOrder(order, |
| | | OrderDetails,orderOtherMoneyList,orderIdType, |
| | | (Map<String, String>) orderMap.get("position"), |
| | | orderIdTypeLetter, |
| | | orderIdTypeMantissa |
| | | ); |
| | | log.setFunction("saveOrder创建:"+order.getOrderId()); |
| | | }else { |
| | | updateOrder(order,OrderDetails,orderOtherMoneyList,(Map<String, String>) orderMap.get("position")); |
| | |
| | | return map; |
| | | } |
| | | //生成订单数据 |
| | | public void insertOrder(Order order, List<OrderDetail> OrderDetails, List<OrderOtherMoney> orderOtherMoneyList, String orderIdType, Map<String,String> position) { |
| | | public void insertOrder(Order order, List<OrderDetail> OrderDetails, List<OrderOtherMoney> orderOtherMoneyList, String orderIdType, Map<String,String> position, String orderIdTypeLetter, Integer orderIdTypeMantissa) { |
| | | //根据传入的当前月份或者当天生成订单id |
| | | String orderId = getOrderId(orderIdType); |
| | | String orderId = getOrderId(orderIdType,orderIdTypeLetter,orderIdTypeMantissa); |
| | | //往主表插数据 |
| | | order.setOrderId(orderId); |
| | | order.setCreateOrder(2); |
| | |
| | | insertOtherDetail(orderId,OrderDetails,orderOtherMoneyList,position); |
| | | } |
| | | |
| | | private String getOrderId(String dateType){ |
| | | private String getOrderId(String dateType, String orderIdTypeLetter, Integer orderIdTypeMantissa){ |
| | | String orderId = null; |
| | | Integer orderIdTypeLetterLen = orderIdTypeLetter.length(); |
| | | Integer count = orderIdTypeLetterLen+orderIdTypeMantissa; |
| | | if(dateType==null || dateType.equals("day")){ |
| | | Integer maxOrderId = orderMapper.selectMaxOrderId(); |
| | | //查询订单id,并且自增 |
| | | String formattedNumber = String.format("%02d", maxOrderId+1); |
| | | String formattedNumber = String.format("%0"+orderIdTypeMantissa+"d", maxOrderId+1); |
| | | //格式化当前日期 |
| | | Date currentDate = new Date(); |
| | | SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMdd"); |
| | | String formattedDate = dateFormat.format(currentDate); |
| | | orderId = "NG"+formattedDate+formattedNumber; |
| | | orderId = orderIdTypeLetter+formattedDate+formattedNumber; |
| | | }else if(dateType.equals("month")){ |
| | | Integer maxOrderId = orderMapper.selectMaxOrderIdByMonth(); |
| | | String formattedNumber = String.format("%04d", maxOrderId+1); |
| | | String formattedNumber = String.format("%0"+(orderIdTypeMantissa+2)+"d", maxOrderId+1); |
| | | Date currentDate = new Date(); |
| | | SimpleDateFormat dateFormat = new SimpleDateFormat("yyMM"); |
| | | String formattedDate = dateFormat.format(currentDate); |
| | | orderId = "NG"+formattedDate+formattedNumber; |
| | | orderId = orderIdTypeLetter+formattedDate+formattedNumber; |
| | | |
| | | }else if(dateType.equals("year")){ |
| | | Integer maxOrderId = orderMapper.selectMaxOrderIdByYear(); |
| | | String formattedNumber = String.format("%06d", maxOrderId+1); |
| | | String formattedNumber = String.format("%0"+(orderIdTypeMantissa+4)+"d", maxOrderId+1); |
| | | Date currentDate = new Date(); |
| | | SimpleDateFormat dateFormat = new SimpleDateFormat("yy"); |
| | | String formattedDate = dateFormat.format(currentDate); |
| | | orderId = "NG"+formattedDate+formattedNumber; |
| | | orderId = orderIdTypeLetter+formattedDate+formattedNumber; |
| | | } |
| | | return orderId; |
| | | } |
| | |
| | | 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); |
| | |
| | | endDate = selectDate.get(1); |
| | | } |
| | | } |
| | | List<OrderDetail> orderDetailList = orderDetailMapper.getOrderReport(offset, pageSize, startDate, endDate, orderDetail,model,scope); |
| | | List<BasicOtherMoney> basicOtherMoneyList=basicOtherMoneyMapper.selectList(new QueryWrapper<BasicOtherMoney>()); |
| | | ObjectMapper objectMapper = new ObjectMapper(); |
| | | |
| | | for (OrderDetail detail : orderDetailList) { |
| | | String otherColumnsStr = detail.getOtherColumns(); |
| | | if (otherColumnsStr == null || otherColumnsStr.trim().isEmpty()||otherColumnsStr.equals("{}")) { |
| | | continue; // 跳过空值 |
| | | } |
| | | try { |
| | | // 解析为Map(也可解析为自定义实体类,如OtherColumnsDTO) |
| | | Map<String, Object> otherColumnsJson = objectMapper.readValue(otherColumnsStr, Map.class); |
| | | |
| | | detail.setOtherColumnsJson(otherColumnsJson); |
| | | } catch (JsonProcessingException e) { |
| | | System.err.println("解析otherColumns失败,数据:" + otherColumnsStr + ",错误:" + e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | Map<String,Object> map = new HashMap<>(); |
| | | map.put("data",orderDetailMapper.getOrderReport(offset, pageSize, startDate, endDate, orderDetail,model,scope)); |
| | | map.put("data",orderDetailList); |
| | | map.put("title",basicOtherMoneyList); |
| | | map.put("total",orderDetailMapper.getOrderReportTotal(offset, pageSize, startDate, endDate, orderDetail,"order")); |
| | | List<String> list = new ArrayList<>(); |
| | | list.add(startDate); |
| | |
| | | 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); |
| | |
| | | date.add(startDate); |
| | | date.add(endDate); |
| | | |
| | | |
| | | List<Order> list = orderMapper.selectList(new LambdaQueryWrapper<Order>() |
| | | .gt(Order::getCreateOrder,0) |
| | | .between(Order::getCreateTime,startDate, endDate) |
| | | .apply("create_order > 0") |
| | | .apply("date(create_time) between {0} and {1}",startDate, endDate) |
| | | .orderByDesc(Order::getOrderId) |
| | | ); |
| | | 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; |
| | | } |
| | | |
| | | |
| | | //工艺属性配置查询 |
| | | public Map<String,Object> processAttributeConfig() { |
| | | Map<String,Object> map = new HashMap<>(); |
| | | List<Map<String,Object>> processList = orderMapper.selectProcessAttributeConfigOne(); |
| | | for (Map<String,Object> objectMap:processList){ |
| | | objectMap.put("detail",orderMapper.selectProcessAttributeConfigTow(objectMap.get("input_type").toString())); |
| | | } |
| | | map.put("data",processList); |
| | | return map; |
| | | } |
| | | } |