|
@@ -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)
|