| | |
| | | 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; |
| | |
| | | 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 java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static org.apache.coyote.http11.Constants.a; |
| | | |
| | | @Service |
| | | @DS("sd") |
| | | @Transactional(rollbackFor = Exception.class) |
| | |
| | | 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, ProductMapper productMapper, LogService logService) { |
| | | 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.orderOtherMoneyMapper = orderOtherMoneyMapper; |
| | | this.productMapper = productMapper; |
| | | this.logService = logService; |
| | | this.workOrderMapper = workOrderMapper; |
| | | this.flowCardMapper = flowCardMapper; |
| | | } |
| | | |
| | | public boolean saveOrder(Map<String,Object> orderMap) throws Exception { |
| | |
| | | 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()); |
| | |
| | | |
| | | 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); |
| | |
| | | |
| | | |
| | | //修改订单数据,并且重新生成多个副表数据 |
| | | 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); |
| | |
| | | orderOtherMoney.setId(null); |
| | | orderOtherMoney.setOrderId(orderId); |
| | | if(orderOtherMoney.getQuantity()!=null && orderOtherMoney.getPrice()!=null){ |
| | | orderOtherMoney.setMoney((orderOtherMoney.getQuantity()*orderOtherMoney.getPrice())); |
| | | 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); |
| | | } |
| | |
| | | } |
| | | |
| | | //查询获取列表 |
| | | 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(); |
| | |
| | | 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); |
| | |
| | | } |
| | | //订单审核 |
| | | 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,"该订单还未审核"); |
| | |
| | | } |
| | | //工艺审核界面审核更新数据 |
| | | 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; |
| | |
| | | // //赋值订单工艺表 |
| | | // orderProcessDetailMapper.insertOrderProcessDetail(orderProcessDetailList); |
| | | } |
| | | |
| | | logService.saveLog(log); |
| | | return orderMapper.reviewProcessById(id,status); |
| | | } |
| | | //工艺审核界面数据查询 |
| | |
| | | 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; |
| | |
| | | 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); |
| | | }); |
| | |
| | | }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); |
| | |
| | | } |
| | | 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; |
| | | } |
| | | |
| | | } |
| | | } |