Compare commits

..

2 Commits

Author SHA1 Message Date
LiJianZhao d7a65f186e Merge branch 'master' of ssh://git.jizhiweb.cn:2222/clinic-v2/server 2025-05-13 08:54:15 +08:00
LiJianZhao 4d0327aa8d dev 2025-05-13 08:54:03 +08:00
15 changed files with 603 additions and 114 deletions

View File

@ -0,0 +1,24 @@
package com.syjiaer.clinic.server.common.api.input;
import com.syjiaer.clinic.server.common.api.annotations.IMField;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
@Getter
@Setter
@ToString
@Accessors(chain = true)
public class IM2202 extends BaseInputModel{
@IMField(key = "psn_no", name = "人员编号", required = true)
private String psnNo;
@IMField(key = "mdtrt_id", name = "就诊ID", required = true)
private String mdtrtId;
@IMField(key = "ipt_otp_no", name = "住院/门诊号", required = true)
private String iptOtpNo;
@IMField(key = "exp_content", name = "字段扩展")
private String expContent;
}

View File

@ -0,0 +1,25 @@
package com.syjiaer.clinic.server.common.api.input;
import com.syjiaer.clinic.server.common.api.annotations.IMField;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
@Getter
@Setter
@ToString
@Accessors(chain = true)
public class IM2208 extends BaseInputModel{
@IMField(key = "setl_id", name = "结算ID", required = true)
private String setlId;
@IMField(key = "mdtrt_id", name = "就诊ID", required = true)
private String mdtrtId;
@IMField(key = "psn_no", name = "人员编号", required = true)
private String psnNo;
@IMField(key = "exp_content", name = "字段扩展")
private String expContent;
}

View File

@ -0,0 +1,96 @@
package com.syjiaer.clinic.server.common.api.output;
import com.syjiaer.clinic.server.common.api.annotations.OMField;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
@Getter
@Setter
@ToString
@Accessors(chain = true)
public class OM2208 extends BaseOutputModel{
private String msgId;
private Setlinfo setlinfo;
private List<Setldetail> setldetail;
@Data
public static class Setlinfo {
@OMField(key = "mdtrt_id", name = "就诊ID")
private String mdtrt_id;
@OMField(key = "setl_id", name = "结算ID")
private String setl_id;
@OMField(key = "clr_optins", name = "清算经办机构")
private String clr_optins;
@OMField(key = "setl_time", name = "结算时间")
private LocalDateTime setl_time;
@OMField(key = "medfee_sumamt", name = "医疗费总额")
private BigDecimal medfee_sumamt;
@OMField(key = "fulamt_ownpay_amt", name = "全自费金额")
private BigDecimal fulamt_ownpay_amt;
@OMField(key = "overlmt_selfpay", name = "超限价自费费用")
private BigDecimal overlmt_selfpay;
@OMField(key = "preselfpay_amt", name = "先行自付金额")
private BigDecimal preselfpay_amt;
@OMField(key = "inscp_scp_amt", name = "符合政策范围金额")
private BigDecimal inscp_scp_amt;
@OMField(key = "act_pay_dedc", name = "实际支付起付线")
private BigDecimal act_pay_dedc;
@OMField(key = "hifp_pay", name = "基本医疗保险统筹基金支出")
private BigDecimal hifp_pay;
@OMField(key = "pool_prop_selfpay", name = "基本医疗保险统筹基金支付比例")
private BigDecimal pool_prop_selfpay;
@OMField(key = "cvlserv_pay", name = "公务员医疗补助资金支出")
private BigDecimal cvlserv_pay;
@OMField(key = "hifes_pay", name = "企业补充医疗保险基金支出")
private BigDecimal hifes_pay;
@OMField(key = "hifmi_pay", name = "居民大病保险资金支出")
private BigDecimal hifmi_pay;
@OMField(key = "hifob_pay", name = "职工大额医疗费用补助基金支出")
private BigDecimal hifob_pay;
@OMField(key = "maf_pay", name = "医疗救助基金支出")
private BigDecimal maf_pay;
@OMField(key = "oth_pay", name = "其他支出")
private BigDecimal oth_pay;
@OMField(key = "fund_pay_sumamt", name = "基金支付总额")
private BigDecimal fund_pay_sumamt;
@OMField(key = "psn_part_amt", name = "个人负担总金额")
private BigDecimal psn_part_amt;
@OMField(key = "acct_pay", name = "个人账户支出")
private BigDecimal acct_pay;
@OMField(key = "balc", name = "余额")
private BigDecimal balc;
@OMField(key = "acct_mulaid_pay", name = "其中个人账户共济支付金额")
private BigDecimal acct_mulaid_pay;
@OMField(key = "hosp_part_amt", name = "医院负担金额")
private BigDecimal hosp_part_amt;
@OMField(key = "medins_setl_id", name = "医药机构结算ID")
private String medins_setl_id;
@OMField(key = "psn_cash_pay", name = "个人现金支出")
private BigDecimal psn_cash_pay;
@OMField(key = "exp_content", name = "字段扩展")
private String exp_content;
}
@Data
public static class Setldetail {
@OMField(key = "fund_pay_type", name = "基金支付类型")
private String fund_pay_type;
@OMField(key = "inscp_scp_amt", name = "符合政策范围金额")
private BigDecimal inscp_scp_amt;
@OMField(key = "crt_payb_lmt_amt", name = "本次可支付限额金额")
private BigDecimal crt_payb_lmt_amt;
@OMField(key = "fund_payamt", name = "基金支付金额")
private BigDecimal fund_payamt;
@OMField(key = "fund_pay_type_name", name = "基金支付类型名称")
private String fund_pay_type_name;
@OMField(key = "setl_proc_info", name = "结算过程信息")
private String setl_proc_info;
}
}

View File

@ -229,4 +229,17 @@ public class SocialRequest {
public void call3506(IM3506 im3506) {
httpUtil.callBackMsgId("3506", im3506.buildToMap());
}
public void call2202(IM2202 im2202) {
httpUtil.call("2202", "data",im2202.buildToMap(), 10000);
}
public OM2208 call2208(IM2208 im2208) {
JSONObject jsonObject = httpUtil.call("2208", "data", im2208.buildToMap(), 10000);
OM2208 om2208=new OM2208();
om2208.setSetlinfo(JSONObject.parseObject(jsonObject.get("setlinfo").toString(), OM2208.Setlinfo.class));
om2208.setSetldetail(JSONArray.parseArray(jsonObject.get("setldetail").toString(), OM2208.Setldetail.class));
return om2208;
}
}

View File

