|
|
@@ -49,8 +49,7 @@ import com.fs.hisStore.domain.FsStoreOrderScrm;
|
|
|
import com.fs.hisStore.domain.FsStorePaymentScrm;
|
|
|
import com.fs.hisStore.mapper.FsStoreOrderScrmMapper;
|
|
|
import com.fs.hisStore.mapper.FsStorePaymentScrmMapper;
|
|
|
-import com.fs.hisStore.service.IFsStoreOrderLogsScrmService;
|
|
|
-import com.fs.hisStore.service.IFsStoreOrderScrmService;
|
|
|
+import com.fs.hisStore.param.FsStoreOrderRefundByProductParam;
|
|
|
import com.fs.hisapi.domain.ApiResponse;
|
|
|
import com.fs.hisapi.param.CreateOrderParam;
|
|
|
import com.fs.hisapi.param.RecipeDetailParam;
|
|
|
@@ -666,38 +665,28 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
|
|
|
|
|
|
@Override
|
|
|
public R createOrderByPackageOrder(FsPackageOrder packageOrder) {
|
|
|
- logger.info("111111111111111");
|
|
|
-
|
|
|
- logger.info("2222222222222");
|
|
|
+ if (packageOrder.getDoctorId() == null) {
|
|
|
+ Long doctorID = iFsDoctorService.selectFsDoctorDoctorByPackage();
|
|
|
+ packageOrder.setDoctorId(doctorID);
|
|
|
+ }
|
|
|
FsPackage fsPackage = fsPackageMapper.selectFsPackageByPackageId(packageOrder.getPackageId());
|
|
|
JSONArray objects = JSONUtil.parseArray(fsPackage.getProductJson());
|
|
|
List<FsPackagePruductDTO> products = JSONUtil.toList(objects, FsPackagePruductDTO.class);
|
|
|
- logger.info("3333333333333333333");
|
|
|
+
|
|
|
Map<String, Object> packageJson = (Map) JSON.parse(packageOrder.getPackageJson());
|
|
|
- logger.info("55555555555555555555");
|
|
|
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);
|
|
|
+ if (packageSubType == 3) {
|
|
|
+ inquiryOrderService.createOrderByPackageOrderStatus4(packageOrder);
|
|
|
}
|
|
|
+ Long prescribeId = fsPrescribeService.insertFsPrescribeByPackageOrder(packageOrder);
|
|
|
|
|
|
-
|
|
|
+ FsStoreOrder order = new FsStoreOrder();
|
|
|
List<FsStoreOrderItem> items = new ArrayList<>();
|
|
|
log.info("套餐包生成药品订单:{}", packageOrder.getOrderSn());
|
|
|
order.setOrderCode(packageOrder.getOrderSn());
|
|
|
order.setUserId(packageOrder.getUserId());
|
|
|
order.setStoreId(fsPackage.getStoreId());
|
|
|
-
|
|
|
+ order.setPrescribeId(prescribeId);
|
|
|
order.setStatus(2);
|
|
|
order.setPayDelivery(packageOrder.getPayDelivery());
|
|
|
order.setPayRemain(packageOrder.getPayRemain());
|
|
|
@@ -1222,7 +1211,7 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
|
|
|
|
|
|
FsUser user = userService.selectFsUserByUserId(order.getUserId());
|
|
|
Map<String, BigDecimal> data = new HashMap<>();
|
|
|
- if (user != null ) {
|
|
|
+ if (user != null && StringUtils.isNotEmpty(user.getMaOpenId())) {
|
|
|
if (param.getUserCouponId() != null && param.getUserCouponId() > 0l) {
|
|
|
FsUserCoupon userCoupon = userCouponService.selectFsUserCouponById(param.getUserCouponId());
|
|
|
if (userCoupon == null) {
|
|
|
@@ -1569,55 +1558,6 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
|
|
|
}
|
|
|
|
|
|
}
|
|
|
- @Autowired
|
|
|
- FsStoreOrderScrmMapper storeOrderScrmMapper;
|
|
|
-
|
|
|
-
|
|
|
- @Autowired
|
|
|
- IFsStoreOrderLogsScrmService iFsStoreOrderLogsScrmService;
|
|
|
- @Override
|
|
|
- public void deliveryOrderScrm(String orderCode, String deliveryId, String deliverCode, String deliverName) {
|
|
|
- FsStoreOrderScrm order = fsStoreOrderMapper.selectFsStoreOrderScrmByOrderCode(orderCode);
|
|
|
- if (order != null && order.getStatus() == 1) {
|
|
|
- FsExpress express = expressService.selectFsExpressByOmsCode(deliverCode);
|
|
|
- if (express != null) {
|
|
|
- order.setDeliveryName(deliverName);
|
|
|
- order.setDeliveryCode(express.getCode());
|
|
|
- }
|
|
|
- order.setStatus(2);
|
|
|
- order.setDeliverySn(deliveryId);
|
|
|
- order.setDeliverySendTime(DateUtils.getNowDate());
|
|
|
- storeOrderScrmMapper.updateFsStoreOrder(order);
|
|
|
- iFsStoreOrderLogsScrmService.create(order.getId(), FsStoreOrderLogEnum.DELIVERY_GOODS.getValue(), FsStoreOrderLogEnum.DELIVERY_GOODS.getDesc());
|
|
|
- if (order.getCompanyId() != null && order.getCompanyId() > 0) {
|
|
|
- companyService.subtractCompanyMoneyScrm(order);
|
|
|
- }
|
|
|
-
|
|
|
- FsStore store = fsStoreMapper.selectFsStoreByStoreId(order.getStoreId());
|
|
|
- //订阅物流回调
|
|
|
- String lastFourNumber = "";
|
|
|
- if (order.getDeliveryCode().equals(ShipperCodeEnum.SF.getValue())) {
|
|
|
- if (store != null && store.getSendPhone() != null) {
|
|
|
- lastFourNumber = store.getSendPhone();
|
|
|
- } else {
|
|
|
- lastFourNumber = order.getUserPhone();
|
|
|
- }
|
|
|
- if (lastFourNumber.length() == 11) {
|
|
|
- lastFourNumber = StrUtil.sub(lastFourNumber, lastFourNumber.length(), -4);
|
|
|
- }
|
|
|
- }
|
|
|
- expressService.subscribeEspress(order.getOrderCode(), order.getDeliveryCode(), order.getDeliverySn(), lastFourNumber);
|
|
|
-
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public FsStoreOrderScrm selectFsStoreOrderScrmByOrderCode(String soId) {
|
|
|
- return fsStoreOrderMapper.selectFsStoreOrderScrmByOrderCode(soId);
|
|
|
- }
|
|
|
-
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
|
|
|
@@ -1940,11 +1880,8 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
|
|
|
erpOrder.setReceiver_address(erpOrder.getReceiver_address().replace("\n", ""));
|
|
|
|
|
|
// 处方图片生成
|
|
|
- String PrescribeImg=null;
|
|
|
- if (order.getPrescribeId()!=null){
|
|
|
- PrescribeImg = fsPrescribeService.PrescribeImg(order.getPrescribeId());
|
|
|
- }
|
|
|
- erpOrder.setSeller_memo(erpOrder.getSeller_memo() + "||" + PrescribeImg + "||");
|
|
|
+ String s = fsPrescribeService.PrescribeImg(order.getPrescribeId());
|
|
|
+ erpOrder.setSeller_memo(erpOrder.getSeller_memo() + "||" + s + "||");
|
|
|
ErpOrderResponse response = erpOrderService.addOrder(erpOrder);
|
|
|
log.info("ErpCreate:" + order.getOrderCode() + ":" + JSONUtil.toJsonStr(response));
|
|
|
if (Boolean.TRUE.equals(response.getSuccess())) {
|
|
|
@@ -1961,8 +1898,7 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
|
|
|
//写入日志
|
|
|
|
|
|
}
|
|
|
- @Autowired
|
|
|
- IFsStoreOrderScrmService orderService;
|
|
|
+
|
|
|
@Override
|
|
|
public ExpressResultDTO updateDeliveryItem(ExpressNotifyDTO notifyDTO) {
|
|
|
String data = URLDecoder.decode(notifyDTO.getRequestData(), Charset.forName("UTF-8"));
|
|
|
@@ -2046,27 +1982,6 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
|
|
|
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- List<FsStoreOrderScrm> orders2 = orderService.selectFsStoreOrderListByDeliveryId(dto.getLogisticCode());
|
|
|
- if (orders != null) {
|
|
|
- for (FsStoreOrderScrm order : orders2) {
|
|
|
- logger.info("订单信息:" + JSONUtil.toJsonStr(order));
|
|
|
- logger.info("运单号:" + dto.getLogisticCode());
|
|
|
- if (order != null && order.getDeliveryStatus() != 3) {
|
|
|
- FsStoreOrderScrm map = new FsStoreOrderScrm();
|
|
|
- map.setDeliveryStatus(Integer.parseInt(dto.getState()));
|
|
|
- map.setId(order.getId());
|
|
|
- map.setDeliveryType(dto.getStateEx());
|
|
|
- orderService.updateFsStoreOrder(map);
|
|
|
- //如果是正常签收,更新订单状态
|
|
|
- if (dto.getState().equals("3") && (dto.getStateEx().equals("301") || dto.getStateEx().equals("302") || dto.getStateEx().equals("304") || dto.getStateEx().equals("311"))) {
|
|
|
- orderService.finishOrder(order.getId());
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
}
|
|
|
return ExpressResultDTO.success(sysConfig.getKdnId().trim());
|
|
|
}
|
|
|
@@ -2893,7 +2808,6 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
|
|
|
o.setReqSeqId("store-" + storePayment.getPayCode());
|
|
|
o.setTransAmt(storePayment.getPayMoney().toString());
|
|
|
o.setGoodsDesc("药品订单支付");
|
|
|
- o.setAppId(param.getAppId());
|
|
|
HuifuCreateOrderResult result = huiFuService.createOrder(o);
|
|
|
FsStorePayment mt = new FsStorePayment();
|
|
|
mt.setPaymentId(storePayment.getPaymentId());
|
|
|
@@ -3013,7 +2927,6 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
|
|
|
o.setReqSeqId("store-" + storePayment.getPayCode());
|
|
|
o.setTransAmt(storePayment.getPayMoney().toString());
|
|
|
o.setGoodsDesc("药品订单支付");
|
|
|
- o.setAppId(param.getAppId());
|
|
|
HuifuCreateOrderResult result = huiFuService.createOrder(o);
|
|
|
FsStorePayment mt = new FsStorePayment();
|
|
|
mt.setPaymentId(storePayment.getPaymentId());
|
|
|
@@ -3850,4 +3763,132 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
|
|
|
return fsStoreOrderMapper.selectFsStoreOrderProductStatistics(fsStoreOrder);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public int afterSalesByProduct(FsStoreOrderSalesParam param) {
|
|
|
+ FsStoreOrder order = fsStoreOrderMapper.selectFsStoreOrderByOrderId(param.getOrderId());
|
|
|
+ if (order.getStatus() < 0) {
|
|
|
+ throw new CustomException("订单不可提交售后");
|
|
|
+ }
|
|
|
+ //判断总退款金额是否小于等于实付金额
|
|
|
+ BigDecimal refundAmount = param.getRefundAmount();
|
|
|
+ if (refundAmount.compareTo(order.getPayMoney())>0){
|
|
|
+ throw new CustomException("退款金额不能大于实付金额");
|
|
|
+ }
|
|
|
+ List<FsStoreOrderRefundByProductParam> refundList = param.getRefundList();
|
|
|
+ List<Long> itemIds = refundList.stream().filter(item->item.getNum()>0).map(FsStoreOrderRefundByProductParam::getItemId).collect(Collectors.toList());
|
|
|
+ if (itemIds.isEmpty()){
|
|
|
+ throw new CustomException("没有选择需要退款的商品/选择退款商品数量不能为0");
|
|
|
+ }
|
|
|
+ List<FsStoreOrderItem> fsStoreOrderItems = fsStoreOrderItemMapper.selectFsStoreOrderItemListByItemIds(itemIds);
|
|
|
+ if (fsStoreOrderItems.size() != itemIds.size()){
|
|
|
+ throw new CustomException("所退商品明细不存在");
|
|
|
+ }
|
|
|
+ FsStoreAfterSales fsStoreAfterSales = new FsStoreAfterSales();
|
|
|
+ fsStoreAfterSales.setOrderId(order.getOrderId());
|
|
|
+ fsStoreAfterSales.setStoreId(order.getStoreId());
|
|
|
+ fsStoreAfterSales.setRefundAmount(refundAmount);
|
|
|
+ fsStoreAfterSales.setCreateTime(DateUtils.getNowDate());
|
|
|
+ if (order.getStatus() == 2 || order.getStatus() == 3) {
|
|
|
+ fsStoreAfterSales.setRefundType(0);
|
|
|
+ }
|
|
|
+ if (order.getStatus() == 4) {
|
|
|
+ FsStore fsStore = fsStoreMapper.selectFsStoreByStoreId(order.getStoreId());
|
|
|
+ fsStoreAfterSales.setRefundType(1);
|
|
|
+ fsStoreAfterSales.setPhoneNumber(fsStore.getRefundPhone());
|
|
|
+ fsStoreAfterSales.setAddress(fsStore.getRefundAddress());
|
|
|
+ fsStoreAfterSales.setConsignee(fsStore.getRefundConsignee());
|
|
|
+ }
|
|
|
+ fsStoreAfterSales.setStatus(0);
|
|
|
+ fsStoreAfterSales.setDeptId(order.getDeptId());
|
|
|
+ fsStoreAfterSales.setSalesStatus(0);
|
|
|
+ fsStoreAfterSales.setOrderStatus(order.getStatus());
|
|
|
+ fsStoreAfterSales.setUserId(order.getUserId());
|
|
|
+ fsStoreAfterSales.setCompanyId(order.getCompanyId());
|
|
|
+ fsStoreAfterSales.setCompanyUserId(order.getCompanyUserId());
|
|
|
+ fsStoreAfterSales.setIsDel(0);
|
|
|
+ fsStoreAfterSalesService.insertFsStoreAfterSales(fsStoreAfterSales);
|
|
|
+
|
|
|
+ for (FsStoreOrderItem fsStoreOrderItem : fsStoreOrderItems) {
|
|
|
+ for (FsStoreOrderRefundByProductParam fsStoreOrderRefundByProductParam : refundList) {
|
|
|
+ if (Objects.equals(fsStoreOrderRefundByProductParam.getItemId(), fsStoreOrderItem.getItemId())) {
|
|
|
+ FsStoreAfterSalesItem item = new FsStoreAfterSalesItem();
|
|
|
+ item.setAfterSalesId(fsStoreAfterSales.getId());
|
|
|
+ item.setProductId(fsStoreOrderItem.getProductId());
|
|
|
+ String jsonInfo = fsStoreOrderItem.getJsonInfo();
|
|
|
+ FsProdItemDTO fsProdItemDTO = JSON.parseObject(jsonInfo, FsProdItemDTO.class);
|
|
|
+ fsProdItemDTO.setPrice(fsStoreOrderRefundByProductParam.getMoney());
|
|
|
+ fsProdItemDTO.setNum(fsStoreOrderRefundByProductParam.getNum());
|
|
|
+ item.setJsonInfo(JSONUtil.toJsonStr(fsProdItemDTO));
|
|
|
+ fsStoreAfterSalesItemMapper.insertFsStoreAfterSalesItem(item);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //增加操作日志
|
|
|
+ FsStoreAfterSalesLogs logs = new FsStoreAfterSalesLogs();
|
|
|
+ logs.setChangeTime(new DateTime());
|
|
|
+ logs.setChangeType(0);
|
|
|
+ logs.setStoreAfterSalesId(fsStoreAfterSales.getId());
|
|
|
+ logs.setOperator(param.getOperator());
|
|
|
+ logs.setCompanyId(param.getCompanyId());
|
|
|
+ logs.setChangeMessage("平台提交售后");
|
|
|
+ fsStoreAfterSalesLogsMapper.insertFsStoreAfterSalesLogs(logs);
|
|
|
+ //添加订单日志
|
|
|
+ fsStoreOrderLogsService.create(order.getOrderId(), FsStoreOrderLogEnum.REFUND_ORDER_PLATFORM.getValue(),
|
|
|
+ param.getOperator() + " " +FsStoreOrderLogEnum.REFUND_ORDER_PLATFORM.getDesc());
|
|
|
+ //判断是否开启erp
|
|
|
+ FsSysConfig sysConfig = configUtil.getSysConfig();
|
|
|
+ Integer erpOpen = sysConfig.getErpOpen();
|
|
|
+ if (erpOpen != null && erpOpen == 1) {
|
|
|
+ //判断erp类型
|
|
|
+ Integer erpType = sysConfig.getErpType();
|
|
|
+ if (erpType != null) {
|
|
|
+
|
|
|
+ IErpOrderService erpOrderService = null;
|
|
|
+ if (erpType == 1) {
|
|
|
+ //管易
|
|
|
+ erpOrderService = gyOrderService;
|
|
|
+ } else if (erpType == 2) {
|
|
|
+ //旺店通
|
|
|
+ erpOrderService = wdtOrderService;
|
|
|
+ } else if (erpType == 3) {
|
|
|
+ //瀚智
|
|
|
+ erpOrderService = hzOMSOrderService;
|
|
|
+ } else if (erpType == 4) {
|
|
|
+ //瀚智
|
|
|
+ erpOrderService = dfOrderService;
|
|
|
+ } else if (erpType == 5) {
|
|
|
+ erpOrderService = jSTOrderService;
|
|
|
+ }else if (erpType == 6) {
|
|
|
+ erpOrderService = k9OrderService;
|
|
|
+ }
|
|
|
+ if (erpOrderService != null && StringUtils.isNotEmpty(order.getExtendOrderId())) {
|
|
|
+ if (!order.getExtendOrderId().equals("HIS")) {
|
|
|
+ if (erpType != 3) {
|
|
|
+ ErpRefundUpdateRequest request = new ErpRefundUpdateRequest();
|
|
|
+ request.setTid(order.getOrderCode());
|
|
|
+ request.setOid(order.getOrderCode());
|
|
|
+ request.setRefund_state(1);
|
|
|
+ erpOrderService.refundUpdate(request);
|
|
|
+ } else {
|
|
|
+ ErpRefundOrder erpRefundOrder = new ErpRefundOrder();
|
|
|
+ erpRefundOrder.setOrderCode(order.getOrderCode());
|
|
|
+ erpRefundOrder.setAfterSalesId(fsStoreAfterSales.getId());
|
|
|
+ erpOrderService.refundOrder(erpRefundOrder);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ order.setStatus(-1);
|
|
|
+ order.setRefundStatus(1 + "");
|
|
|
+ fsStoreOrderMapper.updateFsStoreOrder(order);
|
|
|
+ if (order.getPackageOrderId() != null) {
|
|
|
+ FsPackageOrder fsPackageOrder = fsPackageOrderMapper.selectFsPackageOrderByOrderId(order.getPackageOrderId());
|
|
|
+ fsPackageOrder.setRefundStatus(1);
|
|
|
+ fsPackageOrderMapper.updateFsPackageOrder(fsPackageOrder);
|
|
|
+ }
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+
|
|
|
}
|