|
@ -0,0 +1,218 @@
|
|
|
package com.yihu.wlyy.web.doctor.express;
|
|
|
|
|
|
|
|
|
import com.yihu.wlyy.aop.ObserverRequired;
|
|
|
import com.yihu.wlyy.entity.dict.DmExpressagePriceEntity;
|
|
|
import com.yihu.wlyy.entity.patient.prescription.Prescription;
|
|
|
import com.yihu.wlyy.entity.patient.prescription.PrescriptionExpressage;
|
|
|
import com.yihu.wlyy.entity.patient.prescription.PrescriptionExpressageLog;
|
|
|
import com.yihu.wlyy.entity.patient.prescription.VO.PrescriptionExpressLogVO;
|
|
|
import com.yihu.wlyy.service.app.express.SFExpressService;
|
|
|
import com.yihu.wlyy.service.app.prescription.PrescriptionExpressageLogService;
|
|
|
import com.yihu.wlyy.service.app.prescription.PrescriptionExpressageService;
|
|
|
import com.yihu.wlyy.service.app.prescription.PrescriptionService;
|
|
|
import com.yihu.wlyy.web.BaseController;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
import io.swagger.annotations.ApiParam;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Controller;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestMethod;
|
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
|
* 医生端顺丰速运相关接口
|
|
|
* Created by huangwenjie on 2017/8/16.
|
|
|
*/
|
|
|
|
|
|
@Controller
|
|
|
@RequestMapping(value = "/doctor/sfexpress")
|
|
|
@Api(description = "顺丰速运相关接口")
|
|
|
public class SFExpressController extends BaseController {
|
|
|
|
|
|
@Autowired
|
|
|
private SFExpressService sfexpressService;
|
|
|
|
|
|
@Autowired
|
|
|
private PrescriptionExpressageService prescriptionExpressageService;
|
|
|
|
|
|
@Autowired
|
|
|
private PrescriptionService prescriptionService;
|
|
|
|
|
|
@Autowired
|
|
|
private PrescriptionExpressageLogService prescriptionExpressageLogService;
|
|
|
|
|
|
@RequestMapping(value = "/sforderfilterservice", method = RequestMethod.GET)
|
|
|
@ResponseBody
|
|
|
@ApiOperation("查询派送地址是否属于顺丰的派送范围")
|
|
|
public String SFOrderFilterService(
|
|
|
@ApiParam(name = "d_address", value = "派送地址", defaultValue = "福建省厦门市思明区软件园二期望海路55号")
|
|
|
@RequestParam(value = "d_address", required = true) String d_address){
|
|
|
try {
|
|
|
|
|
|
boolean result = sfexpressService.getSFOrderFilterService(d_address);
|
|
|
|
|
|
if(result){
|
|
|
return write(200, "请求成功,地址可派送!");
|
|
|
}else{
|
|
|
return write(-1, "请求失败,地址不可派送!");
|
|
|
}
|
|
|
|
|
|
}catch (Exception e){
|
|
|
//日志文件中记录异常信息
|
|
|
error(e);
|
|
|
//返回接口异常信息处理结果
|
|
|
return error(-1, "请求失败,地址不可派送!");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@RequestMapping(value="/sforderservice",method = RequestMethod.POST)
|
|
|
@ResponseBody
|
|
|
@ApiOperation("向顺丰快递下订单")
|
|
|
@ObserverRequired
|
|
|
public String SFOrderService(
|
|
|
@ApiParam(name="prescriptionCode", value="处方编号") @RequestParam(value = "prescriptionCode",required = true) String prescriptionCode){
|
|
|
try {
|
|
|
PrescriptionExpressage sfexpress_obj = prescriptionExpressageService.findByPrescriptionCode(prescriptionCode);
|
|
|
|
|
|
if(sfexpress_obj == null){
|
|
|
return write(-1, "顺丰快递下单失败,未找到该处方的派送地址!");
|
|
|
}else{
|
|
|
//如果该处方的快递单号已生成,则说明已经下单成功,不需要重复下单,直接返回成功
|
|
|
if(StringUtils.isNotBlank(sfexpress_obj.getMailno())){
|
|
|
return write(200, "顺丰快递下单成功!");
|
|
|
}else{
|
|
|
//如果该处方的快递单号未生成,则继续下单
|
|
|
|
|
|
//由于下单前已经判断过是否派送,这里不再重复判断----huangwenjie-2017.08.04
|
|
|
//先判断地址是否可派送boolean delivery = sfexpressService.getSFOrderFilterService(sfexpress_obj.getProvinceName()+sfexpress_obj.getCityName()+sfexpress_obj.getTownName()+sfexpress_obj.getAddress());
|
|
|
|
|
|
//根据业务订单号判断是否已经下单成功
|
|
|
boolean go_on = sfexpressService.sfOrderSearchService(sfexpress_obj);
|
|
|
|
|
|
//如果该业务订单号未下单成功过,则重新下单
|
|
|
if(go_on){
|
|
|
//请求顺丰接口下单,成功下单后,返回快递单号
|
|
|
sfexpress_obj = sfexpressService.postSFOrderService(sfexpress_obj);
|
|
|
//保存快递单号和增加处方物流记录为配送
|
|
|
prescriptionExpressageService.updatePrescriptionExpressage(sfexpress_obj);
|
|
|
|
|
|
}
|
|
|
return write(200, "顺丰快递下单成功!");
|
|
|
}
|
|
|
}
|
|
|
}catch (Exception e){
|
|
|
//日志文件中记录异常信息
|
|
|
error(e);
|
|
|
//返回接口异常信息处理结果
|
|
|
return error(-1, e.getMessage());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@RequestMapping(value="/sfrouteservice",method = RequestMethod.POST)
|
|
|
@ResponseBody
|
|
|
@ApiOperation("通过处方编码查询顺丰物流派送记录")
|
|
|
@ObserverRequired
|
|
|
public String SFRouteService(
|
|
|
@ApiParam(name="prescriptionCode", value="处方编号") @RequestParam(value = "prescriptionCode",required = true) String prescriptionCode){
|
|
|
|
|
|
try {
|
|
|
Prescription prescription = prescriptionService.findByCode(prescriptionCode);
|
|
|
List<PrescriptionExpressageLog> sfexpresslogList = prescriptionExpressageLogService.findByPrescriptionCode(prescriptionCode);
|
|
|
PrescriptionExpressage sfexpress_obj = prescriptionExpressageService.findByPrescriptionCode(prescriptionCode);
|
|
|
|
|
|
//先判断该处方是否已完成配送,如果配送完成,则直接取本地的物流记录
|
|
|
if(100 != prescription.getStatus()){
|
|
|
//如果配送未完成,则调用顺丰接口获取物流路由日志,与本地匹配,进行增量修改
|
|
|
sfexpresslogList = sfexpressService.getRoutInfos(prescription,sfexpress_obj,sfexpresslogList);
|
|
|
}
|
|
|
|
|
|
return write(200, "查询成功","data",sfexpresslogList);
|
|
|
}catch (Exception e){
|
|
|
//日志文件中记录异常信息
|
|
|
error(e);
|
|
|
//返回接口异常信息处理结果
|
|
|
return error(-1, "查询失败,"+e.getMessage());
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
@RequestMapping(value = "/getsfexpressprice", method = RequestMethod.GET)
|
|
|
@ResponseBody
|
|
|
@ApiOperation("根据收寄地址获取快递费用")
|
|
|
public String SFExpressPrice(
|
|
|
// @ApiParam(name = "j_city", value = "寄方地址(城市),默认为厦门", defaultValue = "厦门")
|
|
|
// @RequestParam(value = "j_city", required = false) String j_city,
|
|
|
@ApiParam(name = "d_province", value = "收方地址(省份)")
|
|
|
@RequestParam(value = "d_province", required = false) String d_province,
|
|
|
@ApiParam(name = "d_city", value = "收方地址(城市)")
|
|
|
@RequestParam(value = "d_city", required = false) String d_city){
|
|
|
|
|
|
try {
|
|
|
DmExpressagePriceEntity expreprice = sfexpressService.getSFExpressPrice(d_province,d_city);
|
|
|
return write(200, "查询成功","data",expreprice);
|
|
|
|
|
|
}catch (Exception e){
|
|
|
//日志文件中记录异常信息
|
|
|
error(e);
|
|
|
//返回接口异常信息处理结果
|
|
|
return error(-1, "查询失败,"+e.getMessage());
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
@RequestMapping(value="/sfordersearchservice",method = RequestMethod.GET)
|
|
|
@ResponseBody
|
|
|
@ApiOperation("通过处方编码查询顺丰快递是否下单成功")
|
|
|
public String SFOrderSearchService(
|
|
|
@ApiParam(name="prescriptionCode", value="处方编号") @RequestParam(value = "prescriptionCode",required = true) String prescriptionCode){
|
|
|
PrescriptionExpressage sfexpress_obj = prescriptionExpressageService.findByPrescriptionCode(prescriptionCode);
|
|
|
try {
|
|
|
boolean go_on = sfexpressService.sfOrderSearchServiceJustSearch(sfexpress_obj);
|
|
|
return write(200, "查询成功","data",go_on);
|
|
|
}catch (Exception e) {
|
|
|
//日志文件中记录异常信息
|
|
|
error(e);
|
|
|
//返回接口异常信息处理结果
|
|
|
return error(-1, "查询失败," + e.getMessage());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@RequestMapping(value="/sfgetorderinfoservice",method = RequestMethod.GET)
|
|
|
@ResponseBody
|
|
|
@ApiOperation("通过处方编码查询顺丰快递单信息(不包含物流记录)")
|
|
|
public String SFGetOrderInfo(
|
|
|
@ApiParam(name="prescriptionCode", value="处方编号") @RequestParam(value = "prescriptionCode",required = true) String prescriptionCode){
|
|
|
try {
|
|
|
PrescriptionExpressage sfexpress_obj = prescriptionExpressageService.findByPrescriptionCode(prescriptionCode);
|
|
|
Prescription prescription = prescriptionService.findByCode(prescriptionCode);
|
|
|
PrescriptionExpressLogVO vo = new PrescriptionExpressLogVO();
|
|
|
vo.setExpressMailNo(sfexpress_obj.getMailno());
|
|
|
vo.setExpressName("顺丰速递");
|
|
|
|
|
|
if(100 == prescription.getStatus()){
|
|
|
vo.setExpressStatus("已收件");
|
|
|
}else{
|
|
|
if(StringUtils.isBlank(sfexpress_obj.getMailno())){
|
|
|
vo.setExpressStatus("待发货");
|
|
|
}else{
|
|
|
vo.setExpressStatus("运输中");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
vo.setExpressPhone("95338");
|
|
|
return write(200, "查询成功","data",vo);
|
|
|
}catch (Exception e) {
|
|
|
//日志文件中记录异常信息
|
|
|
error(e);
|
|
|
//返回接口异常信息处理结果
|
|
|
return error(-1, "查询失败," + e.getMessage());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|