浏览代码

修改推送聚水潭订单问题 新增创建处方订单业务

wjj 3 周之前
父节点
当前提交
e88fd03607

+ 5 - 0
fs-service/src/main/java/com/fs/erp/dto/OrderItemDTO.java

@@ -70,4 +70,9 @@ public class OrderItemDTO implements Serializable {
      * 商品图片
      */
     private String  pic;
+
+    /**
+     * 商品单价
+     */
+    private BigDecimal price;
 }

+ 2 - 1
fs-service/src/main/java/com/fs/erp/service/impl/JSTErpOrderServiceImpl.java

@@ -140,7 +140,7 @@ public class JSTErpOrderServiceImpl implements IErpOrderService {
 
             orderItemDTO.setAmount(fsStoreProduct.getPrice().multiply(new BigDecimal(item.getNum())));
             orderItemDTO.setPic(fsStoreProduct.getImgUrl());
-
+            orderItemDTO.setPrice(fsStoreProduct.getPrice());
             orderItemDTO.setQty(item.getNum().intValue());
             orderItemDTO.setOuterOiId(String.format("%s%s",fsStoreOrder.getOrderCode(),item.getItemId()));
             itemDTOList.add(orderItemDTO);
@@ -265,6 +265,7 @@ public class JSTErpOrderServiceImpl implements IErpOrderService {
 
             orderItemDTO.setAmount(fsStoreProduct.getPrice().multiply(new BigDecimal(item.getNum())));
             orderItemDTO.setPic(fsStoreProduct.getImage());
+            orderItemDTO.setPrice(fsStoreProduct.getPrice());
             orderItemDTO.setQty(item.getNum().intValue());
             orderItemDTO.setOuterOiId(String.format("%s%s",fsStoreOrder.getOrderCode(),item.getItemId()));
             itemDTOList.add(orderItemDTO);

+ 1 - 0
fs-service/src/main/java/com/fs/his/enums/FsStoreOrderLogEnum.java

@@ -18,6 +18,7 @@ public enum FsStoreOrderLogEnum {
     UPDATE_ORDER_DF("update_order_df","代服取消订单,需要重新发货"),
     TAKE_ORDER_DELIVERY("user_take_delivery","用户已收货"),
     PAY_ORDER_SUCCESS("pay_success","用户付款成功"),
+    UN_PAY_ORDER("un_pay","用户待付款付款"),
     PAY_REMAIN_ORDER_SUCCESS("pay_remain_success","用户付款尾款成功"),
 
     CREATE_ORDER("create_order","订单生成"),

+ 2 - 0
fs-service/src/main/java/com/fs/his/service/IFsStoreOrderService.java

@@ -270,4 +270,6 @@ public interface IFsStoreOrderService
     void deliveryOrderScrm(String orderCode, String mailNo, String expressCode, String expressName);
 
     FsStoreOrderScrm selectFsStoreOrderScrmByOrderCode(String soId);
+
+    FsStoreOrder confirmOrder(FsPackageOrder packageOrder,Long doctorId);
 }

+ 241 - 4
fs-service/src/main/java/com/fs/his/service/impl/FsStoreOrderServiceImpl.java

@@ -874,7 +874,6 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
             order.setFollowEndTime(calendar2.getTime());
             order.setFollowStatus(0);
         }
-
         if (fsStoreOrderMapper.insertFsStoreOrder(order) > 0) {
             if (packageOrder.getCycle() >= followRate) {
                 FsFollow fsFollow = new FsFollow();
@@ -918,7 +917,6 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
                     FsStoreOrderLogEnum.CREATE_ORDER.getDesc());
             fsStoreOrderLogsService.create(order.getOrderId(), FsStoreOrderLogEnum.PAY_ORDER_SUCCESS.getValue(),
                     FsStoreOrderLogEnum.PAY_ORDER_SUCCESS.getDesc());
-
             fsPackageOrder.setOrderId(packageOrder.getOrderId());
             fsPackageOrder.setStoreOrderId(order.getOrderId());
             fsPackageOrder.setDoctorId(packageOrder.getDoctorId());
@@ -949,14 +947,12 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
                 fsUserService.updateFsUser(u);
             }
 
-
             try {
                 storeSubOrderService.insertFsStoreSubOrderByStoreOrder(order.getOrderId());
             } catch (Exception e) {
                 log.info("拆分订单错误:{}", order.getOrderId());
             }
         }
-
         return R.ok();
     }
 