@ -6,6 +6,7 @@ import lombok.Getter;
@Getter
@AllArgsConstructor
public enum ChargeSourceEnum {
REFUND(1,"门诊退费"),
CHARGE(0,"门诊收费");
private final Integer type;
private final String desc;

View File

@ -0,0 +1,29 @@
package com.syjiaer.clinic.server.common.enums;
public enum RegistrationTypeEnum {
Social(2,"医保"),
Common(1,"普通挂号");
private final Integer type;
private final String desc;
RegistrationTypeEnum(Integer type, String desc) {
this.type = type;
this.desc = desc;
}
public Integer getType() {
return type;
}
public String getDesc() {
return desc;
}
public static RegistrationTypeEnum getByType(Integer type) {
for (RegistrationTypeEnum registrationTypeEnum : RegistrationTypeEnum.values()) {
if (registrationTypeEnum.getType().equals(type)) {
return registrationTypeEnum;
}
}
return null;
}
}

View File

@ -27,24 +27,40 @@ import java.util.Map;
public class ChargeController extends BaseController {
@Autowired
private ChargeService chargeService;
/**
* 保存收费订单
* @return
*/
@RequestMapping("/save")
public Result<Object> save() {
ChargeSaveDto dto = parmsUtil.getObject("data", ChargeSaveDto.class);
ChargeOrder chargeOrder = chargeService.save(dto);
return success(chargeOrder.getCode());
}
/*
查询list 带详情
*/
@RequestMapping("/listDetail")
public Result<Page<ChargeDetailVo>> listDetail() {
ChargeQuery chargeQuery = parmsUtil.getObject("query", ChargeQuery.class);
return success(chargeService.pageDetailList(chargeQuery));
}
/**
* 查询list 只有订单信息
* @return
*/
@RequestMapping("/list")
public Result<Page<ChargeOrder>> list() {
ChargeQuery chargeQuery = parmsUtil.getObject("query", ChargeQuery.class);
return success(chargeService.pageList(chargeQuery));
}
/**
* 完成订单
* @return
*/
@RequestMapping("/completeOrder")
public Result<Object> completeOrder() {
Integer id = parmsUtil.getInteger("id");
@ -52,6 +68,11 @@ public class ChargeController extends BaseController {
chargeService.completeOrder(id,payType);
return success();
}
/**
* 根据code查询订单详情
* @return
*/
@RequestMapping("/getByCode")
public Result<ChargeDetailVo> getByCode() {
String code = parmsUtil.getString("code");
@ -59,13 +80,21 @@ public class ChargeController extends BaseController {
}
/**
* 医保上传支付明细
* @return
*/
@RequestMapping("/uploadCostDetails")
public Result<Object> uploadCostDetails() {
String changeOrderCode = parmsUtil.getString("changeOrderCode");
chargeService.uploadCostDetails(changeOrderCode);
return success();
}
/**
* 医保预支付
* @return
*/
@RequestMapping("/socialPrePay")
public Result<OM2206A> socialPrePay(){
String changeOrderCode = parmsUtil.getString("changeOrderCode");
@ -75,7 +104,10 @@ public class ChargeController extends BaseController {
return success(chargeService.socialPrePay(changeOrderCode,mdtrtCertType,mdtrtCertNO,insutype));
}
/**
* 医保真实支付
* @return
*/
@RequestMapping("/socialRealPay")
public Result<OM2207A> socialRealPay(){
String changeOrderCode = parmsUtil.getString("changeOrderCode");
@ -88,6 +120,16 @@ public class ChargeController extends BaseController {
chargeService.recordSocialInfo(om2207A, chargeService.getByCode(changeOrderCode), payType,curBalc);
return success( );
}
/**
* 订单退款
*/
@RequestMapping("/refund")
public Result<Object> refund() {
String changeOrderCode = parmsUtil.getString("changeOrderCode");
chargeService.refund(changeOrderCode);
return success();
}
/**
* 每日收费报表
@ -104,7 +146,10 @@ public class ChargeController extends BaseController {
}
/**
* 病人付费记录
* @return
*/
@RequestMapping("/getListByPatientId")
public Result<List<ChargeOrder>> getListByPatientId() {
Integer patientId = parmsUtil.getInteger("patientId");
@ -112,7 +157,10 @@ public class ChargeController extends BaseController {
}
/**
* 收费记录
* @return
*/
@RequestMapping("/getChargeRecord")
public Result<Page<ChargeLog>> getChargeRecord() {
return success(chargeService.getChargeRecordPageList());

View File

@ -52,6 +52,15 @@ public class RegistrationController extends BaseController {
Page<PatientRegistration> pageResult = patientRegistrationService.listPage(page, size, startDate,endDate);
return success(pageResult);
}
/**
*取消挂号
*/
@RequestMapping("/cancel")
public Result<?> cancel() {
Integer id = parmsUtil.getInteger("id");
patientRegistrationService.cancel(id);
return success();
}
/**
* 修改挂号信息
@ -132,4 +141,5 @@ public class RegistrationController extends BaseController {
Integer status= parmsUtil.getInteger("status","目标状态");
return success( patientRegistrationService.changeStatus(regisId,status));
}
}

View File

@ -15,18 +15,18 @@ import lombok.ToString;
import lombok.experimental.Accessors;
/**
* <p>
*
* 收费商品详情
* </p>
*
* @author NiuZiYuan
* @since 2025-04-23
* @since 2025-05-12
*/
@Getter
@Setter
@ToString
@Accessors(chain = true)
@TableName("charge_goods_list")
@ApiModel(value = "ChargeGoodsList对象", description = "")
@ApiModel(value = "ChargeGoodsList对象", description = "收费商品详情")
public class ChargeGoodsList implements Serializable {
private static final long serialVersionUID = 1L;

View File

@ -13,18 +13,18 @@ import lombok.ToString;
import lombok.experimental.Accessors;
/**
* <p>
*
* 收费商品库存变化日志
* </p>
*
* @author NiuZiYuan
* @since 2025-04-22
* @since 2025-05-12
*/
@Getter
@Setter
@ToString
@Accessors(chain = true)
@TableName("charge_inventory_log")
@ApiModel(value = "ChargeInventoryLog对象", description = "")
@ApiModel(value = "ChargeInventoryLog对象", description = "收费商品库存变化日志")
public class ChargeInventoryLog implements Serializable {
private static final long serialVersionUID = 1L;
@ -74,4 +74,7 @@ public class ChargeInventoryLog implements Serializable {
@ApiModelProperty("0未完成 1销售 2退货")
private Integer type;
@ApiModelProperty("追溯码信息")
private String traceabilityCode;
}

View File

@ -14,18 +14,18 @@ import lombok.ToString;
import lombok.experimental.Accessors;
/**
* <p>
*
* 医保收费记录
* </p>
*
* @author NiuZiYuan
* @since 2025-05-09
* @since 2025-05-12
*/
@Getter
@Setter
@ToString
@Accessors(chain = true)
@TableName("charge_social_pay_log")
@ApiModel(value = "ChargeSocialPayLog对象", description = "")
@ApiModel(value = "ChargeSocialPayLog对象", description = "医保收费记录")
public class ChargeSocialPayLog implements Serializable {
private static final long serialVersionUID = 1L;
@ -116,7 +116,7 @@ public class ChargeSocialPayLog implements Serializable {
private Integer chargeType;
@ApiModelProperty("原有余额")
private String originalBalc;
private BigDecimal originalBalc;
@ApiModelProperty("证件号码")
private String certno;

View File

@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
@Data
public class ChargeGoodsListVo {
@ -114,5 +115,7 @@ public class ChargeGoodsListVo {
private Integer selectedNum;
@ApiModelProperty("选择的单位")
private String selectedUnit;
@ApiModelProperty("追溯码列表")
private List<String> traceAbilityCodeList;
}

View File

@ -1,17 +1,18 @@
package com.syjiaer.clinic.server.service.charge;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.syjiaer.clinic.server.common.api.input.IM2204;
import com.syjiaer.clinic.server.common.api.input.IM2205;
import com.syjiaer.clinic.server.common.api.input.IM2206A;
import com.syjiaer.clinic.server.common.api.input.IM2207A;
import com.syjiaer.clinic.server.common.api.annotations.IMField;
import com.syjiaer.clinic.server.common.api.input.*;
import com.syjiaer.clinic.server.common.api.output.OM2206A;
import com.syjiaer.clinic.server.common.api.output.OM2207A;
import com.syjiaer.clinic.server.common.api.output.OM2208;
import com.syjiaer.clinic.server.common.api.request.SocialRequest;
import com.syjiaer.clinic.server.common.config.Config;
import com.syjiaer.clinic.server.common.constants.Constants;
import com.syjiaer.clinic.server.common.enums.*;
import com.syjiaer.clinic.server.common.exception.MessageException;
import com.syjiaer.clinic.server.common.util.InfoUtil;
import com.syjiaer.clinic.server.common.util.ManagerUtil;
import com.syjiaer.clinic.server.common.util.StringUtil;
import com.syjiaer.clinic.server.common.vo.Page;
import com.syjiaer.clinic.server.entity.charge.*;
@ -25,6 +26,7 @@ import com.syjiaer.clinic.server.entity.diagnosis.DiagnosisMedicalGoodsList;
import com.syjiaer.clinic.server.entity.diagnosis.DiagnosisMedicalItemList;
import com.syjiaer.clinic.server.entity.diagnosis.DiagnosisMedicalRecord;
import com.syjiaer.clinic.server.entity.goods.Goods;
import com.syjiaer.clinic.server.entity.inventory.Inventory;
import com.syjiaer.clinic.server.entity.inventory.InventoryLog;
import com.syjiaer.clinic.server.entity.item.Item;
import com.syjiaer.clinic.server.entity.manager.ManagerUser;
@ -42,6 +44,7 @@ import com.syjiaer.clinic.server.mapper.diagnosis.DiagnosisMedicalItemListMapper
import com.syjiaer.clinic.server.mapper.goods.GoodsMapper;
import com.syjiaer.clinic.server.mapper.inventory.InventoryLogMapper;
import com.syjiaer.clinic.server.mapper.diagnosis.DiagnosisMedicalRecordMapper;
import com.syjiaer.clinic.server.mapper.inventory.InventoryMapper;
import com.syjiaer.clinic.server.mapper.item.ItemMapper;
import com.syjiaer.clinic.server.mapper.organization.OrganizationMemberMapper;
import com.syjiaer.clinic.server.mapper.organization.OrganizationSectionMapper;
@ -119,65 +122,79 @@ public class ChargeService extends BaseService {
private ChargeSocialPayLogMapper chargeSocialPayLogMapper;
@Autowired
private Config config;
@Autowired
private InventoryMapper inventoryMapper;
@Autowired
private InfoUtil infoUtil;
@Transactional(rollbackFor = Exception.class)
public ChargeOrder save(ChargeSaveDto dto) {
ChargeOrder dbOrder = chargeOrderMapper.selectById(dto.getId());
Diagnosis diagnosis = diagnosisMapper.selectById(dto.getId());
if (diagnosis == null) {
throw new RuntimeException("该诊断不存在");
}
QueryWrapper<ChargeOrder> orderWrapper = new QueryWrapper<>();
orderWrapper.eq("diagnosis_code", diagnosis.getCode());
orderWrapper.last("limit 1");
ChargeOrder dbOrder = chargeOrderMapper.selectOne(orderWrapper);
if (dbOrder != null) {
//编辑 清除已有的订单
chargeItemListMapper.delete(new QueryWrapper<ChargeItemList>().eq("charge_order_code", dbOrder.getCode()));
chargeGoodsListMapper.delete(new QueryWrapper<ChargeGoodsList>().eq("charge_order_code", dbOrder.getCode()));
}
Diagnosis diagnosis = diagnosisMapper.selectById(dto.getId());
//清除该诊断的病例信息
if (diagnosis != null) {
String diaCode = diagnosis.getCode();
diagnosisMedicalGoodsListMapper.delete(new QueryWrapper<DiagnosisMedicalGoodsList>().eq("diagnosis_code", diaCode));
diagnosisMedicalItemListMapper.delete(new QueryWrapper<DiagnosisMedicalItemList>().eq("diagnosis_code", diaCode));
//重新插入
DiagnosisMedicalRecord medicalRecord = new DiagnosisMedicalRecord();
BeanUtils.copyProperties(dto.getDiagnosisMedicalRecord(), medicalRecord);
diagnosisMedicalRecordMapper.updateById(medicalRecord);
List<DiagnosisMedicalItemList> mdItmeList = new ArrayList<>();
for (ChargeItemListVo item : dto.getItemDetail()) {
DiagnosisMedicalItemList itemDetail = new DiagnosisMedicalItemList();
itemDetail.setItemId(item.getId());
itemDetail.setDiagnosisCode(diaCode);
itemDetail.setNumber(item.getSelectedNum());
itemDetail.setName(item.getItemName());
itemDetail.setSocialCode(item.getItemSocialCode());
itemDetail.setUnit(item.getSelectedUnit());
itemDetail.setUnitPrice(item.getSelectedPrice());
mdItmeList.add(itemDetail);
}
diagnosisMedicalItemListMapper.insert(mdItmeList);
List<DiagnosisMedicalGoodsList> mdGoodsList = new ArrayList<>();
for (ChargeGoodsListVo goods : dto.getGoodsDetail()) {
DiagnosisMedicalGoodsList goodDetail = new DiagnosisMedicalGoodsList();
goodDetail.setGoodsId(goods.getId());
goodDetail.setDiagnosisCode(diaCode);
goodDetail.setName(goods.getName());
goodDetail.setSocialCode(goods.getHilistCode());
goodDetail.setUnit(goods.getSelectedUnit());
goodDetail.setUnitPrice(goods.getSelectedPrice());
goodDetail.setNumber(goods.getSelectedNum());
mdGoodsList.add(goodDetail);
}
diagnosisMedicalGoodsListMapper.insert(mdGoodsList);
//清除该诊断的病例信息
String diaCode = diagnosis.getCode();
diagnosisMedicalGoodsListMapper.delete(new QueryWrapper<DiagnosisMedicalGoodsList>().eq("diagnosis_code", diaCode));
diagnosisMedicalItemListMapper.delete(new QueryWrapper<DiagnosisMedicalItemList>().eq("diagnosis_code", diaCode));
//重新插入
DiagnosisMedicalRecord medicalRecord = new DiagnosisMedicalRecord();
BeanUtils.copyProperties(dto.getDiagnosisMedicalRecord(), medicalRecord);
diagnosisMedicalRecordMapper.updateById(medicalRecord);
List<DiagnosisMedicalItemList> mdItmeList = new ArrayList<>();
for (ChargeItemListVo item : dto.getItemDetail()) {
DiagnosisMedicalItemList itemDetail = new DiagnosisMedicalItemList();
itemDetail.setItemId(item.getId());
itemDetail.setDiagnosisCode(diaCode);
itemDetail.setNumber(item.getSelectedNum());
itemDetail.setName(item.getItemName());
itemDetail.setSocialCode(item.getItemSocialCode());
itemDetail.setUnit(item.getSelectedUnit());
itemDetail.setUnitPrice(item.getSelectedPrice());
mdItmeList.add(itemDetail);
}
diagnosisMedicalItemListMapper.insert(mdItmeList);
List<DiagnosisMedicalGoodsList> mdGoodsList = new ArrayList<>();
for (ChargeGoodsListVo goods : dto.getGoodsDetail()) {
DiagnosisMedicalGoodsList goodDetail = new DiagnosisMedicalGoodsList();
goodDetail.setGoodsId(goods.getId());
goodDetail.setDiagnosisCode(diaCode);
goodDetail.setName(goods.getName());
goodDetail.setSocialCode(goods.getHilistCode());
goodDetail.setUnit(goods.getSelectedUnit());
goodDetail.setUnitPrice(goods.getSelectedPrice());
goodDetail.setNumber(goods.getSelectedNum());
mdGoodsList.add(goodDetail);
}
diagnosisMedicalGoodsListMapper.insert(mdGoodsList);
QueryWrapper<ChargeOrder> listWrapper = new QueryWrapper<>();
listWrapper.eq("diagnosis_code", dto.getDiagnosisMedicalRecord().getDiagnosisCode());
listWrapper.eq("diagnosis_code", dto.getDiagnosisMedicalRecord().
getDiagnosisCode());
listWrapper.eq("status", RetailOrderStatusEnum.FINISHED.getCode());
List<ChargeOrder> dbList = chargeOrderMapper.selectList(listWrapper);
if (!dbList.isEmpty()) {
throw new MessageException("该诊断已完成收费");
}
QueryWrapper<ChargeOrder> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("diagnosis_code", dto.getDiagnosisMedicalRecord().getDiagnosisCode());
queryWrapper.eq("diagnosis_code", dto.getDiagnosisMedicalRecord().
getDiagnosisCode());
queryWrapper.eq("status", RetailOrderStatusEnum.UNFINISHED.getCode());
chargeOrderMapper.delete(queryWrapper);
@ -188,7 +205,8 @@ public class ChargeService extends BaseService {
BigDecimal preTotalPrice = BigDecimal.ZERO;
BigDecimal totalPrice = BigDecimal.ZERO;
List<ChargeItemList> chargeServiceLists = new ArrayList<>();
for (ChargeItemListVo service : dto.getItemDetail()) {
for (
ChargeItemListVo service : dto.getItemDetail()) {
ChargeItemList itemList = new ChargeItemList();
String fsn = StringUtil.getCode("FSN");
itemList.setChargeOrderCode(code);
@ -211,7 +229,8 @@ public class ChargeService extends BaseService {
chargeItemListMapper.insert(chargeServiceLists);
List<ChargeGoodsList> chargeGoodsLists = new ArrayList<>();
for (ChargeGoodsListVo goods : dto.getGoodsDetail()) {
for (
ChargeGoodsListVo goods : dto.getGoodsDetail()) {
ChargeGoodsList itemList = new ChargeGoodsList();
Goods dbGoods = goodsMapper.selectById(goods.getId());
if (dbGoods == null) {
@ -235,6 +254,13 @@ public class ChargeService extends BaseService {
itemList.setCreateDate(nowLocalDate);
itemList.setCreateTime(nowLocalDateTime);
itemList.setType(dbGoods.getType());
//添加追溯码
String traceabilityCode = null;
if (goods.getTraceAbilityCodeList() != null) {
traceabilityCode = String.join(",", goods.getTraceAbilityCodeList());
}
itemList.setTraceabilityCode(traceabilityCode);
chargeGoodsLists.add(itemList);
preTotalPrice = preTotalPrice.add(subTotalPrice);
totalPrice = totalPrice.add(subTotalPrice);
@ -255,10 +281,11 @@ public class ChargeService extends BaseService {
return chargeOrder;
}
public Page<ChargeDetailVo> pageDetailList(ChargeQuery query) {
Page<ChargeOrder> page = pageList(query);
List<ChargeDetailVo> detailList = new ArrayList<>();
for (ChargeOrder chargeOrder : page.getList()){
for (ChargeOrder chargeOrder : page.getList()) {
detailList.add(getDetail(chargeOrder.getCode()));
}
Page<ChargeDetailVo> pageResult = new Page<>();
@ -270,7 +297,6 @@ public class ChargeService extends BaseService {
}
public Page<ChargeOrder> pageList(ChargeQuery query) {
QueryWrapper<ChargeOrder> queryWrapper = new QueryWrapper<>();
if (query.getPageSize() == null || query.getPageSize() == 0) {
@ -291,6 +317,7 @@ public class ChargeService extends BaseService {
/**
* 获取订单详细信息
*
* @param code
* @return
*/
@ -491,6 +518,15 @@ public class ChargeService extends BaseService {
}
/**
* 医保真实支付
*
* @param chargeOrderCode
* @param mdtrtCertType
* @param mdtrtCertNo
* @param insutype
* @return
*/
public OM2207A socialRealPay(String chargeOrderCode, String mdtrtCertType, String mdtrtCertNo, String insutype) {
ChargeOrder order = chargeOrderMapper.selectByCode(chargeOrderCode);
Diagnosis diagnosis = diagnosisMapper.selectByCode(order.getDiagnosisCode());
@ -509,6 +545,19 @@ public class ChargeService extends BaseService {
data.setChrg_bchno(order.getCode());
data.setAcct_used_flag("1");
data.setInsutype(insutype);
Integer minpacunt_drug_trac_cnt = 0;
List<ChargeGoodsList> goodsList = chargeGoodsListMapper.selectByCode(chargeOrderCode);
for (ChargeGoodsList goodsListItem : goodsList) {
Goods goods = goodsMapper.selectById(goodsListItem.getGoodsId());
if (goodsListItem.getUnit().equals(goods.getPackagingUnit())) {
minpacunt_drug_trac_cnt += goodsListItem.getNumber();
} else {
double count = (double) goodsListItem.getNumber() / goods.getMinPackagingNumber();
minpacunt_drug_trac_cnt += (int) Math.ceil(count);
}
}
data.setMinpacunt_drug_trac_cnt(BigDecimal.valueOf(minpacunt_drug_trac_cnt));
IM2207A.ExpContent expContent = new IM2207A.ExpContent();
data.setExp_content(expContent);
im2207A.setData(data);
@ -590,6 +639,12 @@ public class ChargeService extends BaseService {
return paymentMethodVo;
}
/**
* 根据code查订单
*
* @param code
* @return
*/
public ChargeOrder getByCode(String code) {
QueryWrapper<ChargeOrder> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("code", code);
@ -647,6 +702,7 @@ public class ChargeService extends BaseService {
*/
public void recordChargeInventoryLog(List<InventoryLog> logs, ChargeOrder chargeOrder) {
List<ChargeInventoryLog> chargeInventoryLogs = new ArrayList<>();
Map<Integer, List<String>> traceabilityCodeMap = new HashMap<>();
for (InventoryLog log : logs) {
ChargeInventoryLog chargeInventoryLog = new ChargeInventoryLog();
chargeInventoryLog.setChargeOrderCode(chargeOrder.getCode());
@ -666,6 +722,27 @@ public class ChargeService extends BaseService {
listWrapper.eq("charge_order_code", chargeOrder.getCode());
listWrapper.eq("goods_id", log.getGoodsId());
ChargeGoodsList chargeGoodsList = chargeGoodsListMapper.selectOne(listWrapper);
if (!traceabilityCodeMap.containsKey(log.getGoodsId())){
String traceabilityCode = chargeGoodsList.getTraceabilityCode();
List<String> traceabilityCodes = traceabilityCode==null?new ArrayList<>()
:new ArrayList<>(Arrays.asList(traceabilityCode.split(",")));
traceabilityCodeMap.put(log.getGoodsId(),traceabilityCodes);
}
Iterator<String> iterator = traceabilityCodeMap.get(log.getGoodsId()).iterator();
int count = 0;
Integer iteratorCount = 0;
if (chargeGoodsList.getUnit().equals(dbGoods.getPackagingUnit())){
iteratorCount=chargeGoodsList.getNumber();
}else {
iteratorCount = (int) Math.ceil((double) chargeGoodsList.getNumber() / dbGoods.getMinPackagingNumber());
}
List<String> selectedCode = new ArrayList<>();
while (iterator.hasNext() && count<iteratorCount) {
String traceabilityCode = iterator.next();
selectedCode.add(traceabilityCode);
iterator.remove();
}
chargeInventoryLog.setTraceabilityCode(String.join(",",selectedCode));
chargeInventoryLog.setFeedetlSn(chargeGoodsList.getFeedetlSn());
chargeInventoryLog.setCreateTime(LocalDateTime.now());
chargeInventoryLog.setGoodsType(chargeGoodsList.getType());
@ -695,11 +772,11 @@ public class ChargeService extends BaseService {
*/
public List<ChargeLog> listChargeLog(LocalDateTime beginTime, LocalDateTime endTime, Integer userId) {
QueryWrapper<ChargeLog> queryWrapper = new QueryWrapper<>();
queryWrapper.ge("charge_time",beginTime);
queryWrapper.le("charge_time",endTime);
if (userId!=null){
queryWrapper.eq("sale_person_id",userId);
queryWrapper.or().eq("docker_id",userId);
queryWrapper.ge("charge_time", beginTime);
queryWrapper.le("charge_time", endTime);
if (userId != null) {
queryWrapper.eq("sale_person_id", userId);
queryWrapper.or().eq("docker_id", userId);
}
return chargeLogMapper.selectList(queryWrapper);
}
@ -707,12 +784,13 @@ public class ChargeService extends BaseService {
/**
* 记录医保收费信息
*
* @param om2102A
* @param dbOrder
* @param payType
* @param curBalc
*/
public void recordSocialInfo(OM2207A om2102A, ChargeOrder dbOrder, Integer payType,String curBalc) {
public void recordSocialInfo(OM2207A om2102A, ChargeOrder dbOrder, Integer payType, String curBalc) {
ChargeSocialPayLog socialPayLog = new ChargeSocialPayLog();
OM2207A.Setlinfo setlinfo = om2102A.getSetlinfo();
socialPayLog.setChargeOrderCode(dbOrder.getCode());
@ -739,13 +817,121 @@ public class ChargeService extends BaseService {
socialPayLog.setClrOptins(setlinfo.getClr_optins());
socialPayLog.setSetlTime(setlinfo.getSetl_time());
socialPayLog.setMedType(setlinfo.getMed_type());
socialPayLog.setInfno("2102A");
socialPayLog.setInfno("2207A");
socialPayLog.setMsgid(om2102A.getMsgId());
socialPayLog.setChargeType(ChargeTypeEnum.CHARGE.getChargeType());
socialPayLog.setOriginalBalc(curBalc);
socialPayLog.setOriginalBalc(setlinfo.getBalc().add(setlinfo.getAcct_pay()));
chargeSocialPayLogMapper.insert(socialPayLog);
}
/**
* 记录医保退费信息
*
* @param dbOrder
*/
public void recordSocialRefundInfo(OM2208 om2208, ChargeOrder dbOrder, ChargeSocialPayLog payLog) {
ChargeSocialPayLog socialPayLog = new ChargeSocialPayLog();
OM2208.Setlinfo setlinfo = om2208.getSetlinfo();
socialPayLog.setChargeOrderCode(dbOrder.getCode());
socialPayLog.setSetlId(setlinfo.getSetl_id());
socialPayLog.setPsnNo(payLog.getPsnNo());
socialPayLog.setName(payLog.getName());
socialPayLog.setBalc(setlinfo.getBalc());
socialPayLog.setFundPaySumamt(setlinfo.getFund_pay_sumamt());
socialPayLog.setHifpPay(setlinfo.getHifp_pay());
socialPayLog.setPoolPropSelfpay(setlinfo.getPool_prop_selfpay());
socialPayLog.setCvlservPay(setlinfo.getCvlserv_pay());
socialPayLog.setHifesPay(setlinfo.getHifes_pay());
socialPayLog.setHifmiPay(setlinfo.getHifmi_pay());
socialPayLog.setHifobPay(setlinfo.getHifob_pay());
socialPayLog.setMafPay(setlinfo.getMaf_pay());
socialPayLog.setOthPay(setlinfo.getOth_pay());
socialPayLog.setPsnPartAmt(setlinfo.getPsn_part_amt());
socialPayLog.setAcctPay(setlinfo.getAcct_pay());
socialPayLog.setPsnCashPay(setlinfo.getPsn_cash_pay());
socialPayLog.setPsPayType(payLog.getPsPayType());
socialPayLog.setMdtrtId(setlinfo.getMdtrt_id());
socialPayLog.setInsutype(payLog.getInsutype());
socialPayLog.setClrType(payLog.getClrType());
socialPayLog.setClrOptins(setlinfo.getClr_optins());
socialPayLog.setSetlTime(setlinfo.getSetl_time());
socialPayLog.setMedType(payLog.getMedType());
socialPayLog.setInfno("2208");
socialPayLog.setMsgid(om2208.getMsgId());
socialPayLog.setChargeType(ChargeTypeEnum.REFUND.getChargeType());
socialPayLog.setOriginalBalc(setlinfo.getBalc().add(payLog.getAcctPay()));
chargeSocialPayLogMapper.insert(socialPayLog);
}
@Transactional(rollbackFor = Exception.class)
public void refund(String changeOrderCode) {
ChargeOrder chargeOrder = chargeOrderMapper.selectByCode(changeOrderCode);
if (chargeOrder == null) {
throw new MessageException("订单不存在");
}
if (!chargeOrder.getStatus().equals(RetailOrderStatusEnum.FINISHED.getCode())) {
throw new MessageException("订单状态不为已完成");
}
if (chargeOrder.getStatus().equals(RetailOrderStatusEnum.REFUNDED.getCode())) {
return;
}
if (chargeOrder.getPayType().equals(RetailOrderPayTypeEnum.MEDICARE.getCode())) {
ChargeSocialPayLog socialPayLog = chargeSocialPayLogMapper.selectOne(new QueryWrapper<ChargeSocialPayLog>().eq("charge_order_code", chargeOrder.getCode()).last("limit 1"));
if (socialPayLog == null) {
throw new MessageException("查询不到医保付费记录");
}
IM2208 im2208 = new IM2208();
im2208.setSetlId(socialPayLog.getSetlId());
im2208.setMdtrtId(socialPayLog.getMdtrtId());
im2208.setPsnNo(socialPayLog.getPsnNo());
OM2208 om2208 = socialRequest.call2208(im2208);
//记录医保退费日志
recordSocialRefundInfo(om2208, chargeOrder, socialPayLog);
}
ChargeOrder updateOrder = new ChargeOrder();
updateOrder.setId(chargeOrder.getId());
updateOrder.setStatus(RetailOrderStatusEnum.REFUNDED.getCode());
chargeOrderMapper.updateById(updateOrder);
//记录退费日志
recordChargeLog(chargeOrder, ChargeSourceEnum.REFUND, ChargeTypeEnum.REFUND);
//库存添加回去
//库存加回去
QueryWrapper<ChargeInventoryLog> chargeInventoryLogQueryWrapper = new QueryWrapper<>();
chargeInventoryLogQueryWrapper.eq("charge_order_code", chargeOrder.getCode());
List<ChargeInventoryLog> chargeOrderInventories = chargeInventoryLogMapper.selectList(chargeInventoryLogQueryWrapper);
for (ChargeInventoryLog chargeInventoryLog : chargeOrderInventories) {
Inventory dbInventory = inventoryMapper.selectById(chargeInventoryLog.getInventoryId());
Goods dbGoods = goodsMapper.selectById(chargeInventoryLog.getGoodsId());
InventoryLog log = null;
if (chargeInventoryLog.getUnit().equals(dbGoods.getPackagingUnit())) {
//没拆零
log = inventoryService.changeNumber(dbInventory.getId(), Type.IN, chargeInventoryLog.getNumber(), 0, "零售退款退货");
} else {
//拆零
log = inventoryService.changeNumber(dbInventory.getId(), Type.IN, 0, chargeInventoryLog.getNumber(), "零售退款退货");
}
log.setSocialType(InventorySocialTypeEnum.OTHER_INBOUND.getType());
log.setType(InventoryTypeEnum.REFUND_IN.getType());
ManagerUser user = getManagerUser();
log.setOperateName(user.getName());
log.setOperateId(user.getId());
inventoryLogMapper.insert(log);
//添加退款退货的记录
ChargeInventoryLog refundInventory = new ChargeInventoryLog();
BeanUtils.copyProperties(chargeOrder, refundInventory);
refundInventory.setType(RetailInventoryTypeEnum.Refund.getType());
refundInventory.setUploadStatus(UploadStatusEnum.NoUpload.getStatus());
refundInventory.setCreateTime(LocalDateTime.now());
refundInventory.setId(null);
chargeInventoryLogMapper.insert(refundInventory);
}
}
// public void recordSocialInfo(OM2103 om2103, RetailOrder dbOrder) {
// QueryWrapper<RetailSocialPayLog> logQuery = new QueryWrapper<>();
// logQuery.eq("retail_order_code", dbOrder.getCode());

View File

@ -4,9 +4,12 @@ import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.syjiaer.clinic.server.common.api.input.IM2201;
import com.syjiaer.clinic.server.common.api.input.IM2202;
import com.syjiaer.clinic.server.common.api.input.IM2203A;
import com.syjiaer.clinic.server.common.api.request.SocialRequest;
import com.syjiaer.clinic.server.common.constants.Constants;
import com.syjiaer.clinic.server.common.enums.RegistrationStatusEnum;
import com.syjiaer.clinic.server.common.enums.RegistrationTypeEnum;
import com.syjiaer.clinic.server.common.exception.MessageException;
import com.syjiaer.clinic.server.common.util.DateUtil;
import com.syjiaer.clinic.server.common.util.StringUtil;
@ -66,17 +69,17 @@ public class PatientRegistrationService extends BaseService {
if (registrationParam == null) {
throw new MessageException("data参数为空");
}
if (registrationParam.getCertType() == null){
if (registrationParam.getCertType() == null) {
throw new MessageException("证件类型不能为空");
}
if (registrationParam.getCertNo() == null){
if (registrationParam.getCertNo() == null) {
throw new MessageException("证件号码不能为空");
}
LocalDateTime now =LocalDateTime.now();
LocalDateTime now = LocalDateTime.now();
String fstNo = StringUtil.getCode("FSN");
if (registrationParam.getPatientInfoId() == null){
if (registrationParam.getPatientInfoId() == null) {
//将患者添加到患者表
PatientInfo patientInfo = new PatientInfo();
@ -103,7 +106,7 @@ public class PatientRegistrationService extends BaseService {
registration.setOrganizationSectionId(section.getId());
patientRegistrationMapper.insert(registration);
//医保挂号
if (mdtrtCertType == null || mdtrtCertNo == null || mdtrtCertType.isEmpty() || mdtrtCertNo.isEmpty()){
if (mdtrtCertType == null || mdtrtCertNo == null || mdtrtCertType.isEmpty() || mdtrtCertNo.isEmpty()) {
return registration;
}
@ -121,11 +124,11 @@ public class PatientRegistrationService extends BaseService {
im2201.setCaty(section.getCaty());
JSONObject jsonObject = socialRequest.call2201(im2201);
UpdateWrapper<PatientRegistration> regisWrapper = new UpdateWrapper<>();
regisWrapper.set("mdtrt_id",((JSONObject)jsonObject.get("data")).get("mdtrt_id"));
regisWrapper.set("type",2);
regisWrapper.eq("id",registration.getId());
patientRegistrationMapper.update(null,regisWrapper);
return registration;
regisWrapper.set("mdtrt_id", ((JSONObject) jsonObject.get("data")).get("mdtrt_id"));
regisWrapper.set("type", 2);
regisWrapper.eq("id", registration.getId());
patientRegistrationMapper.update(null, regisWrapper);
return registration;
}
@ -148,6 +151,7 @@ public class PatientRegistrationService extends BaseService {
Page<PatientRegistration> pageResult = pageHelper(pageNum, pageSize, queryWrapper, patientRegistrationMapper);
return pageResult;
}
/*
* 删除挂号信息
* @param id 挂号id
@ -160,6 +164,7 @@ public class PatientRegistrationService extends BaseService {
patientRegistration.setDelFlag(1);
patientRegistrationMapper.updateById(patientRegistration);
}
/*
* 根据id查询挂号信息
* @param id 挂号id
@ -167,24 +172,26 @@ public class PatientRegistrationService extends BaseService {
public PatientRegistrationVo getVoById(int id) {
PatientRegistrationVo registrationVo = new PatientRegistrationVo();
PatientRegistration registration = patientRegistrationMapper.selectById(id);
if (registration == null){
if (registration == null) {
throw new MessageException("id不存在");
}
BeanUtils.copyProperties(registration, registrationVo);
PatientInfo patientInfo = patientInfoMapper.selectById(registration.getPatientInfoId());
if (patientInfo != null){
if (patientInfo != null) {
registrationVo.setCertNo(patientInfo.getCertNo());
registrationVo.setCertType(patientInfo.getCertType());
}
return registrationVo;
}
public PatientRegistration getById(int id) {
PatientRegistration registration = patientRegistrationMapper.selectById(id);
if (registration == null){
if (registration == null) {
throw new MessageException("id不存在");
}
return registration;
}
/*
* 获取所有已删除挂号信息
* @param id 挂号id
@ -195,6 +202,7 @@ public class PatientRegistrationService extends BaseService {
List<PatientRegistration> list = patientRegistrationMapper.selectList(queryWrapper);
return list;
}
/*
* 根据查询条件查询挂号信息
* @param query 查询条件
@ -215,18 +223,19 @@ public class PatientRegistrationService extends BaseService {
if (query.getPageSize() == null) {
query.setPageSize(Constants.DetailPageSize);
}
if (query.getBeginTime() != null){
regisQuery.ge("create_datetime",query.getBeginTime());
if (query.getBeginTime() != null) {
regisQuery.ge("create_datetime", query.getBeginTime());
}
if (query.getEndTime() != null){
regisQuery.le("create_datetime",query.getEndTime());
if (query.getEndTime() != null) {
regisQuery.le("create_datetime", query.getEndTime());
}
return pageHelper(query.getPageNum(), query.getPageSize(), regisQuery, patientRegistrationMapper,"create_datetime",false);
return pageHelper(query.getPageNum(), query.getPageSize(), regisQuery, patientRegistrationMapper, "create_datetime", false);
}
/**
* 按时间范围分页查询挂号信息
*
* @param page
* @param size
* @param startDate
@ -234,19 +243,19 @@ public class PatientRegistrationService extends BaseService {
* @return
*/
public Page<PatientRegistration> listPage(int page, int size, String startDate,String endDate) {
public Page<PatientRegistration> listPage(int page, int size, String startDate, String endDate) {
QueryWrapper<PatientRegistration> queryWrapper = new QueryWrapper<>();
//查询条件
queryWrapper.between("create_datetime", DateUtil.getDateTime(startDate), DateUtil.getDateTime(endDate));
queryWrapper.eq("del_flag", 0);
return pageHelper(page, size, queryWrapper, patientRegistrationMapper,"create_datetime",false);
return pageHelper(page, size, queryWrapper, patientRegistrationMapper, "create_datetime", false);
}
public List<PatientRegistration> listAll() {
QueryWrapper<PatientRegistration> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("del_flag", 1);
return patientRegistrationMapper.selectList(queryWrapper);
return patientRegistrationMapper.selectList(queryWrapper);
}
@ -256,6 +265,7 @@ public class PatientRegistrationService extends BaseService {
/**
* 根据挂号id 查询挂号详细信息
*
* @param regisId
* @return
*/
@ -265,8 +275,8 @@ public class PatientRegistrationService extends BaseService {
PatientInfo patientInfo = patientInfoMapper.selectById(registration.getPatientInfoId());
PatientAndRegistrationInfoVo vo = new PatientAndRegistrationInfoVo();
if (patientInfo!=null){
BeanUtils.copyProperties(patientInfo,vo);
if (patientInfo != null) {
BeanUtils.copyProperties(patientInfo, vo);
}
OrganizationMember docker = organizationMemberMapper.selectById(registration.getOrganizationDoctorId());
@ -275,11 +285,11 @@ public class PatientRegistrationService extends BaseService {
vo.setDoctorSection(section.getName());
QueryWrapper<PatientRegistration> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("patient_info_id",registration.getPatientInfoId());
queryWrapper.eq("status",3);
queryWrapper.eq("patient_info_id", registration.getPatientInfoId());
queryWrapper.eq("status", 3);
queryWrapper.orderByDesc("create_datetime");
List<PatientRegistration> PatientRegislist = patientRegistrationMapper.selectList(queryWrapper);
if (!PatientRegislist.isEmpty()){
if (!PatientRegislist.isEmpty()) {
vo.setLastVisitTime(PatientRegislist.get(0).getCreateDatetime());
vo.setVisitCount(PatientRegislist.size());
}
@ -287,7 +297,8 @@ public class PatientRegistrationService extends BaseService {
}
/**
*改变挂号单状态
* 改变挂号单状态
*
* @param regisId
* @param status
* @return
@ -296,18 +307,18 @@ public class PatientRegistrationService extends BaseService {
RegistrationStatusEnum statusEnum = RegistrationStatusEnum.getByType(status);
PatientRegistration patientRegistration = patientRegistrationMapper.selectById(regisId);
if (patientRegistration == null){
if (patientRegistration == null) {
throw new MessageException("挂号单不存在");
}
if (statusEnum==null){
if (statusEnum == null) {
throw new MessageException("状态值不对");
}
if (statusEnum.equals(RegistrationStatusEnum.waiting) && !patientRegistration.getStatus().equals(RegistrationStatusEnum.inProgress.getStatus())){
if (statusEnum.equals(RegistrationStatusEnum.waiting) && !patientRegistration.getStatus().equals(RegistrationStatusEnum.inProgress.getStatus())) {
throw new MessageException("初始状态不对");
}
if (statusEnum.equals(RegistrationStatusEnum.cancel)
&& patientRegistration.getStatus().equals(RegistrationStatusEnum.inProgress.getStatus())
&& patientRegistration.getStatus().equals(RegistrationStatusEnum.complete.getStatus())){
&& patientRegistration.getStatus().equals(RegistrationStatusEnum.complete.getStatus())) {
throw new MessageException("初始状态不对");
}
PatientRegistration updateRegistration = new PatientRegistration();
@ -317,4 +328,36 @@ public class PatientRegistrationService extends BaseService {
return patientRegistrationMapper.selectById(regisId);
}
/**
* 取消挂号
*
* @param id
*/
public void cancel(Integer id) {
PatientRegistration registration = patientRegistrationMapper.selectById(id);
if (registration == null) {
throw new MessageException("挂号单不存在");
}
if (!registration.getStatus().equals(RegistrationStatusEnum.complete.getStatus())) {
throw new MessageException("该挂号已诊,不能撤销");
}
if (registration.getStatus().equals(RegistrationStatusEnum.cancel.getStatus())) {
return;
}
if (!registration.getType().equals(RegistrationTypeEnum.Social.getType())){
//医保撤销
IM2202 im2202 = new IM2202();
im2202.setPsnNo(registration.getPsnNo());
im2202.setMdtrtId(registration.getMdtrtId());
im2202.setIptOtpNo(String.valueOf(registration.getId()));
socialRequest.call2202(im2202);
}
//本地撤销
PatientRegistration updateRegistration = new PatientRegistration();
updateRegistration.setId(id);
updateRegistration.setStatus(RegistrationStatusEnum.cancel.getStatus());
patientRegistrationMapper.updateById(updateRegistration);
}
}

View File

@ -44,9 +44,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.*;
/*
* 医保进销存上报
@ -450,9 +448,9 @@ public class SocialInventoryUploadService extends BaseService {
SocialDirectory socialDirectory = socialDirectoryMapper.getByCode(goods.getHilistCode());
JSONObject jsonObject = JSONObject.parseObject(socialDirectory.getData());
String jsonRxFlag = (String) jsonObject.get("rx_flag");
String rxFlag = jsonRxFlag == null||jsonRxFlag.isEmpty() ? "0" : jsonRxFlag;
String rxFlag = jsonRxFlag == null || jsonRxFlag.isEmpty() ? "0" : jsonRxFlag;
if (orderInventory.getType().equals(RetailInventoryTypeEnum.Sale.getType())){
if (orderInventory.getType().equals(RetailInventoryTypeEnum.Sale.getType())) {
//销售 走3505
IM3505 im3505 = new IM3505();
im3505.setMedListCodg(goods.getHilistCode());
@ -463,7 +461,7 @@ public class SocialInventoryUploadService extends BaseService {
im3505.setPharName(docker.getName());
im3505.setPharPracCertNo(docker.getIdCardNumber());
if (chargeOrder.getPayType().equals(RetailOrderPayTypeEnum.MEDICARE.getCode())){
if (chargeOrder.getPayType().equals(RetailOrderPayTypeEnum.MEDICARE.getCode())) {
//医保支付
ChargeSocialPayLog payLog = chargeSocialPayLogMapper.selectOne(new QueryWrapper<ChargeSocialPayLog>().
eq("retail_order_code", orderInventory.getChargeOrderCode()).last("limit 1"));
@ -474,7 +472,7 @@ public class SocialInventoryUploadService extends BaseService {
im3505.setCertno(payLog.getCertno());
im3505.setMdtrtSetlType("1");
}else {
} else {
im3505.setMdtrtSn(orderInventory.getFeedetlSn());
im3505.setMdtrtSetlType("2");
}
@ -482,17 +480,27 @@ public class SocialInventoryUploadService extends BaseService {
im3505.setManuDate(inventory.getProductionDate());
im3505.setExpyEnd(inventory.getExpiryDate());
im3505.setRxFlag(rxFlag);
im3505.setTrdnFlag(orderInventory.getTrdnFlag()?"0":"1");
im3505.setTrdnFlag(orderInventory.getTrdnFlag() ? "0" : "1");
im3505.setRtalDocno(orderInventory.getChargeOrderCode());
im3505.setSelRetnTime(LocalDate.from(orderInventory.getCreateTime()));
im3505.setSelRetnCnt(BigDecimal.valueOf(orderInventory.getNumber()));
im3505.setSelRetnOpterName(docker.getName());
List<Map<String,String>> drugtracinfo = new ArrayList<>();
List<Map<String, String>> drugtracinfo = new ArrayList<>();
List<String> TracCodgList = orderInventory.getTraceabilityCode() == null ? new ArrayList<>()
: Arrays.asList(orderInventory.getTraceabilityCode().split(","));
for (String tracCodg : TracCodgList) {
Map<String, String> map =new HashMap<>();
map.put("drug_trac_codg",tracCodg);
drugtracinfo.add(map);
}
im3505.setDrugtracinfo(drugtracinfo);
socialRequest.call3505(im3505);
}
if (orderInventory.getType().equals(RetailInventoryTypeEnum.Refund.getType())){
if (orderInventory.getType().equals(RetailInventoryTypeEnum.Refund.getType())) {
//退款 走3506
IM3506 im3506 = new IM3506();
im3506.setMedListCodg(goods.getHilistCode());
@ -501,7 +509,7 @@ public class SocialInventoryUploadService extends BaseService {
im3506.setFixmedinsBchno(String.valueOf(orderInventory.getInventoryId()));
im3506.setSelRetnOpterName(docker.getName());
if (chargeOrder.getPayType().equals(RetailOrderPayTypeEnum.MEDICARE.getCode())){
if (chargeOrder.getPayType().equals(RetailOrderPayTypeEnum.MEDICARE.getCode())) {
//医保支付
ChargeSocialPayLog payLog = chargeSocialPayLogMapper.selectOne(new QueryWrapper<ChargeSocialPayLog>().
eq("retail_order_code", orderInventory.getChargeOrderCode()).last("limit 1"));
@ -511,19 +519,19 @@ public class SocialInventoryUploadService extends BaseService {
im3506.setPsnName(payLog.getName());
im3506.setCertno(payLog.getCertno());
}else {
} else {
im3506.setMdtrtSn(orderInventory.getFeedetlSn());
}
im3506.setManuLotnum(inventory.getProductionBatchCode());
im3506.setManuDate(inventory.getProductionDate());
im3506.setExpyEnd(inventory.getExpiryDate());
im3506.setRxFlag(rxFlag);
im3506.setTrdnFlag(orderInventory.getTrdnFlag()?"0":"1");
im3506.setTrdnFlag(orderInventory.getTrdnFlag() ? "0" : "1");
im3506.setSelRetnCnt(BigDecimal.valueOf(orderInventory.getNumber()));
im3506.setSelRetnOpterName(docker.getName());
im3506.setSelRetnTime(LocalDateTime.now());
List<Map<String,String>> drugtracinfo = new ArrayList<>();
List<Map<String, String>> drugtracinfo = new ArrayList<>();
im3506.setDrugtracinfo(drugtracinfo);
socialRequest.call3506(im3506);
}