| | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.alibaba.fastjson.TypeReference; |
| | | import com.baomidou.dynamic.datasource.annotation.DS; |
| | | import com.example.erp.dto.mm.FinishedOperateLogDTO; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | | import com.example.erp.dto.sd.DeliveryDetailDTO; |
| | | import com.example.erp.dto.sd.DeliveryDetailProductDTO; |
| | | import com.example.erp.dto.sd.DeliverySearchDTO; |
| | | import com.example.erp.dto.sd.OrderSearchDTO; |
| | | import com.example.erp.entity.mm.FinishedOperateLog; |
| | | import com.example.erp.entity.sd.*; |
| | | import com.example.erp.entity.userInfo.Log; |
| | |
| | | import com.example.erp.service.mm.FinishedGoodsInventoryService; |
| | | import com.example.erp.service.userInfo.LogService; |
| | | import com.example.erp.service.userInfo.SysErrorService; |
| | | import com.fasterxml.jackson.core.JsonProcessingException; |
| | | 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.lang.reflect.Field; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.text.DecimalFormat; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDate; |
| | | import java.util.*; |
| | |
| | | FinishedGoodsInventoryService finishedGoodsInventoryService; |
| | | |
| | | |
| | | public Map<String, Object> getSelectShippingOrder(Integer pageNum, Integer pageSize,List<String> selectDate, Delivery delivery) { |
| | | public Map<String, Object> getSelectShippingOrder(Integer pageNum, Integer pageSize,List<String> selectDate, Map<String,Object> config) throws JsonProcessingException { |
| | | 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); |
| | | DeliverySearchDTO delivery = JSONObject.parseObject(JSONObject.toJSONString(orderJson.get("filter")), DeliverySearchDTO.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", deliveryMapper.getSelectShippingOrder(offset, pageSize,startDate,endDate, delivery)); |
| | | map.put("data", deliveryMapper.getSelectShippingOrder(offset, pageSize,startDate,endDate, delivery,field, orderBy)); |
| | | map.put("total", deliveryMapper.getSelectShippingOrderPageTotal(offset, pageSize,startDate,endDate, delivery)); |
| | | List<String> list = new ArrayList<>(); |
| | | list.add(startDate); |
| | |
| | | deliveryId = ""; |
| | | } |
| | | String deliveryIdType = object.get("deliveryIdType").toString(); |
| | | Integer type = Integer.valueOf(object.get("type").toString()); |
| | | Delivery delivery = JSONObject.parseObject(JSONObject.toJSONString(object.get("title")), Delivery.class); |
| | | List<OrderDetail> orderDetaillist = JSONArray.parseArray(JSONObject.toJSONString(object.get("delivery")), OrderDetail.class); |
| | | List<DeliveryOtherMoney> deliveryOtherMoneyList = JSONArray.parseArray(JSONObject.toJSONString(object.get("otherMoney")), DeliveryOtherMoney.class); |
| | |
| | | if (!deliveryDetaillist.isEmpty()) { |
| | | for (DeliveryDetail deliveryDetail : deliveryDetaillist) { |
| | | //还原库存数以及订单明细的发货数 |
| | | finishedGoodsInventoryMapper.updateInventoryquantityInt(deliveryDetail.getOrderId(), deliveryDetail.getOrderNumber(), deliveryDetail.getQuantity()); |
| | | finishedGoodsInventoryMapper.updateInventoryquantityIntBybox(deliveryDetail.getOrderId(), deliveryDetail.getOrderNumber(), deliveryDetail.getQuantity(),deliveryDetail.getBoxNo()); |
| | | deliveryDetailMapper.updateIsNotOrderDetailDeliveryNum(deliveryDetail.getOrderId(), deliveryDetail.getOrderNumber(), deliveryDetail.getQuantity()); |
| | | } |
| | | } |
| | |
| | | deliveryDetailMoney=getQuantity.multiply(getPrice).setScale(2, RoundingMode.HALF_UP).doubleValue(); |
| | | deliveryDetailArea=getComputeArea.multiply(getQuantity).doubleValue(); |
| | | |
| | | }else if (calculateType==4){ |
| | | //判断实际单片面积跟结算单片面积是否相等 结算总面积跟实际总面积是否相等 |
| | | if(Objects.equals(orderDetail.getArea(), orderDetail.getComputeArea())&&Objects.equals(orderDetail.getGrossArea(), orderDetail.getComputeGrossArea())){ |
| | | deliveryDetailMoney=getWidth.multiply(getHeight).multiply(getQuantity).multiply(getPrice). |
| | | divide(BigDecimal.valueOf(1000000), 2, RoundingMode.HALF_UP).doubleValue(); |
| | | deliveryDetailArea=getWidth.multiply(getHeight).multiply(getQuantity).divide(BigDecimal.valueOf(1000000), 2, RoundingMode.HALF_UP).doubleValue(); |
| | | }else{ |
| | | deliveryDetailMoney=getComputeArea.multiply(getQuantity).multiply(getPrice).setScale(2, RoundingMode.HALF_UP).doubleValue(); |
| | | deliveryDetailArea=getComputeArea.multiply(getQuantity).doubleValue(); |
| | | } |
| | | } |
| | | /*if (calculateType==1){ |
| | | deliveryDetailMoney=Double.parseDouble(String.format("%.2f",Double.parseDouble( |
| | |
| | | if(isnull) { |
| | | Map<String, Object> moneryItemmap = new HashMap<>(); |
| | | Map<String, Object> deliveryDetailOtherMoney = deliveryDetailMapper.getSelectOrderotherMoney(orderDetail.getOrderId(),orderDetail.getOrderNumber(), |
| | | key, Double.valueOf(jsonObject.get(key).toString())); |
| | | key, Double.valueOf(jsonObject.get(key).toString()),orderDetail.getDeliveryDetail().getQuantity()); |
| | | if(deliveryDetailOtherMoney.get("monery")!=null){ |
| | | otherMoneys=otherMoneys+Double.valueOf(deliveryDetailOtherMoney.get("monery").toString()); |
| | | deliveryDetailotherMoneys=Double.valueOf(deliveryDetailOtherMoney.get("monery").toString()); |
| | |
| | | //修改订单明细 |
| | | deliveryDetailMapper.updateOrderDetailDeliveryNum(orderDetail); |
| | | //修改库存表出库数量 |
| | | finishedGoodsInventoryMapper.updateInventoryquantityOut(orderDetail.getOrderId(), orderDetail.getOrderNumber(), orderDetail.getDeliveryDetail().getQuantity()); |
| | | finishedGoodsInventoryMapper.updateInventoryquantityOut(orderDetail.getOrderId(), orderDetail.getOrderNumber(), orderDetail.getDeliveryDetail().getQuantity(),orderDetail.getFinishedGoodsInventory().getBoxNo()); |
| | | }else{ |
| | | TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint); |
| | | return "false2"; |
| | |
| | | int intMoney= (int) Math.round(money+freight+otherMoneys); |
| | | //修改发货明细累加面积数量金额 |
| | | deliveryMapper.updatedelivery(Double.valueOf(String.format("%.2f", area)), quantity, Double.valueOf(intMoney), otherMoneys, oddNumber); |
| | | |
| | | |
| | | if(type.equals(2)){ |
| | | if(Boolean.parseBoolean(object.get("deliveryOutbound").toString())){ |
| | | List<OrderDetail> orderDetaillists=finishedGoodsInventoryMapper.getSelectDeliveryDetailDeliveryId(oddNumber); |
| | | if(!Objects.equals(finishedGoodsInventoryService.deliveryDetailLogic(orderDetaillists,savePoint,delivery.getCreator()), "true")){ |
| | | return finishedGoodsInventoryService.deliveryDetailLogic(orderDetaillists,savePoint,delivery.getCreator()); |
| | | } |
| | | } |
| | | |
| | | deliveryMapper.updateDeliveryToExamine(oddNumber,2); |
| | | } |
| | | logService.saveLog(log); |
| | | } else { |
| | | return "false3"; |
| | |
| | | sysError.setFunc("insertDelivery"); |
| | | sysErrorService.insert(sysError); |
| | | saveState = "false4"; |
| | | |
| | | } |
| | | |
| | | return saveState; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | public String updateDeliveryToExamine(Map<String,Object> object) { |
| | |
| | | sysError.setFunc("addDeliveryDetail"); |
| | | sysErrorService.insert(sysError); |
| | | saveState = "false"; |
| | | |
| | | } |
| | | return saveState; |
| | | |
| | |
| | | if (!deliveryDetaillist.isEmpty()) { |
| | | for (DeliveryDetail deliveryDetail : deliveryDetaillist) { |
| | | //还原库存数以及订单明细的发货数 |
| | | finishedGoodsInventoryMapper.updateInventoryquantityInt(deliveryDetail.getOrderId(), deliveryDetail.getOrderNumber(), deliveryDetail.getQuantity()); |
| | | finishedGoodsInventoryMapper.updateInventoryquantityIntBybox(deliveryDetail.getOrderId(), deliveryDetail.getOrderNumber(), deliveryDetail.getQuantity(), deliveryDetail.getBoxNo()); |
| | | deliveryDetailMapper.updateIsNotOrderDetailDeliveryNum(deliveryDetail.getOrderId(), deliveryDetail.getOrderNumber(), deliveryDetail.getQuantity()); |
| | | } |
| | | } |
| | |
| | | sysError.setFunc("deleteDelivery"); |
| | | sysErrorService.insert(sysError); |
| | | saveState = false; |
| | | |
| | | } |
| | | return saveState; |
| | | |
| | |
| | | |
| | | public List<Map<String, Object>> getSelectDeliveryPrinting(Map<String,Object> object) throws IllegalAccessException { |
| | | List<Delivery> deliveries = JSONArray.parseArray(JSONObject.toJSONString(object.get("deliveryId")), Delivery.class); |
| | | String type = ""; |
| | | if (object.get("type") != null) { |
| | | type = object.get("type").toString(); |
| | | } |
| | | int state = 0; |
| | | if (object.get("state") != null) { |
| | | state = Integer.parseInt(object.get("state").toString()); |
| | | } |
| | | List <Map<String, Object>> list1=new ArrayList<Map<String, Object>>();//最终结果 |
| | | for(Delivery deliverys:deliveries){ |
| | | |
| | | Map<String, Object> map = new HashMap<>(); |
| | | List <Map<String, Object>> list=new ArrayList<Map<String, Object>>();//最终结果 |
| | | List <Map<String, Object>> moneryList=new ArrayList<Map<String, Object>>();//最终结果 |
| | | List<DeliveryDetail> deliveryDetailList=deliveryDetailMapper.getSelectDeliveryPrinting(deliverys.getDeliveryId()); |
| | | List<DeliveryDetail> deliveryDetailList; |
| | | if(state==1){ |
| | | deliveryDetailList=deliveryDetailMapper.getSelectDeliveryPrintingMoney(deliverys.getDeliveryId(),type); |
| | | }else if(state==2){ |
| | | deliveryDetailList=deliveryDetailMapper.getSelectDeliveryPrintingNoMoney(deliverys.getDeliveryId(),type); |
| | | }else{ |
| | | deliveryDetailList=deliveryDetailMapper.getSelectDeliveryPrinting(deliverys.getDeliveryId(),type); |
| | | } |
| | | String orderId=""; |
| | | double otherMoney=0.0; |
| | | for (DeliveryDetail detail : deliveryDetailList) { |
| | | orderId=detail.getOrderDetail().getOrderId(); |
| | | Map<String, Object> itemmap = new HashMap<>(); |
| | | |
| | | List<Map<String, Object>> deliveryDetailList2 = deliveryDetailMapper.getSelectDeliveryDetailPrinting(detail.getDeliveryId(), |
| | | detail.getOrderDetail().getProductId(), detail.getOrderDetail().getOrderId()); |
| | | List<Map<String, Object>> deliveryDetailList2; |
| | | if(state==3){ |
| | | deliveryDetailList2=deliveryDetailMapper.getSelectDeliveryPrintingMoneySpecifications(detail.getDeliveryId(), |
| | | detail.getOrderDetail().getProductId(), detail.getOrderDetail().getOrderId()); |
| | | }else if(state==4){ |
| | | deliveryDetailList2=deliveryDetailMapper.getSelectDeliveryPrintingNoMoneySpecifications(detail.getDeliveryId(), |
| | | detail.getOrderDetail().getProductId(), detail.getOrderDetail().getOrderId()); |
| | | }else{ |
| | | deliveryDetailList2 = deliveryDetailMapper.getSelectDeliveryDetailPrinting(detail.getDeliveryId(), |
| | | detail.getOrderDetail().getProductId(), detail.getOrderDetail().getOrderId()); |
| | | } |
| | | |
| | | for (Map<String, Object> stringObjectMap : deliveryDetailList2) { |
| | | if(stringObjectMap.get("other_columns")!=null){ |
| | |
| | | itemmap.put("DeliveryDetail", detail); |
| | | itemmap.put("DeliveryDetailList", deliveryDetailList2); |
| | | list.add(itemmap); |
| | | |
| | | } |
| | | /*Delivery delivery=deliveryMapper.getSelectShippingOrderDetailDeliveryPrinting(deliveryDetail); |
| | | delivery.setMoney(delivery.getMoney()+otherMoney); |
| | |
| | | boolean isnull = key.contains("M"); |
| | | if(isnull){ |
| | | Map<String, Object> moneryItemmap = new HashMap<>(); |
| | | Map<String, Object> deliveryDetailOtherMoney = deliveryDetailMapper.getSelectOrderotherMoney(detail.getOrderId(),Integer.parseInt(stringObjectMap.get("order_number").toString()) |
| | | Map<String, Object> deliveryDetailOtherMoney = deliveryDetailMapper.getSelectOrderotherMoneys(detail.getOrderId(),Integer.parseInt(stringObjectMap.get("order_number").toString()) |
| | | ,key,Double.valueOf(jsonObject.get(key).toString())); |
| | | grossAmount=grossAmount.add(BigDecimal.valueOf(Double.parseDouble(deliveryDetailOtherMoney.get("monery").toString()))); |
| | | moneryItemmap.put("DeliveryDetailOtherMoney", deliveryDetailOtherMoney); |
| | |
| | | } |
| | | itemmap.put("productId",maps.get("productId")); |
| | | itemmap.put("productName",maps.get("productName")); |
| | | itemmap.put("remarks",maps.get("remarks")); |
| | | itemmap.put("DeliveryDetail", detail); |
| | | itemmap.put("DeliveryDetailList", deliveryDetailList2); |
| | | list.add(itemmap); |
| | |
| | | |
| | | return oddNumbers; |
| | | } |
| | | |
| | | |
| | | public Object appGetDeliveryList(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<Delivery> deliveryList = deliveryMapper.selectByDate(startDate, endDate); |
| | | Integer quantity = 0; |
| | | Double area = 0.00; |
| | | Double money = 0.00; |
| | | for(Delivery delivery:deliveryList){ |
| | | quantity += Integer.parseInt(String.valueOf(delivery.getQuantity())); |
| | | area += Double.parseDouble(String.valueOf(delivery.getArea())); |
| | | money += delivery.getMoney(); |
| | | } |
| | | 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(money)); |
| | | totalSum.put("count", deliveryList.size()); |
| | | |
| | | Map<String,Object> map = new HashMap<>(); |
| | | map.put("data",deliveryList); |
| | | map.put("date",date); |
| | | map.put("totalSum",totalSum); |
| | | return map; |
| | | } |
| | | } |