This commit is contained in:
LiJianZhao 2025-05-09 14:15:32 +08:00
parent 7855c41e1a
commit 95de13fe46
20 changed files with 899 additions and 179 deletions

View File

@ -8,6 +8,8 @@ import lombok.experimental.Accessors;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.List;
import java.util.Map;
@Getter @Getter
@Setter @Setter
@ -89,5 +91,5 @@ public class IM3505 extends BaseInputModel{
@IMField(key="mdtrt_setl_type",name = "就诊结算类型",required = false) @IMField(key="mdtrt_setl_type",name = "就诊结算类型",required = false)
private String mdtrtSetlType; private String mdtrtSetlType;
@IMField(key="drugtracinfo",name = "溯源码节点信息") @IMField(key="drugtracinfo",name = "溯源码节点信息")
private String drugtracinfo; private List<Map<String,String>> drugtracinfo;
} }

View File

@ -8,6 +8,9 @@ import lombok.experimental.Accessors;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
@Getter @Getter
@Setter @Setter
@ -29,7 +32,7 @@ public class IM3506 extends BaseInputModel{
@IMField(key = "psn_cert_type", name = "人员证件类型", required = true) @IMField(key = "psn_cert_type", name = "人员证件类型", required = true)
private String psnCertType; private String psnCertType;
@IMField(key = "certno", name = "证件号码") @IMField(key = "certno", name = "证件号码")
private String certNo; private String certno;
@IMField(key = "psn_name", name = "人员姓名") @IMField(key = "psn_name", name = "人员姓名")
private String psnName; private String psnName;
@IMField(key = "manu_lotnum", name = "生产批号", required = true) @IMField(key = "manu_lotnum", name = "生产批号", required = true)
@ -47,7 +50,7 @@ public class IM3506 extends BaseInputModel{
@IMField(key = "sel_retn_cnt", name = "销售/退货数量", required = true) @IMField(key = "sel_retn_cnt", name = "销售/退货数量", required = true)
private BigDecimal selRetnCnt; private BigDecimal selRetnCnt;
@IMField(key = "sel_retn_time", name = "销售/退货时间", required = true) @IMField(key = "sel_retn_time", name = "销售/退货时间", required = true)
private LocalDate selRetnTime; private LocalDateTime selRetnTime;
@IMField(key = "sel_retn_opter_name", name = "销售/退货经办人姓名", required = true) @IMField(key = "sel_retn_opter_name", name = "销售/退货经办人姓名", required = true)
private String selRetnOpterName; private String selRetnOpterName;
@IMField(key = "memo", name = "备注") @IMField(key = "memo", name = "备注")
@ -57,5 +60,5 @@ public class IM3506 extends BaseInputModel{
@IMField(key = "mdtrt_sn", name = "就医流水号", required = true) @IMField(key = "mdtrt_sn", name = "就医流水号", required = true)
private String mdtrtSn; private String mdtrtSn;
@IMField(key = "drugtracinfo", name = "溯源码节点信息") @IMField(key = "drugtracinfo", name = "溯源码节点信息")
private String drugtracinfo; private List<Map<String,String>> drugtracinfo;
} }

View File

@ -16,7 +16,7 @@ import java.util.List;
@ToString @ToString
@Accessors(chain = true) @Accessors(chain = true)
public class OM2207A extends BaseOutputModel { public class OM2207A extends BaseOutputModel {
private String msgId;
@OMField(key="setlinfo",name = "结算信息") @OMField(key="setlinfo",name = "结算信息")
private Setlinfo setlinfo; private Setlinfo setlinfo;
@OMField(key="setldetail",name = "结算基金分项信息") @OMField(key="setldetail",name = "结算基金分项信息")
@ -27,6 +27,8 @@ public class OM2207A extends BaseOutputModel {
public static class Setlinfo { public static class Setlinfo {
@OMField(key = "mdtrt_id", name = "就诊ID") @OMField(key = "mdtrt_id", name = "就诊ID")
private String mdtrt_id; private String mdtrt_id;
@OMField(key = "setl_id", name = "结算ID")
private String setl_id;
@OMField(key = "psn_no", name = "人员编号") @OMField(key = "psn_no", name = "人员编号")
private String psn_no; private String psn_no;
@OMField(key = "psn_name", name = "人员姓名") @OMField(key = "psn_name", name = "人员姓名")

View File

@ -188,8 +188,9 @@ public class SocialRequest {
} }
public OM2207A call2207A(IM2207A im2207A) { public OM2207A call2207A(IM2207A im2207A) {
JSONObject data = httpUtil.call("2207A",im2207A.buildToMap()); JSONObject data = httpUtil.callBackMsgId("2207A",im2207A.buildToMap());
OM2207A om2207A=new OM2207A(); OM2207A om2207A=new OM2207A();
om2207A.setMsgId(data.get("msgid").toString());
om2207A.setSetlinfo(JSONObject.parseObject(data.get("setlinfo").toString(), OM2207A.Setlinfo.class)); om2207A.setSetlinfo(JSONObject.parseObject(data.get("setlinfo").toString(), OM2207A.Setlinfo.class));
om2207A.setSetldetail(JSONArray.parseArray(data.get("setldetail").toString(), OM2207A.Setldetail.class)); om2207A.setSetldetail(JSONArray.parseArray(data.get("setldetail").toString(), OM2207A.Setldetail.class));
return om2207A; return om2207A;
@ -225,4 +226,7 @@ public class SocialRequest {
} }
public void call3506(IM3506 im3506) {
httpUtil.callBackMsgId("3506", im3506.buildToMap());
}
} }

View File

@ -0,0 +1,25 @@
package com.syjiaer.clinic.server.common.enums;
public enum RetailInventoryTypeEnum {
Incomplete(0,"未完成"),
Sale(1,"销售"),
Refund(2,"退款");
private final Integer type;
private final String desc;
RetailInventoryTypeEnum(final Integer type, final String desc) {
this.type = type;
this.desc = desc;
}
public Integer getType() {
return type;
}
public String getDesc() {
return desc;
}
}

View File

@ -11,6 +11,7 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream; import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
@Component @Component
public class FileUtil { public class FileUtil {
@ -105,4 +106,27 @@ public class FileUtil {
} }
return content.toString(); return content.toString();
} }
public void zipFiles(String[] srcFiles, String zipFile) {
try (FileOutputStream fos = new FileOutputStream(zipFile);
ZipOutputStream zos = new ZipOutputStream(fos)) {
for (String srcFile : srcFiles) {
File fileToZip = new File(srcFile);
FileInputStream fis = new FileInputStream(fileToZip);
ZipEntry zipEntry = new ZipEntry(fileToZip.getName());
zos.putNextEntry(zipEntry);
byte[] bytes = new byte[1024];
int length;
while ((length = fis.read(bytes)) >= 0) {
zos.write(bytes, 0, length);
}
fis.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
} }

View File

@ -217,6 +217,14 @@ public class HttpUtil {
JSONObject output = post(config.get("social", "url"), JSON.toJSONString(getparms(infno, tag, input)),timeout); JSONObject output = post(config.get("social", "url"), JSON.toJSONString(getparms(infno, tag, input)),timeout);
return output; return output;
} }
public JSONObject callBackMsgId(String infno, Map<String, Object> input) {
Map<String, Object> parmsMap = getparms(infno, input);
String msgId =parmsMap.get("msgid").toString();
JSONObject output = post(config.get("social", "url"), JSON.toJSONString(parmsMap));
output.put("msgid",msgId);
return output;
}
public JSONObject callBackMsgId(String infno, String tag, Map<String, Object> input) { public JSONObject callBackMsgId(String infno, String tag, Map<String, Object> input) {
JSONObject output = post(config.get("social", "url"), JSON.toJSONString(getparms(infno, tag, input))); JSONObject output = post(config.get("social", "url"), JSON.toJSONString(getparms(infno, tag, input)));

View File

@ -24,6 +24,7 @@ public class ManagerUtil {
ManagerUser managerUser = new ManagerUser(); ManagerUser managerUser = new ManagerUser();
managerUser.setId(Integer.parseInt(managerId.toString())); managerUser.setId(Integer.parseInt(managerId.toString()));
managerUser.setUsername(userName.toString()); managerUser.setUsername(userName.toString());
managerUser.setName(name.toString());
return managerUser; return managerUser;
} }

View File

@ -1,5 +1,6 @@
package com.syjiaer.clinic.server.controller.charge; package com.syjiaer.clinic.server.controller.charge;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.syjiaer.clinic.server.common.api.output.OM2206A; 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.OM2207A;
import com.syjiaer.clinic.server.common.util.DateUtil; import com.syjiaer.clinic.server.common.util.DateUtil;
@ -81,7 +82,11 @@ public class ChargeController extends BaseController {
String mdtrtCertType = parmsUtil.getString("mdtrtCertType"); String mdtrtCertType = parmsUtil.getString("mdtrtCertType");
String mdtrtCertNO = parmsUtil.getString("mdtrtCertNo"); String mdtrtCertNO = parmsUtil.getString("mdtrtCertNo");
String insutype = parmsUtil.getString("insutype"); String insutype = parmsUtil.getString("insutype");
return success( chargeService.socialRealPay(changeOrderCode,mdtrtCertType,mdtrtCertNO,insutype)); Integer payType = parmsUtil.getInteger("payType");
String curBalc = parmsUtil.getString("curBalc");
OM2207A om2207A = chargeService.socialRealPay(changeOrderCode,mdtrtCertType,mdtrtCertNO,insutype);
chargeService.recordSocialInfo(om2207A, chargeService.getByCode(changeOrderCode), payType,curBalc);
return success( );
} }
/** /**
@ -114,5 +119,19 @@ public class ChargeController extends BaseController {
} }
/**
* 获取收退费记录
*/
@RequestMapping("listChargeLog")
public Result<List<ChargeLog>> getChargeList(){
String begin = parmsUtil.getString("beginTime","开始时间为空");
String end= parmsUtil.getString("endTime","结束时间为空");
Integer userId = parmsUtil.getInteger("userId");
LocalDateTime beginTime = DateUtil.getDateTime(begin);
LocalDateTime endTime = DateUtil.getDateTime(end);
List<ChargeLog> chargeLogs = chargeService.listChargeLog(beginTime,endTime,userId);
return success(chargeLogs);
}
} }

View File

@ -44,13 +44,15 @@ public class SocialDirectoryController extends BaseController {
@RequestMapping("search") @RequestMapping("search")
public Result<Object> search() { public Result<Object> search() {
Map<String, Object> parms = getParms(); Map<String, Object> parms = getParms();
String keyword = parmsUtil.getString("keyword","请输入搜索关键词"); String keyword = parmsUtil.getString("keyword","请输入搜索关键词");
Integer type= parmsUtil.getInteger("type");
String produce= parmsUtil.getString("produce"); String produce= parmsUtil.getString("produce");
int page = (Integer) parms.getOrDefault("page", 1); int page = (Integer) parms.getOrDefault("page", 1);
int size = (Integer) parms.getOrDefault("size", 10); int size = (Integer) parms.getOrDefault("size", 10);
return success(socialDirectoryService.search(keyword, Arrays.asList(1305, 1321), page, size)); return success(socialDirectoryService.search(keyword, type, page, size));
} }
@RequestMapping("getByCode") @RequestMapping("getByCode")
public Result<SocialDirectoryView> getByCode() { public Result<SocialDirectoryView> getByCode() {

View File

@ -0,0 +1,92 @@
package com.syjiaer.clinic.server.controller.social;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.syjiaer.clinic.server.common.api.input.IM2601;
import com.syjiaer.clinic.server.common.api.input.IM3201;
import com.syjiaer.clinic.server.common.api.output.OM3201;
import com.syjiaer.clinic.server.common.util.DateUtil;
import com.syjiaer.clinic.server.common.vo.Result;
import com.syjiaer.clinic.server.controller.BaseController;
import com.syjiaer.clinic.server.entity.charge.ChargeSocialPayLog;
import com.syjiaer.clinic.server.entity.social.dto.ReconciliationItemDto;
import com.syjiaer.clinic.server.entity.social.vo.ReconciliationDetailVo;
import com.syjiaer.clinic.server.entity.social.vo.ReconciliationItemVo;
import com.syjiaer.clinic.server.service.social.SocialReconciliationService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
@RestController
@RequestMapping("/social/reconciliation")
public class SocialReconciliationController extends BaseController {
@Autowired
private SocialReconciliationService socialReconciliationService;
/**
* 医保-对账列表
* @return
*/
@RequestMapping("/getList")
public Result<List<ReconciliationItemVo>> getList(){
String begin = parmsUtil.getString("beginTime","开始时间为空");
String end= parmsUtil.getString("endTime","结束时间为空");
LocalDateTime beginTime = DateUtil.getDateTime(begin);
LocalDateTime endTime = DateUtil.getDateTime(end);
return success( socialReconciliationService.getList(beginTime,endTime));
}
/**
* 对总账
*/
@RequestMapping("/totalDo")
public Result<OM3201> totalDo(){
ReconciliationItemDto dto = parmsUtil.getObject("data", ReconciliationItemDto.class);
return success( socialReconciliationService.totalDo(dto));
}
/**
* 明细对账
*/
@RequestMapping("/detailDo")
public Result<List<ReconciliationDetailVo>> detailDo(){
ReconciliationItemDto dto = parmsUtil.getObject("data", ReconciliationItemDto.class);
return success(socialReconciliationService.detailDo(dto));
}
/**
* 明细对账测试接口
*/
@RequestMapping("/testDetailDo")
public Result<List<ReconciliationDetailVo>> testDetailDo(){
return success(socialReconciliationService.testDetailDo());
}
/**
* 冲正
*/
@RequestMapping("/reversal")
public Result reversal(){
IM2601 im2601 = parmsUtil.getObject("data",IM2601.class);
socialReconciliationService.reversal(im2601);
return success();
}
}

View File

@ -7,6 +7,7 @@ import com.syjiaer.clinic.server.common.enums.UploadStatusEnum;
import com.syjiaer.clinic.server.common.vo.Page; import com.syjiaer.clinic.server.common.vo.Page;
import com.syjiaer.clinic.server.common.vo.Result; import com.syjiaer.clinic.server.common.vo.Result;
import com.syjiaer.clinic.server.controller.BaseController; import com.syjiaer.clinic.server.controller.BaseController;
import com.syjiaer.clinic.server.entity.charge.ChargeInventoryLog;
import com.syjiaer.clinic.server.entity.inventory.InventoryInit; import com.syjiaer.clinic.server.entity.inventory.InventoryInit;
import com.syjiaer.clinic.server.entity.social.dto.InventoryInitQuery; import com.syjiaer.clinic.server.entity.social.dto.InventoryInitQuery;
import com.syjiaer.clinic.server.entity.social.dto.InventoryLogQuery; import com.syjiaer.clinic.server.entity.social.dto.InventoryLogQuery;
@ -33,6 +34,7 @@ import java.util.List;
public class SocialUploadController extends BaseController { public class SocialUploadController extends BaseController {
@Autowired @Autowired
private SocialInventoryUploadService socialInventoryUploadService; private SocialInventoryUploadService socialInventoryUploadService;
/** /**
* 分页查询 商品初始化数据 * 分页查询 商品初始化数据
*/ */
@ -70,10 +72,9 @@ public class SocialUploadController extends BaseController {
*/ */
@RequestMapping("get3505List") @RequestMapping("get3505List")
public Result<Page> get3505List() { public Result<Page> get3505List() {
// RetailInventoryQuery rlQuery = parmsUtil.getObject("query", RetailInventoryQuery.class); RetailInventoryQuery rlQuery = parmsUtil.getObject("query", RetailInventoryQuery.class);
// Page<SocialInventoryPurchaseLogVo> page =socialInventoryUploadService.get3505List(rlQuery); Page<ChargeInventoryLog> page = socialInventoryUploadService.get3505List(rlQuery);
// return success(page); return success(page);
return success();
} }
@ -121,9 +122,9 @@ public class SocialUploadController extends BaseController {
if (!uploadResult) { if (!uploadResult) {
uploadResult = socialInventoryUploadService.upload3503(); uploadResult = socialInventoryUploadService.upload3503();
} }
// if (!uploadResult){ if (!uploadResult){
// uploadResult = socialInventoryUploadService.upload3505(); uploadResult = socialInventoryUploadService.upload3505();
// } }
if (!uploadResult) { if (!uploadResult) {
uploadResult = socialInventoryUploadService.upload3502(); uploadResult = socialInventoryUploadService.upload3502();
} }
@ -133,6 +134,4 @@ public class SocialUploadController extends BaseController {
} }
} }

View File

@ -0,0 +1,123 @@
package com.syjiaer.clinic.server.entity.charge;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
/**
* <p>
*
* </p>
*
* @author NiuZiYuan
* @since 2025-05-09
*/
@Getter
@Setter
@ToString
@Accessors(chain = true)
@TableName("charge_social_pay_log")
@ApiModel(value = "ChargeSocialPayLog对象", description = "")
public class ChargeSocialPayLog implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("自增主键")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty("订单code")
private String chargeOrderCode;
@ApiModelProperty("医保 结算id医保返回唯一流水")
private String setlId;
@ApiModelProperty("人员编号")
private String psnNo;
@ApiModelProperty("姓名")
private String name;
@ApiModelProperty("余额")
private BigDecimal balc;
@ApiModelProperty("基金支付总额")
private BigDecimal fundPaySumamt;
@ApiModelProperty("基本医疗保险统筹基金支出")
private BigDecimal hifpPay;
@ApiModelProperty("基本医疗保险统筹基金支付比例")
private BigDecimal poolPropSelfpay;
@ApiModelProperty("公务员医疗补助资金支出")
private BigDecimal cvlservPay;
@ApiModelProperty("企业补充医疗保险基金支出")
private BigDecimal hifesPay;
@ApiModelProperty("居民大病保险资金支出")
private BigDecimal hifmiPay;
@ApiModelProperty("职工大额医疗费用补助基金支出")
private BigDecimal hifobPay;
@ApiModelProperty("医疗救助基金支出")
private BigDecimal mafPay;
@ApiModelProperty("其他支出")
private BigDecimal othPay;
@ApiModelProperty("个人负担总金额")
private BigDecimal psnPartAmt;
@ApiModelProperty("个人账户支出")
private BigDecimal acctPay;
@ApiModelProperty("个人现金支出")
private BigDecimal psnCashPay;
@ApiModelProperty("个人现金部分支付类型")
private Integer psPayType;
@ApiModelProperty("就诊ID 医保返回")
private String mdtrtId;
@ApiModelProperty("险种类型")
private String insutype;
@ApiModelProperty("清算类型")
private String clrType;
@ApiModelProperty("清算经办机构")
private String clrOptins;
@ApiModelProperty("结算时间")
private LocalDateTime setlTime;
@ApiModelProperty("医疗类别")
private String medType;
@ApiModelProperty("接口号")
private String infno;
@ApiModelProperty("消息id")
private String msgid;
@ApiModelProperty("支付类型 1收费 0退费")
private Integer chargeType;
@ApiModelProperty("原有余额")
private String originalBalc;
@ApiModelProperty("证件号码")
private String certno;
}

View File

@ -0,0 +1,18 @@
package com.syjiaer.clinic.server.mapper.charge;
import com.syjiaer.clinic.server.entity.charge.ChargeSocialPayLog;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* Mapper 接口
* </p>
*
* @author NiuZiYuan
* @since 2025-05-09
*/
public interface ChargeSocialPayLogMapper extends BaseMapper<ChargeSocialPayLog> {
}

View File

@ -114,6 +114,9 @@ public class ChargeService extends BaseService {
@Autowired @Autowired
@Lazy @Lazy
private ChargeService chargeService; private ChargeService chargeService;
@Autowired
private ChargeSocialPayLogMapper chargeSocialPayLogMapper;
@Autowired @Autowired
private Config config; private Config config;
@ -687,5 +690,97 @@ public class ChargeService extends BaseService {
return page; return page;
} }
/*
查询收费记录
*/
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);
}
return chargeLogMapper.selectList(queryWrapper);
}
/**
* 记录医保收费信息
* @param om2102A
* @param dbOrder
* @param payType
* @param 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());
socialPayLog.setSetlId(setlinfo.getSetl_id());
socialPayLog.setPsnNo(setlinfo.getPsn_no());
socialPayLog.setName(setlinfo.getPsn_name());
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(payType);
socialPayLog.setMdtrtId(setlinfo.getMdtrt_id());
socialPayLog.setInsutype(setlinfo.getInsutype());
socialPayLog.setClrType(setlinfo.getClr_type());
socialPayLog.setClrOptins(setlinfo.getClr_optins());
socialPayLog.setSetlTime(setlinfo.getSetl_time());
socialPayLog.setMedType(setlinfo.getMed_type());
socialPayLog.setInfno("2102A");
socialPayLog.setMsgid(om2102A.getMsgId());
socialPayLog.setChargeType(ChargeTypeEnum.CHARGE.getChargeType());
socialPayLog.setOriginalBalc(curBalc);
chargeSocialPayLogMapper.insert(socialPayLog);
}
// public void recordSocialInfo(OM2103 om2103, RetailOrder dbOrder) {
// QueryWrapper<RetailSocialPayLog> logQuery = new QueryWrapper<>();
// logQuery.eq("retail_order_code", dbOrder.getCode());
// logQuery.eq("charge_type", ChargeTypeEnum.CHARGE.getChargeType());
// RetailSocialPayLog charge = retailSocialPayLogService.getOne(logQuery);
// RetailSocialPayLog refund = new RetailSocialPayLog();
// OM2103.Setlinfo refundSetlinfo = om2103.getSetlinfo();
// refund.setRetailOrderCode(dbOrder.getCode());
// refund.setSetlId(refundSetlinfo.getSetl_id());
// refund.setPsnNo(charge.getPsnNo());
// refund.setName(charge.getName());
// refund.setBalc(refundSetlinfo.getBalc());
// refund.setFundPaySumamt(refundSetlinfo.getFund_pay_sumamt());
// refund.setHifpPay(refundSetlinfo.getHifp_pay());
// refund.setPoolPropSelfpay(refundSetlinfo.getPool_prop_selfpay());
// refund.setCvlservPay(refundSetlinfo.getCvlserv_pay());
// refund.setHifesPay(refundSetlinfo.getHifes_pay());
// refund.setHifmiPay(refundSetlinfo.getHifmi_pay());
// refund.setHifobPay(refundSetlinfo.getHifob_pay());
// refund.setMafPay(refundSetlinfo.getMaf_pay());
// refund.setOthPay(refundSetlinfo.getOth_pay());
// refund.setPsnPartAmt(charge.getPsnPartAmt());
// refund.setAcctPay(refundSetlinfo.getAcct_pay());
// refund.setPsnCashPay(charge.getPsnCashPay());
// refund.setPsPayType(charge.getPsPayType());
// refund.setMdtrtId(refundSetlinfo.getMdtrt_id());
// refund.setInsutype(charge.getInsutype());
// refund.setClrType(charge.getClrType());
// refund.setClrOptins(refundSetlinfo.getClr_optins());
// refund.setSetlTime(refundSetlinfo.getSetl_time());
// refund.setMedType(charge.getMedType());
// refund.setInfno("2103");
// refund.setMsgid(om2103.getMsgid());
// refund.setChargeType(ChargeTypeEnum.REFUND.getChargeType());
// refund.setCertno(charge.getCertno());
// retailSocialPayLogService.save(refund);
// }
} }

View File

@ -298,6 +298,7 @@ public class InventoryService extends BaseService {
throw new MessageException("订单不存在"); throw new MessageException("订单不存在");
} }
InventoryLog log = null; InventoryLog log = null;
//更新库存数量
if (!updateGoods.getWholeNumber().equals(dbInventory.getWholeNumber())) { if (!updateGoods.getWholeNumber().equals(dbInventory.getWholeNumber())) {
log = adjustNumber(updateGoods.getId(), log = adjustNumber(updateGoods.getId(),
updateGoods.getWholeNumber(), updateGoods.getFragmentNumber(), "库存调整"); updateGoods.getWholeNumber(), updateGoods.getFragmentNumber(), "库存调整");
@ -323,6 +324,14 @@ public class InventoryService extends BaseService {
inventoryPurchaseLog.setUploadStatus(UploadStatusEnum.NoUpload.getStatus()); inventoryPurchaseLog.setUploadStatus(UploadStatusEnum.NoUpload.getStatus());
inventoryPurchaseLogMapper.insert(inventoryPurchaseLog); inventoryPurchaseLogMapper.insert(inventoryPurchaseLog);
} }
//更新库存基本信息 效期 生产日期 生产批次
Inventory updateInventory = new Inventory();
updateInventory.setId(updateGoods.getId());
updateInventory.setProductionDate(updateGoods.getProductionDate());
updateInventory.setExpiryDate(updateGoods.getExpiryDate());
updateInventory.setProductionBatchCode(updateGoods.getProductionBatchCode());
updateInventory.setPurchaseUnitPrice(updateGoods.getPurchaseUnitPrice());
inventoryMapper.updateById(updateInventory);
//更新订单总价 //更新订单总价
QueryWrapper<Inventory> queryGoods = new QueryWrapper<>(); QueryWrapper<Inventory> queryGoods = new QueryWrapper<>();

View File

@ -184,9 +184,9 @@ public class SocialDirectoryService extends BaseService {
//模糊搜索 //模糊搜索
if (keyword != null && !keyword.trim().isEmpty()) { if (keyword != null && !keyword.trim().isEmpty()) {
codeqw.like("name", keyword); codeqw.and(wrapper->
codeqw.or().like("code", keyword); wrapper.like("name", keyword).or().like("code", keyword).or().like("keyword", keyword)
codeqw.or().like("keyword", keyword); );
} }
// 执行查询 // 执行查询

View File

@ -6,12 +6,18 @@ import com.syjiaer.clinic.server.common.api.input.*;
import com.syjiaer.clinic.server.common.api.request.SocialRequest; import com.syjiaer.clinic.server.common.api.request.SocialRequest;
import com.syjiaer.clinic.server.common.constants.Constants; import com.syjiaer.clinic.server.common.constants.Constants;
import com.syjiaer.clinic.server.common.enums.InventorySocialTypeEnum; import com.syjiaer.clinic.server.common.enums.InventorySocialTypeEnum;
import com.syjiaer.clinic.server.common.enums.RetailInventoryTypeEnum;
import com.syjiaer.clinic.server.common.enums.RetailOrderPayTypeEnum;
import com.syjiaer.clinic.server.common.enums.UploadStatusEnum; import com.syjiaer.clinic.server.common.enums.UploadStatusEnum;
import com.syjiaer.clinic.server.common.exception.MessageException; import com.syjiaer.clinic.server.common.exception.MessageException;
import com.syjiaer.clinic.server.common.vo.Page; import com.syjiaer.clinic.server.common.vo.Page;
import com.syjiaer.clinic.server.entity.charge.ChargeInventoryLog;
import com.syjiaer.clinic.server.entity.charge.ChargeOrder;
import com.syjiaer.clinic.server.entity.charge.ChargeSocialPayLog;
import com.syjiaer.clinic.server.entity.goods.Goods; import com.syjiaer.clinic.server.entity.goods.Goods;
import com.syjiaer.clinic.server.entity.inventory.*; import com.syjiaer.clinic.server.entity.inventory.*;
import com.syjiaer.clinic.server.entity.manager.ManagerUser; import com.syjiaer.clinic.server.entity.manager.ManagerUser;
import com.syjiaer.clinic.server.entity.organization.OrganizationMember;
import com.syjiaer.clinic.server.entity.social.SocialDirectory; import com.syjiaer.clinic.server.entity.social.SocialDirectory;
import com.syjiaer.clinic.server.entity.social.dto.InventoryInitQuery; import com.syjiaer.clinic.server.entity.social.dto.InventoryInitQuery;
import com.syjiaer.clinic.server.entity.social.dto.InventoryLogQuery; import com.syjiaer.clinic.server.entity.social.dto.InventoryLogQuery;
@ -21,18 +27,26 @@ import com.syjiaer.clinic.server.entity.social.vo.NotDoNumberVo;
import com.syjiaer.clinic.server.entity.social.vo.SocialInventoryInitVo; import com.syjiaer.clinic.server.entity.social.vo.SocialInventoryInitVo;
import com.syjiaer.clinic.server.entity.social.vo.SocialInventoryLogVo; import com.syjiaer.clinic.server.entity.social.vo.SocialInventoryLogVo;
import com.syjiaer.clinic.server.entity.social.vo.SocialInventoryPurchaseLogVo; import com.syjiaer.clinic.server.entity.social.vo.SocialInventoryPurchaseLogVo;
import com.syjiaer.clinic.server.mapper.charge.ChargeInventoryLogMapper;
import com.syjiaer.clinic.server.mapper.charge.ChargeOrderMapper;
import com.syjiaer.clinic.server.mapper.charge.ChargeSocialPayLogMapper;
import com.syjiaer.clinic.server.mapper.goods.GoodsMapper; import com.syjiaer.clinic.server.mapper.goods.GoodsMapper;
import com.syjiaer.clinic.server.mapper.inventory.*; import com.syjiaer.clinic.server.mapper.inventory.*;
import com.syjiaer.clinic.server.mapper.manager.ManagerUserMapper;
import com.syjiaer.clinic.server.mapper.organization.OrganizationMemberMapper;
import com.syjiaer.clinic.server.mapper.social.SocialDirectoryMapper; import com.syjiaer.clinic.server.mapper.social.SocialDirectoryMapper;
import com.syjiaer.clinic.server.service.BaseService; import com.syjiaer.clinic.server.service.BaseService;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestMapping;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
/* /*
* 医保进销存上报 * 医保进销存上报
@ -46,10 +60,14 @@ public class SocialInventoryUploadService extends BaseService {
@Autowired @Autowired
private InventoryLogMapper inventoryLogMapper; private InventoryLogMapper inventoryLogMapper;
@Autowired @Autowired
private OrganizationMemberMapper organizationMemberMapper;
@Autowired
private InventoryMapper inventoryMapper; private InventoryMapper inventoryMapper;
@Autowired @Autowired
private GoodsMapper goodsMapper; private GoodsMapper goodsMapper;
@Autowired @Autowired
private ManagerUserMapper managerUserMapper;
@Autowired
private SocialDirectoryMapper socialDirectoryMapper; private SocialDirectoryMapper socialDirectoryMapper;
@Autowired @Autowired
private InventoryPurchaseMapper inventoryPurchaseMapper; private InventoryPurchaseMapper inventoryPurchaseMapper;
@ -57,6 +75,12 @@ public class SocialInventoryUploadService extends BaseService {
private SocialRequest socialRequest; private SocialRequest socialRequest;
@Autowired @Autowired
private InventorySupplierMapper inventorySupplierMapper; private InventorySupplierMapper inventorySupplierMapper;
@Autowired
private ChargeInventoryLogMapper chargeInventoryLogMapper;
@Autowired
private ChargeOrderMapper chargeOrderMapper;
@Autowired
private ChargeSocialPayLogMapper chargeSocialPayLogMapper;
public Page<SocialInventoryInitVo> get3501List(InventoryInitQuery initQuery) { public Page<SocialInventoryInitVo> get3501List(InventoryInitQuery initQuery) {
if (initQuery == null) { if (initQuery == null) {
@ -200,11 +224,10 @@ public class SocialInventoryUploadService extends BaseService {
long count3503 = inventoryPurchaseLogMapper.selectCount(pLogQuery); long count3503 = inventoryPurchaseLogMapper.selectCount(pLogQuery);
// QueryWrapper<RetailOrderInventory> rolQuery = new QueryWrapper<>(); QueryWrapper<ChargeInventoryLog> rolQuery = new QueryWrapper<>();
// rolQuery.in("upload_status", UploadStatusEnum.NoUpload.getStatus(), UploadStatusEnum.UploadFailed.getStatus()); rolQuery.in("upload_status", UploadStatusEnum.NoUpload.getStatus(), UploadStatusEnum.UploadFailed.getStatus());
// rolQuery.in("type", RetailInventoryTypeEnum.Sale.getType(), RetailInventoryTypeEnum.Refund.getType()); rolQuery.in("type", RetailInventoryTypeEnum.Sale.getType(), RetailInventoryTypeEnum.Refund.getType());
// long count3505 = iRetailOrderInventoryService.count(rolQuery); long count3505 = chargeInventoryLogMapper.selectCount(rolQuery);
long count3505 = 0;
NotDoNumberVo notDoNumberVo = new NotDoNumberVo(); NotDoNumberVo notDoNumberVo = new NotDoNumberVo();
notDoNumberVo.setNumber3501(count3501); notDoNumberVo.setNumber3501(count3501);
notDoNumberVo.setNumber3502(count3502); notDoNumberVo.setNumber3502(count3502);
@ -378,117 +401,140 @@ public class SocialInventoryUploadService extends BaseService {
return true; return true;
} }
// public boolean upload3505() { public Page<ChargeInventoryLog> get3505List(RetailInventoryQuery rlQuery) {
// QueryWrapper<RetailOrderInventory> roQuery = new QueryWrapper<>(); /**
// roQuery.in("upload_status", UploadStatusEnum.NoUpload.getStatus(), UploadStatusEnum.UploadFailed.getStatus()); * 获取3505列表
// roQuery.in("type", RetailInventoryTypeEnum.Sale.getType(), RetailInventoryTypeEnum.Refund.getType()); *
// roQuery.orderByAsc("id"); * @return
// roQuery.last("limit 1"); */
// RetailOrderInventory orderInventory = iRetailOrderInventoryService.getOne(roQuery); if (rlQuery == null) {
// if (orderInventory == null) { throw new MessageException("没有带查询条件");
// return false; }
// } QueryWrapper<ChargeInventoryLog> queryWrapper = new QueryWrapper<>();
// Inventory inventory = iInventoryService.getById(orderInventory.getInventoryId()); queryWrapper.ne("type", RetailInventoryTypeEnum.Incomplete.getType());
// if (rlQuery.getPageNum() == null || rlQuery.getPageNum() == 0) {
// RetailOrder retailOrder = iRetailOrderService.getOne(new QueryWrapper<RetailOrder>() rlQuery.setPageNum(1);
// .eq("code", orderInventory.getRetailOrderCode())); }
// ManagerUser docker =iManagerUserService.getById(retailOrder.getDockerId()); if (rlQuery.getPageSize() == null || rlQuery.getPageSize() == 0) {
// ManagerUser salePerson = iManagerUserService.getById(retailOrder.getSalePersonId()); rlQuery.setPageSize(Constants.DetailPageSize);
// Goods goods = iGoodsService.getById(inventory.getGoodId()); }
// SocialDirectory socialDirectory = iSocialDirectoryService.getByCode(goods.getHilistCode()); if (rlQuery.getUploadStatus() != null && UploadStatusEnum.getByStatus(rlQuery.getUploadStatus()) != null) {
// JSONObject jsonObject = JSONObject.parseObject(socialDirectory.getData()); queryWrapper.eq("upload_status", rlQuery.getUploadStatus());
// String jsonRxFlag = (String) jsonObject.get("rx_flag"); }
// String rxFlag = jsonRxFlag == null||jsonRxFlag.isEmpty() ? "0" : jsonRxFlag; if (rlQuery.getType() != null && InventorySocialTypeEnum.getByType(rlQuery.getType()) != null) {
// queryWrapper.eq("type", rlQuery.getType());
// if (orderInventory.getType().equals(RetailInventoryTypeEnum.Sale.getType())){ }
// //销售 走3505 Page<ChargeInventoryLog> chargeInventoryLogPage = pageHelper(rlQuery.getPageNum(), rlQuery.getPageSize(), queryWrapper, chargeInventoryLogMapper);
// IM3505 im3505 = new IM3505();
// IM3505.SelInfo selInfo = new IM3505.SelInfo(); return chargeInventoryLogPage;
// selInfo.setMed_list_codg(goods.getHilistCode()); }
// selInfo.setFixmedins_hilist_id(String.valueOf(socialDirectory.getId()));
// selInfo.setFixmedins_hilist_name(goods.getName()); public boolean upload3505() {
// selInfo.setFixmedins_bchno(String.valueOf(orderInventory.getInventoryId())); QueryWrapper<ChargeInventoryLog> roQuery = new QueryWrapper<>();
// selInfo.setPrsc_dr_name(docker.getName()); roQuery.in("upload_status", UploadStatusEnum.NoUpload.getStatus(), UploadStatusEnum.UploadFailed.getStatus());
// selInfo.setPhar_name(docker.getName()); roQuery.in("type", RetailInventoryTypeEnum.Sale.getType(), RetailInventoryTypeEnum.Refund.getType());
// selInfo.setPhar_prac_cert_no(docker.getDockerCertno()); roQuery.orderByAsc("id");
// roQuery.last("limit 1");
// if (retailOrder.getPayType().equals(RetailOrderPayTypeEnum.MEDICARE.getCode())){ ChargeInventoryLog orderInventory = chargeInventoryLogMapper.selectOne(roQuery);
// //医保支付 if (orderInventory == null) {
// RetailSocialPayLog payLog = iRetailSocialPayLogService.getOne(new QueryWrapper<RetailSocialPayLog>(). return false;
// eq("retail_order_code", orderInventory.getRetailOrderCode())); }
// selInfo.setSetl_id(payLog.getSetlId()); Inventory inventory = inventoryMapper.selectById(orderInventory.getInventoryId());
// selInfo.setMdtrt_sn(payLog.getMdtrtId());
// selInfo.setPsn_no(payLog.getPsnNo()); ChargeOrder chargeOrder = chargeOrderMapper.selectOne(new QueryWrapper<ChargeOrder>()
// selInfo.setPsn_name(payLog.getName()); .eq("code", orderInventory.getChargeOrderCode()).last("limit 1"));
// selInfo.setCertno(payLog.getCertno()); ManagerUser salePerson = managerUserMapper.selectById(chargeOrder.getSalePersonId());
// selInfo.setMdtrt_setl_type("1"); OrganizationMember docker = organizationMemberMapper.selectById(salePerson.getOrganizationMemberId());
//
// }else {
// selInfo.setMdtrt_sn(orderInventory.getFeedetlSn()); Goods goods = goodsMapper.selectById(inventory.getGoodId());
// selInfo.setMdtrt_setl_type("2"); SocialDirectory socialDirectory = socialDirectoryMapper.getByCode(goods.getHilistCode());
// } JSONObject jsonObject = JSONObject.parseObject(socialDirectory.getData());
// selInfo.setManu_lotnum(inventory.getProductionBatchCode()); String jsonRxFlag = (String) jsonObject.get("rx_flag");
// selInfo.setManu_date(inventory.getProductionDate()); String rxFlag = jsonRxFlag == null||jsonRxFlag.isEmpty() ? "0" : jsonRxFlag;
// selInfo.setExpy_end(inventory.getExpiryDate());
// selInfo.setRx_flag(rxFlag); if (orderInventory.getType().equals(RetailInventoryTypeEnum.Sale.getType())){
// selInfo.setTrdn_flag(orderInventory.getTrdnFlag()?"0":"1"); //销售 走3505
// selInfo.setRtal_docno(orderInventory.getRetailOrderCode()); IM3505 im3505 = new IM3505();
// selInfo.setSel_retn_time(orderInventory.getCreateTime()); im3505.setMedListCodg(goods.getHilistCode());
// selInfo.setSel_retn_cnt(BigDecimal.valueOf(orderInventory.getNumber())); im3505.setFixmedinsHilistId(String.valueOf(socialDirectory.getId()));
// selInfo.setSel_retn_opter_name(salePerson.getName()); im3505.setFixmedinsHilistName(goods.getName());
// List<String> drugtracinfo = new ArrayList<>(); im3505.setFixmedinsBchno(String.valueOf(orderInventory.getInventoryId()));
// selInfo.setDrugtracinfo(drugtracinfo); im3505.setPrscDrName(docker.getName());
// im3505.setSelinfo(selInfo); im3505.setPharName(docker.getName());
// socialRequest.call3505(im3505); im3505.setPharPracCertNo(docker.getIdCardNumber());
// }
// if (chargeOrder.getPayType().equals(RetailOrderPayTypeEnum.MEDICARE.getCode())){
// if (orderInventory.getType().equals(RetailInventoryTypeEnum.Refund.getType())){ //医保支付
// //退款 走3506 ChargeSocialPayLog payLog = chargeSocialPayLogMapper.selectOne(new QueryWrapper<ChargeSocialPayLog>().
// IM3506 im3506 = new IM3506(); eq("retail_order_code", orderInventory.getChargeOrderCode()).last("limit 1"));
// IM3506.SelInfo selInfo = new IM3506.SelInfo(); im3505.setSetlId(payLog.getSetlId());
// selInfo.setMed_list_codg(goods.getHilistCode()); im3505.setMdtrtSn(payLog.getMdtrtId());
// selInfo.setFixmedins_hilist_id(String.valueOf(socialDirectory.getId())); im3505.setPsnNo(payLog.getPsnNo());
// selInfo.setFixmedins_hilist_name(goods.getName()); im3505.setPsnName(payLog.getName());
// selInfo.setFixmedins_bchno(String.valueOf(orderInventory.getInventoryId())); im3505.setCertno(payLog.getCertno());
// selInfo.setPrsc_dr_name(docker.getName()); im3505.setMdtrtSetlType("1");
// selInfo.setPhar_name(docker.getName());
// selInfo.setPhar_prac_cert_no(docker.getDockerCertno()); }else {
// im3505.setMdtrtSn(orderInventory.getFeedetlSn());
// if (retailOrder.getPayType().equals(RetailOrderPayTypeEnum.MEDICARE.getCode())){ im3505.setMdtrtSetlType("2");
// //医保支付 }
// RetailSocialPayLog payLog = iRetailSocialPayLogService.getOne(new QueryWrapper<RetailSocialPayLog>(). im3505.setManuLotnum(inventory.getProductionBatchCode());
// eq("retail_order_code", orderInventory.getRetailOrderCode())); im3505.setManuDate(inventory.getProductionDate());
// selInfo.setSetl_id(payLog.getSetlId()); im3505.setExpyEnd(inventory.getExpiryDate());
// selInfo.setMdtrt_sn(payLog.getMdtrtId()); im3505.setRxFlag(rxFlag);
// selInfo.setPsn_no(payLog.getPsnNo()); im3505.setTrdnFlag(orderInventory.getTrdnFlag()?"0":"1");
// selInfo.setPsn_name(payLog.getName()); im3505.setRtalDocno(orderInventory.getChargeOrderCode());
// selInfo.setCertno(payLog.getCertno()); im3505.setSelRetnTime(LocalDate.from(orderInventory.getCreateTime()));
// selInfo.setMdtrt_setl_type("1"); im3505.setSelRetnCnt(BigDecimal.valueOf(orderInventory.getNumber()));
// im3505.setSelRetnOpterName(salePerson.getName());
// }else { List<Map<String,String>> drugtracinfo = new ArrayList<>();
// selInfo.setMdtrt_sn(orderInventory.getFeedetlSn()); im3505.setDrugtracinfo(drugtracinfo);
// selInfo.setMdtrt_setl_type("2"); socialRequest.call3505(im3505);
// } }
// selInfo.setManu_lotnum(inventory.getProductionBatchCode());
// selInfo.setManu_date(inventory.getProductionDate()); if (orderInventory.getType().equals(RetailInventoryTypeEnum.Refund.getType())){
// selInfo.setExpy_end(inventory.getExpiryDate()); //退款 走3506
// selInfo.setRx_flag(rxFlag); IM3506 im3506 = new IM3506();
// selInfo.setTrdn_flag(orderInventory.getTrdnFlag()?"0":"1"); im3506.setMedListCodg(goods.getHilistCode());
// selInfo.setRtal_docno(orderInventory.getRetailOrderCode()); im3506.setFixmedinsHilistId(String.valueOf(socialDirectory.getId()));
// selInfo.setSel_retn_time(orderInventory.getCreateTime()); im3506.setFixmedinsHilistName(goods.getName());
// selInfo.setSel_retn_cnt(BigDecimal.valueOf(orderInventory.getNumber())); im3506.setFixmedinsBchno(String.valueOf(orderInventory.getInventoryId()));
// selInfo.setSel_retn_opter_name(salePerson.getName()); im3506.setSelRetnOpterName(docker.getName());
// List<String> drugtracinfo = new ArrayList<>();
// selInfo.setDrugtracinfo(drugtracinfo); if (chargeOrder.getPayType().equals(RetailOrderPayTypeEnum.MEDICARE.getCode())){
// im3506.setSelinfo(selInfo); //医保支付
// socialRequest.call3506(im3506); ChargeSocialPayLog payLog = chargeSocialPayLogMapper.selectOne(new QueryWrapper<ChargeSocialPayLog>().
// } eq("retail_order_code", orderInventory.getChargeOrderCode()).last("limit 1"));
// RetailOrderInventory updateOrderInventory = new RetailOrderInventory(); im3506.setSetlId(payLog.getSetlId());
// updateOrderInventory.setId(orderInventory.getId()); im3506.setMdtrtSn(payLog.getMdtrtId());
// updateOrderInventory.setUploadStatus(UploadStatusEnum.Uploaded.getStatus()); im3506.setPsnNo(payLog.getPsnNo());
// updateOrderInventory.setCreateTime(LocalDateTime.now()); im3506.setPsnName(payLog.getName());
// iRetailOrderInventoryService.updateById(updateOrderInventory); im3506.setCertno(payLog.getCertno());
// return true;
// } }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.setSelRetnCnt(BigDecimal.valueOf(orderInventory.getNumber()));
im3506.setSelRetnOpterName(salePerson.getName());
im3506.setSelRetnTime(LocalDateTime.now());
im3506.setSelRetnOpterName(salePerson.getName());
List<Map<String,String>> drugtracinfo = new ArrayList<>();
im3506.setDrugtracinfo(drugtracinfo);
socialRequest.call3506(im3506);
}
ChargeInventoryLog updateOrderInventory = new ChargeInventoryLog();
updateOrderInventory.setId(orderInventory.getId());
updateOrderInventory.setUploadStatus(UploadStatusEnum.Uploaded.getStatus());
updateOrderInventory.setCreateTime(LocalDateTime.now());
chargeInventoryLogMapper.updateById(updateOrderInventory);
return true;
}
} }