@@ -1618,6 +1614,247 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
         return fsStoreOrderMapper.selectFsStoreOrderScrmByOrderCode(soId);
     }
 
+    @Override
+    public FsStoreOrder confirmOrder(FsPackageOrder packageOrder, Long doctorId) {
+
+        FsPackage fsPackage = fsPackageMapper.selectFsPackageByPackageId(packageOrder.getPackageId());
+        JSONArray objects = JSONUtil.parseArray(fsPackage.getProductJson());
+        List<FsPackagePruductDTO> products = JSONUtil.toList(objects, FsPackagePruductDTO.class);
+        Map<String, Object> packageJson = (Map) JSON.parse(packageOrder.getPackageJson());
+        Integer packageSubType = (Integer) packageJson.get("packageSubType");
+        Integer productType = (Integer) packageJson.get("productType");
+        FsStoreOrder order = new FsStoreOrder();
+        Long prescribeId =null;
+        if (productType==1 || packageSubType==2){
+            if (packageOrder.getDoctorId() == null) {
+                Long doctorID = iFsDoctorService.selectFsDoctorDoctorByPackage();
+                packageOrder.setDoctorId(doctorID);
+            }
+            if (packageSubType == 3 ) {
+                inquiryOrderService.createOrderByPackageOrderStatus4(packageOrder);
+            }
+            prescribeId = fsPrescribeService.insertFsPrescribeByPackageOrder(packageOrder);
+            order.setPrescribeId(prescribeId);
+        }
+
+
+        List<FsStoreOrderItem> items = new ArrayList<>();
+        log.info("套餐包生成药品订单:{}", packageOrder.getOrderSn());
+        order.setOrderCode(packageOrder.getOrderSn());
+        order.setUserId(packageOrder.getUserId());
+        order.setStoreId(fsPackage.getStoreId());
+
+        order.setStatus(1);
+        order.setPayDelivery(packageOrder.getPayDelivery());
+        order.setPayRemain(packageOrder.getPayRemain());
+        order.setPayType(packageOrder.getPayType());
+        order.setPackageSecondName(packageOrder.getPackageSecondName());
+        order.setDoctorId(packageOrder.getDoctorId());
+
+        order.setPackageId(packageOrder.getPackageId());
+        order.setPackageName(packageOrder.getPackageName());
+        order.setPrescribePrice(packageOrder.getTotalPrice());
+        order.setDiscountMoney(packageOrder.getDiscountMoney());
+        order.setDeptId(packageOrder.getDeptId());
+        order.setCompanyId(packageOrder.getCompanyId());
+        order.setCompanyUserId(packageOrder.getCompanyUserId());
+        order.setPackageOrderId(packageOrder.getOrderId());
+        order.setCreateTime(new Date());
+        if (packageOrder.getSource() != null) {
+            order.setSource(packageOrder.getSource());
+        }
+        String addressJson = packageOrder.getAddressJson();
+        if (addressJson != null && addressJson != "") {
+            Map<String, String> parse = (Map) JSON.parse(addressJson);
+            order.setUserName(parse.get("userName"));
+            order.setUserPhone(parse.get("userPhone"));
+            order.setUserAddress(parse.get("userAddress"));
+        }
+
+
+        Long totalNum = 0L;
+        BigDecimal totalPrice = new BigDecimal(0);
+        boolean noTui = false;
+        for (FsPackagePruductDTO product : products) {
+            if (product.getBarCode().equals("106013")) {
+                noTui = true;
+            }
+            totalPrice = totalPrice.add(product.getPrice().multiply(BigDecimal.valueOf(product.getCount())));
+            totalNum = totalNum + product.getCount();
+            FsStoreOrderItem item = new FsStoreOrderItem();
+            item.setProductId(product.getProductId());
+            item.setStoreId(fsPackage.getStoreId());
+            item.setProductAttrValueId(product.getId());
+            item.setNum(Long.parseLong(product.getCount().toString()));
+            item.setIsDrug(product.getIsDrug());
+            FsStoreOrderItemDTO dto = new FsStoreOrderItemDTO();
+            dto.setImage(product.getImage());
+            dto.setNum(Long.parseLong(product.getCount().toString()));
+            dto.setProductName(product.getProductName());
+            dto.setProductId(product.getProductId());
+            dto.setSku(product.getSku());
+            dto.setBarCode(product.getBarCode());
+            dto.setPrice(product.getPrice());
+            dto.setNum(Long.parseLong(product.getCount().toString()));
+            dto.setImage(product.getImage());
+            item.setIsPrescribe(0);
+            item.setJsonInfo(JSON.toJSONString(dto));
+            item.setIsGift(0);
+            items.add(item);
+        }
+        String json = configService.selectConfigByKey("his.package");
+        PackageConfigDTO configDTO = JSONUtil.toBean(json, PackageConfigDTO.class);
+        FsPackageOrder fsPackageOrder = new FsPackageOrder();
+        //赠品处理
+        if (configDTO.getGiftStoreId() != null && configDTO.getGiftStoreId() == packageOrder.getStoreId() && packageOrder.getCompanyId() != null && packageOrder.getCompanyId() > 0 && packageOrder.getPayType().equals(1) && packageOrder.getPayMoney().compareTo(configDTO.getGiftPrice()) >= 0) {
+            if (configDTO.getGift() != null && !configDTO.getGift().isEmpty()) {
+                for (StoreOrderProductDTO product : configDTO.getGift()) {
+                    totalNum = totalNum + product.getCount();
+                    FsStoreOrderItem item = new FsStoreOrderItem();
+                    item.setProductId(product.getProductId());
+                    item.setStoreId(fsPackage.getStoreId());
+                    item.setProductAttrValueId(product.getId());
+                    item.setNum(Long.parseLong(product.getCount().toString()));
+                    FsStoreOrderItemDTO dto = new FsStoreOrderItemDTO();
+                    dto.setImage(product.getImage());
+                    dto.setNum(Long.parseLong(product.getCount().toString()));
+                    dto.setProductName(product.getProductName());
+                    dto.setProductId(product.getProductId());
+                    dto.setSku(product.getSku());
+                    dto.setBarCode(product.getBarCode());
+                    dto.setPrice(product.getPrice());
+                    if (product.getCount() != null) {
+                        dto.setNum(Long.parseLong(product.getCount().toString()));
+                    }
+                    dto.setImage(product.getImage());
+                    item.setIsPrescribe(0);
+                    item.setJsonInfo(JSON.toJSONString(dto));
+                    item.setIsGift(1);
+                    items.add(item);
+                    fsPackageOrder.setProductCostPrice(packageOrder.getProductCostPrice().add(product.getCostPrice()));
+                    fsPackageOrder.setTotalCostPrice(packageOrder.getTotalCostPrice().add(product.getCostPrice()));
+                    fsPackageOrder.setCostDiscountMoney(packageOrder.getCostDiscountMoney().subtract(product.getCostPrice()));
+                }
+            }
+        }
+        //物流代收赠品
+        if (configDTO.getGiftStoreId() != null && configDTO.getGiftStoreId() == packageOrder.getStoreId() && packageOrder.getCompanyId() != null && packageOrder.getCompanyId() > 0 && packageOrder.getPayType().equals(2) && packageOrder.getPayPrice().compareTo(configDTO.getGiftPrice()) >= 0) {
+            if (configDTO.getDeliveryGift() != null && !configDTO.getDeliveryGift().isEmpty()) {
+                for (StoreOrderProductDTO product : configDTO.getDeliveryGift()) {
+                    totalNum = totalNum + product.getCount();
+                    FsStoreOrderItem item = new FsStoreOrderItem();
+                    item.setProductId(product.getProductId());
+                    item.setStoreId(fsPackage.getStoreId());
+                    item.setProductAttrValueId(product.getId());
+                    item.setNum(Long.parseLong(product.getCount().toString()));
+                    FsStoreOrderItemDTO dto = new FsStoreOrderItemDTO();
+                    dto.setImage(product.getImage());
+                    dto.setNum(Long.parseLong(product.getCount().toString()));
+                    dto.setProductName(product.getProductName());
+                    dto.setProductId(product.getProductId());
+                    dto.setSku(product.getSku());
+                    dto.setBarCode(product.getBarCode());
+                    dto.setPrice(product.getPrice());
+                    if (product.getCount() != null) {
+                        dto.setNum(Long.parseLong(product.getCount().toString()));
+                    }
+                    dto.setImage(product.getImage());
+                    item.setIsPrescribe(0);
+                    item.setJsonInfo(JSON.toJSONString(dto));
+                    item.setIsGift(1);
+                    items.add(item);
+                    fsPackageOrder.setProductCostPrice(packageOrder.getProductCostPrice().add(product.getCostPrice()));
+                    fsPackageOrder.setTotalCostPrice(packageOrder.getTotalCostPrice().add(product.getCostPrice()));
+                    fsPackageOrder.setCostDiscountMoney(packageOrder.getCostDiscountMoney().subtract(product.getCostPrice()));
+                }
+            }
+        }
+        SysConfig sysConfig = sysConfigMapper.selectConfigByConfigKey("his.store");
+        Map<String, Object> config = (Map<String, Object>) JSON.parse(sysConfig.getConfigValue());
+        Integer followRate = (Integer) config.get("followRate");
+        Long followDoctorId = fsPackageOrderMapper.selectFsPackageOrderByUserId(order.getUserId());
+        if (followDoctorId != null && followDoctorId > 0) {
+            order.setFollowDoctorId(followDoctorId);
+        } else {
+            if (packageOrder.getCompanyId() != null) {
+                Company company = companyService.selectCompanyById(packageOrder.getCompanyId());
+                if (company != null) {
+                    String followDoctorIdsJson = company.getFollowDoctorIds();
+                    if (followDoctorIdsJson != null && followDoctorIdsJson != "") {
+                        long[] ids = JSON.parseObject(followDoctorIdsJson, long[].class);
+                        if (ids.length > 0) {
+                            Random random = new Random();
+                            // 从数组中随机选择一个数字
+                            int randomIndex = random.nextInt(ids.length);
+                            long randomId = ids[randomIndex];
+                            order.setFollowDoctorId(randomId);
+                        }
+                    }
+                }
+            }
+            if (order.getFollowDoctorId() == null) {
+                order.setFollowDoctorId(iFsDoctorService.selectFollowDoctorDoctorByPackage());
+            }
+        }
+
+        order.setOrderType(fsPackage.getProductType());
+        order.setTotalNum(totalNum);
+        order.setTotalPrice(totalPrice);
+        order.setPayPrice(packageOrder.getPayPrice());
+        order.setPayMoney(packageOrder.getPayMoney());
+        order.setIsPay(0);
+        order.setItemJson(JSONUtil.toJsonStr(items));
+
+        if (packageOrder.getCycle() >= followRate) {
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(new Date());
+            calendar.add(Calendar.DAY_OF_MONTH, followRate);
+            order.setFollowTime(calendar.getTime());
+            order.setCycle(packageOrder.getCycle());
+            Calendar calendar2 = Calendar.getInstance();
+            calendar2.setTime(new Date());
+            calendar2.add(Calendar.DAY_OF_MONTH, 30 + packageOrder.getCycle());
+            order.setFollowEndTime(calendar2.getTime());
+            order.setFollowStatus(0);
+        }
+        if (fsStoreOrderMapper.insertFsStoreOrder(order) > 0) {
+
+            if (order.getOrderId() == null) {
+                throw new CustomException("订单id为空" + order);
+            }
+            fsStoreOrderLogsService.create(order.getOrderId(), FsStoreOrderLogEnum.CREATE_ORDER.getValue(),
+                    FsStoreOrderLogEnum.CREATE_ORDER.getDesc());
+            fsStoreOrderLogsService.create(order.getOrderId(), FsStoreOrderLogEnum.UN_PAY_ORDER.getValue(),
+                    FsStoreOrderLogEnum.UN_PAY_ORDER.getDesc());
+
+            if (prescribeId != null) {
+                FsPrescribe fsPrescribe = new FsPrescribe();
+                fsPrescribe.setPrescribeId(prescribeId);
+                fsPrescribe.setStoreOrderId(order.getOrderId());
+                fsPrescribeService.updateFsPrescribe(fsPrescribe);
+            }
+
+            for (FsStoreOrderItem item : items) {
+                item.setOrderId(order.getOrderId());
+                fsStoreOrderItemMapper.insertFsStoreOrderItem(item);
+            }
+            if (noTui) {
+                FsStoreOrder fsStoreOrder = new FsStoreOrder();
+                fsStoreOrder.setOrderId(order.getOrderId());
+                fsStoreOrder.setExtendOrderId("XN");
+                fsStoreOrderMapper.updateFsStoreOrder(fsStoreOrder);
+            }
+            FsUser fsUser = fsUserService.selectFsUserByUserId(order.getUserId());
+            if (fsUser.getIsBuy() == null || fsUser.getIsBuy() == 0) {
+                FsUser u = new FsUser();
+                u.setUserId(order.getUserId());
+                u.setIsBuy(1);
+                fsUserService.updateFsUser(u);
+            }
+        }
+        return order;
+    }
+
 
     @Override
     @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)