View File

@ -0,0 +1,243 @@
package com.syjiaer.clinic.server.service.social;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.syjiaer.clinic.server.common.api.input.IM2601;
import com.syjiaer.clinic.server.common.api.input.IM3201;
import com.syjiaer.clinic.server.common.api.input.IM3202;
import com.syjiaer.clinic.server.common.api.output.OM3201;
import com.syjiaer.clinic.server.common.api.output.OM3202;
import com.syjiaer.clinic.server.common.api.output.OM9101;
import com.syjiaer.clinic.server.common.api.request.SocialRequest;
import com.syjiaer.clinic.server.common.config.Config;
import com.syjiaer.clinic.server.common.exception.MessageException;
import com.syjiaer.clinic.server.common.util.FileUtil;
import com.syjiaer.clinic.server.common.util.HttpUtil;
import com.syjiaer.clinic.server.entity.charge.ChargeOrder;
import com.syjiaer.clinic.server.entity.charge.ChargeSocialPayLog;
import com.syjiaer.clinic.server.entity.social.dto.ReconciliationItemDto;
import com.syjiaer.clinic.server.entity.social.vo.ReconciliationDetailVo;
import com.syjiaer.clinic.server.entity.social.vo.ReconciliationItemVo;
import com.syjiaer.clinic.server.mapper.charge.ChargeOrderMapper;
import com.syjiaer.clinic.server.mapper.charge.ChargeSocialPayLogMapper;
import com.syjiaer.clinic.server.service.BaseService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
@Service
public class SocialReconciliationService extends BaseService {
@Autowired
private ChargeSocialPayLogMapper chargeSocialPayLogMapper;
@Autowired
private ChargeOrderMapper chargeOrderMapper;
@Autowired
private SocialRequest socialRequest;
@Autowired
private FileUtil fileUtil;
@Autowired
private Config config;
@Autowired
private HttpUtil httpUtil;
public List<ReconciliationItemVo> getList(LocalDateTime beginTime, LocalDateTime endTime) {
QueryWrapper<ChargeSocialPayLog> clrQuery = new QueryWrapper<>();
clrQuery.select("clr_type,insutype,clr_optins,count(0) as count");
clrQuery.groupBy("clr_type","insutype","clr_optins");
clrQuery.ge("setl_time",beginTime);
clrQuery.le("setl_time",endTime);
List<Map<String,Object>> mapList = chargeSocialPayLogMapper.selectMaps(clrQuery);
List<ReconciliationItemVo> voList = new ArrayList<>();
for (Map<String,Object> item : mapList){
if (item.get("clr_type") == null || item.get("insutype") == null){
continue;
}
String clr = item.get("clr_type").toString();
String insutype = item.get("insutype").toString();
String clr_optins = item.get("clr_optins") == null ? "" : item.get("clr_optins").toString();
QueryWrapper<ChargeSocialPayLog> listQuery = new QueryWrapper<>();
listQuery.eq("clr_type",clr);
listQuery.eq("insutype",insutype);
listQuery.eq("clr_optins",clr_optins);
listQuery.ge("setl_time",beginTime);
listQuery.le("setl_time",endTime);
List<ChargeSocialPayLog> logs = chargeSocialPayLogMapper.selectList(listQuery);
ReconciliationItemVo vo = new ReconciliationItemVo();
vo.setReconciliationType(clr);
vo.setInsuranceType(insutype);
vo.setHandlingInstitution(clr_optins);
vo.setSettlementCount(logs.size());
for (ChargeSocialPayLog log : logs){
vo.setTotalMedicalCost(log.getPsnPartAmt().add(vo.getTotalMedicalCost()));
vo.setTotalFundPayment(log.getFundPaySumamt().add(vo.getTotalFundPayment()));
vo.setTotalPersonalAccountPayment(log.getAcctPay().add(vo.getTotalPersonalAccountPayment()));
}
voList.add(vo);
}
return voList;
}
/**
* 对总账
* @param dto
* @return
*/
public OM3201 totalDo(ReconciliationItemDto dto) {
IM3201 im3201 = new IM3201();
IM3201.Data inData = new IM3201.Data();
inData.setInsutype(dto.getInsuranceType());
inData.setClr_type(dto.getReconciliationType());
inData.setSetl_optins(dto.getHandlingInstitution());
inData.setStmt_begndate(dto.getBeginTime().toString());
inData.setStmt_enddate(dto.getEndTime().toString());
inData.setMedfee_sumamt(dto.getTotalMedicalCost());
inData.setFund_pay_sumamt(dto.getTotalFundPayment());
inData.setAcct_pay(dto.getTotalPersonalAccountPayment());
inData.setFixmedins_setl_cnt(new BigDecimal(dto.getSettlementCount()));
im3201.setData(inData);
return socialRequest.call3201(im3201);
}
/**
* 明显对账
* @param dto
*/
public List<ReconciliationDetailVo> detailDo(ReconciliationItemDto dto) {
QueryWrapper<ChargeSocialPayLog> listQuery = new QueryWrapper<>();
listQuery.eq("clr_type",dto.getReconciliationType());
listQuery.eq("insutype",dto.getInsuranceType());
listQuery.eq("clr_optins",dto.getHandlingInstitution());
listQuery.ge("setl_time",dto.getBeginTime());
listQuery.le("setl_time",dto.getEndTime());
List<ChargeSocialPayLog> logs = chargeSocialPayLogMapper.selectList(listQuery);
try {
String filePath = File.createTempFile("temp", ".txt").toString();
File file = new File(filePath);
File parentDir = file.getParentFile();
// 如果父目录不存在创建多层文件夹
if (!parentDir.exists()) {
parentDir.mkdirs();
}
// 如果文件不存在创建文件
if (!file.exists()) {
file.createNewFile();
}
//生成文件
FileWriter writer = new FileWriter(file);
for (ChargeSocialPayLog log : logs){
//TODO 退费标志
QueryWrapper<ChargeOrder> orderQuery = new QueryWrapper<>();
orderQuery.eq("code",log.getChargeOrderCode());
orderQuery.last("limit 1");
ChargeOrder dbOrder = chargeOrderMapper.selectOne(orderQuery);
String line = log.getSetlId()+"\t"+log.getMdtrtId()+"\t"+
log.getPsnNo()+"\t"+dbOrder.getTotalPrice()+"\t"+log.getFundPaySumamt()+"\t" +log.getAcctPay()+"\t"
+"0"+"\n";
writer.write(line);
}
writer.flush();
writer.close();
log.info("对账明细文件创建成功,文件路径:"+filePath);
//压缩文件为zip包
String zipPath = filePath.substring(0,filePath.lastIndexOf("."))+".zip";
fileUtil.zipFiles(new String[]{filePath},zipPath);
//上传文件
OM9101 om9101 = socialRequest.call9101(zipPath);
//请求明细对账接口
IM3202 im3202 = new IM3202();
IM3202.Data inData = new IM3202.Data();
inData.setSetl_optins(dto.getHandlingInstitution());
inData.setFile_qury_no(om9101.getFile_qury_no());
inData.setStmt_begndate(dto.getBeginTime().toString());
inData.setStmt_enddate(dto.getEndTime().toString());
inData.setMedfee_sumamt(dto.getTotalMedicalCost());
inData.setFund_pay_sumamt(dto.getTotalFundPayment());
inData.setCash_payamt(new BigDecimal(0));
inData.setFixmedins_setl_cnt(BigDecimal.valueOf(dto.getSettlementCount()));
inData.setRefd_setl_flag("0");
im3202.setData(inData);
OM3202 om3202 = socialRequest.call3202(im3202);
Map<String, Object> input_dw = new HashMap<>();
String downloadFileName = om3202.getFilename();
input_dw.put("file_qury_no", om3202.getFile_qury_no());
input_dw.put("fixmedins_code",config.get("social","fixmedinsCode") );
input_dw.put("filename", om3202.getFilename());
String savePath = file.getParent();
//下载文件
httpUtil.callToFile("9102", "fsDownloadIn", input_dw, savePath+"\\"+downloadFileName);
//解析文件
List<String> unzip = fileUtil.unzip(savePath,downloadFileName);
List<String> readToList = fileUtil.readToList(unzip);
List<ReconciliationDetailVo> voList = new ArrayList<>();
for (String s : readToList){
ReconciliationDetailVo vo = new ReconciliationDetailVo();
List<String> sList = List.of(s.split("\t"));
vo.setPsnNo(sList.get(0));
vo.setMdtrtId(sList.get(1));
vo.setSetlId(sList.get(2));
vo.setMsgid(sList.get(3));
vo.setStmtRslt(sList.get(4));
vo.setRefdSetlFlag(sList.get(5));
vo.setMemo(sList.get(6));
vo.setMedfeeSumamt(new BigDecimal(sList.get(7)));
vo.setFundPaySumamt(new BigDecimal(sList.get(8)));
vo.setAcctPay(new BigDecimal(sList.get(9)));
voList.add(vo);
}
return voList;
}catch (IOException io){
log.error("创建文件失败");
throw new MessageException("创建文件失败");
}catch (Exception e){
log.error("未知错误",e);
throw new MessageException("未知错误");
}
}
/**
* 测试明细对账
* @return
*/
public List<ReconciliationDetailVo> testDetailDo() {
String path = "C:/Users/jiaer/Desktop";
String fileName = "FSI0000296920.zip";
List<String> unzip = fileUtil.unzip(path, fileName);
List<String> readToList = fileUtil.readToList(unzip);
List<ReconciliationDetailVo> voList = new ArrayList<>();
for (String s : readToList){
ReconciliationDetailVo vo = new ReconciliationDetailVo();
List<String> sList = List.of(s.split("\t"));
vo.setPsnNo(sList.get(0));
vo.setMdtrtId(sList.get(1));
vo.setSetlId(sList.get(2));
vo.setMsgid(sList.get(3));
vo.setStmtRslt(sList.get(4));
vo.setRefdSetlFlag(sList.get(5));
vo.setMemo(sList.get(6));
vo.setMedfeeSumamt(new BigDecimal(sList.get(7)));
vo.setFundPaySumamt(new BigDecimal(sList.get(8)));
vo.setAcctPay(new BigDecimal(sList.get(9)));
voList.add(vo);
}
System.out.println(voList);
return voList;
}
public void reversal(IM2601 im2601) {
socialRequest.call2601(im2601);
}
}

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.syjiaer.clinic.server.mapper.charge.ChargeSocialPayLogMapper">
</mapper>