Commit 732cec16 by huangtao

签名

parent a72240d7
Showing with 437 additions and 62 deletions
......@@ -13,9 +13,9 @@ infynova:
# 本地存储
local:
# 本地存储路径
basePath: /data/infyos/file
basePath: /data/jmai/file
# 后端下载地址
downloadUrl: http://${serverAddress}:37098/api/oss/downloadFile
downloadUrl: http://${serverAddress}:38098/api/oss/downloadFile
# # ########################
# # IVS
......
......@@ -4,7 +4,10 @@ package com.jmai.physic.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jmai.physic.dto.PhysicAmpouleCreateReq;
import com.jmai.physic.dto.PhysicAmpouleQueryReq;
import com.jmai.physic.dto.PhysicAmpouleSignReq;
import com.jmai.physic.dto.PhysicStorageAmpouleSignReq;
import com.jmai.physic.entity.PhysicAmpoule;
import com.jmai.physic.entity.PhysicStorageAmpoule;
import com.jmai.physic.service.PhysicAmpouleService;
import com.jmai.physic.vo.PhysicAmpouleUseVO;
import com.jmai.sys.aop.Auth;
......@@ -25,7 +28,7 @@ import java.util.List;
@Auth
@RestController
@RequestMapping("/physicAmpoule")
@Api(tags = "药品专用登记-药室")
@Api(tags = "药品空安瓿登记-药室")
@ApiImplicitParams({@ApiImplicitParam(paramType = "header", name = "Access-Token", value = "凭证", required = true, dataType = "string")})
public class PhysicAmpouleController {
......@@ -39,6 +42,7 @@ public class PhysicAmpouleController {
physicAmpouleService.create(req);
return ResponseData.ok();
}
@PostMapping("/listPage")
@ApiOperation(value = "查询")
public Page<PhysicAmpoule> listPage(@RequestBody PhysicAmpouleQueryReq req) {
......@@ -53,4 +57,11 @@ public class PhysicAmpouleController {
return ResponseData.ok(physicAmpouleUseVOS);
}
@PostMapping("/sign")
@ApiOperation(value = "签名")
public ResponseData<PhysicAmpoule> sign(@RequestBody PhysicAmpouleSignReq physicAmpouleSignReq) {
PhysicAmpoule ampoule = physicAmpouleService.sign(physicAmpouleSignReq);
return ResponseData.ok(ampoule);
}
}
......@@ -2,14 +2,12 @@ package com.jmai.physic.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jmai.physic.dto.PhysicCheckQueryReq;
import com.jmai.physic.dto.PhysicDestroyCheckCreateReq;
import com.jmai.physic.dto.PhysicDestroyCreateReq;
import com.jmai.physic.dto.PhysicRecordQueryReq;
import com.jmai.physic.dto.*;
import com.jmai.physic.entity.PhysicDestroy;
import com.jmai.physic.entity.PhysicRecord;
import com.jmai.physic.service.PhysicDestroyCheckService;
import com.jmai.physic.service.PhysicDestroyService;
import com.jmai.physic.vo.PhysicApplyVO;
import com.jmai.sys.aop.Auth;
import com.jmai.sys.dto.ResponseData;
import io.swagger.annotations.Api;
......@@ -47,5 +45,12 @@ public class PhysicDestroyController {
public Page<PhysicDestroy> listPage(@RequestBody PhysicCheckQueryReq req) {
return physicDestroyService.listPage(req);
}
@PostMapping("/sign")
@ApiOperation(value = "签名")
public ResponseData<PhysicDestroy> sign(@RequestBody PhysicDestroySignReq physicDestroySignReq) {
PhysicDestroy physicDestroy = physicDestroyService.sign(physicDestroySignReq);
return ResponseData.ok(physicDestroy);
}
}
......@@ -4,8 +4,10 @@ package com.jmai.physic.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jmai.physic.dto.PhysicRecordCreateReq;
import com.jmai.physic.dto.PhysicRecordQueryReq;
import com.jmai.physic.dto.PhysicRecordSignReq;
import com.jmai.physic.entity.PhysicRecord;
import com.jmai.physic.service.PhysicRecordService;
import com.jmai.physic.vo.PhysicApplyVO;
import com.jmai.sys.aop.Auth;
import com.jmai.sys.dto.ResponseData;
import io.swagger.annotations.Api;
......@@ -36,8 +38,8 @@ public class PhysicRecordController {
@PostMapping("/create")
@ApiOperation(value = "创建")
public ResponseData createPhysicRecord(@RequestBody @Valid PhysicRecordCreateReq req) {
physicRecordService.PhysicRecordCreate(req);
return ResponseData.ok();
List<PhysicRecord> records = physicRecordService.physicRecordCreate(req);
return ResponseData.ok(records);
}
@PostMapping("/listPage")
......@@ -46,4 +48,11 @@ public class PhysicRecordController {
return physicRecordService.listPage(req);
}
@PostMapping("/sign")
@ApiOperation(value = "签名")
public ResponseData<PhysicRecord> sign(@RequestBody PhysicRecordSignReq physicApplySignReq) {
PhysicRecord record = physicRecordService.sign(physicApplySignReq);
return ResponseData.ok(record);
}
}
......@@ -2,9 +2,7 @@ package com.jmai.physic.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jmai.physic.dto.PhysicAmpouleQueryReq;
import com.jmai.physic.dto.PhysicRecordQueryReq;
import com.jmai.physic.dto.PhysicStorageAmpouleCreateReq;
import com.jmai.physic.dto.*;
import com.jmai.physic.entity.PhysicRecord;
import com.jmai.physic.entity.PhysicStorageAmpoule;
import com.jmai.physic.service.PhysicStorageAmpouleService;
......@@ -27,7 +25,7 @@ import javax.validation.Valid;
@Auth
@RestController
@RequestMapping("/physicStorageAmpoule")
@Api(tags = "药品专用登记-药库")
@Api(tags = "药品空安瓿登记-药库")
@ApiImplicitParams({@ApiImplicitParam(paramType = "header", name = "Access-Token", value = "凭证", required = true, dataType = "string")})
public class PhysicStorageAmpouleController {
......@@ -42,11 +40,16 @@ public class PhysicStorageAmpouleController {
return ResponseData.ok();
}
@PostMapping("/listPage")
@ApiOperation(value = "查询")
public Page<PhysicStorageAmpoule> listPage(@RequestBody PhysicAmpouleQueryReq req) {
return physicStorageAmpouleService.listPage(req);
}
@PostMapping("/sign")
@ApiOperation(value = "签名")
public ResponseData<PhysicStorageAmpoule> sign(@RequestBody PhysicStorageAmpouleSignReq physicStorageAmpouleSignReq) {
PhysicStorageAmpoule ampoule = physicStorageAmpouleService.sign(physicStorageAmpouleSignReq);
return ResponseData.ok(ampoule);
}
}
......@@ -23,7 +23,7 @@ public class BillDTO {
@ApiModelProperty(value = "数量")
private Integer physicNum;
@ApiModelProperty(value = "1-采购入库 2-申领入库 3-申领出库")
@ApiModelProperty(value = " 1-采购入库 2-申领入库 3-申领出库 4-使用出库 5-回收空安瓿 6-退回空安瓿 7-销毁空安瓿")
private Integer type;
@ApiModelProperty(value = "厂家名称")
......
......@@ -15,7 +15,7 @@ public class PhysicAmpouleQueryReq extends PageReq {
private String physicName;
private LocalDate dateTime;
private String dateTime;
@ApiModelProperty(value = "部门")
private Integer deptId;
......
package com.jmai.physic.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class PhysicAmpouleSignReq {
@ApiModelProperty(value = "签名token")
private String encryptedToken;
@ApiModelProperty(value = "签名账号")
private String relBizNo;
@ApiModelProperty(value = "签名base64图片")
private String base64SourceData;
@ApiModelProperty(value = "药库空安瓿id")
private Long physicAmpouleId;
}
......@@ -53,6 +53,8 @@ public class PhysicApplyCreateReq {
@ApiModelProperty(value = "厂家名称")
private String factoryName;
@ApiModelProperty(value = "失效时间")
private String expireDate;
}
package com.jmai.physic.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class PhysicDestroySignReq {
@ApiModelProperty(value = "签名token")
private String encryptedToken;
@ApiModelProperty(value = "签名账号")
private String relBizNo;
@ApiModelProperty(value = "签名base64图片")
private String base64SourceData;
@ApiModelProperty(value = "药品销毁id")
private Long physicDestroyId;
}
package com.jmai.physic.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class PhysicRecordSignReq {
@ApiModelProperty(value = "签名token")
private String encryptedToken;
@ApiModelProperty(value = "签名账号")
private String relBizNo;
@ApiModelProperty(value = "签名base64图片")
private String base64SourceData;
@ApiModelProperty(value = "药品登记id")
private Long physicRecordId;
}
package com.jmai.physic.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class PhysicStorageAmpouleSignReq {
@ApiModelProperty(value = "签名token")
private String encryptedToken;
@ApiModelProperty(value = "签名账号")
private String relBizNo;
@ApiModelProperty(value = "签名base64图片")
private String base64SourceData;
@ApiModelProperty(value = "药库空安瓿id")
private Long physicStorageAmpouleId;
}
......@@ -35,7 +35,7 @@ public class PhysicAmpoule extends BaseVersionEntity {
private String orderNo;
private Integer deptId;
private Long deptId;
private Integer batchBalance;
......@@ -46,6 +46,9 @@ public class PhysicAmpoule extends BaseVersionEntity {
private String fhUser;
@ApiModelProperty(value = "0-待处理 1-接受退回处理 2-复核人处理")
private Integer status;
private String remark;
}
......@@ -36,6 +36,10 @@ public class PhysicApply extends BaseVersionEntity{
private String factoryName;
@ApiModelProperty(value = "失效时间")
private String expireDate;
@ApiModelProperty(value = "发药部门")
private Long fyDeptId;
......
......@@ -12,6 +12,8 @@ import lombok.Data;
public class PhysicRecord extends BaseVersionEntity {
private Long deptId;
@ApiModelProperty(value = "药品名称")
private String physicName;
......@@ -19,7 +21,7 @@ public class PhysicRecord extends BaseVersionEntity {
private Integer physicNum;
@ApiModelProperty(value = "规格")
private String physiSpec;
private String physicSpec;
@ApiModelProperty(value = "批号")
private String batchNo;
......
......@@ -20,7 +20,7 @@ public class PhysicStorageAmpoule extends BaseVersionEntity {
private Integer physicNum;
@ApiModelProperty(value = "规格")
private String physiSpec;
private String physicSpec;
@ApiModelProperty(value = "批号")
private String batchNo;
......@@ -31,11 +31,13 @@ public class PhysicStorageAmpoule extends BaseVersionEntity {
private String physicType;
@ApiModelProperty(value = "1-接收 2-销毁")
private Integer type;
private String orderNo;
private Integer deptId;
private Long deptId;
private Integer recycleReceiptNum;
......
......@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jmai.physic.entity.PhysicDestroyCheckDetail;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface PhysicDestroyCheckDetailMapper extends BaseMapper<PhysicDestroyCheckDetail> {
}
......@@ -3,7 +3,9 @@ package com.jmai.physic.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jmai.physic.dto.PhysicAmpouleCreateReq;
import com.jmai.physic.dto.PhysicAmpouleQueryReq;
import com.jmai.physic.dto.PhysicAmpouleSignReq;
import com.jmai.physic.entity.PhysicAmpoule;
import com.jmai.physic.entity.PhysicStorageAmpoule;
import com.jmai.physic.vo.PhysicAmpouleUseVO;
import java.util.List;
......@@ -15,4 +17,7 @@ public interface PhysicAmpouleService {
List<PhysicAmpouleUseVO> analysis();
PhysicAmpoule sign(PhysicAmpouleSignReq physicAmpouleSignReq);
PhysicAmpoule getInfo(Long id);
}
......@@ -4,10 +4,17 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jmai.physic.dto.PhysicAmpouleCreateReq;
import com.jmai.physic.dto.PhysicCheckQueryReq;
import com.jmai.physic.dto.PhysicDestroyCreateReq;
import com.jmai.physic.dto.PhysicDestroySignReq;
import com.jmai.physic.entity.PhysicDestroy;
import com.jmai.physic.entity.PhysicRecord;
public interface PhysicDestroyService {
void create(PhysicDestroyCreateReq req);
Page<PhysicDestroy> listPage(PhysicCheckQueryReq req);
PhysicDestroy sign(PhysicDestroySignReq physicDestroySignReq);
PhysicDestroy getInfo(Long id);
}
......@@ -3,14 +3,19 @@ package com.jmai.physic.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jmai.physic.dto.PhysicRecordCreateReq;
import com.jmai.physic.dto.PhysicRecordQueryReq;
import com.jmai.physic.dto.PhysicRecordSignReq;
import com.jmai.physic.entity.PhysicRecord;
import java.util.List;
public interface PhysicRecordService {
void PhysicRecordCreate(PhysicRecordCreateReq req);
List<PhysicRecord> physicRecordCreate(PhysicRecordCreateReq req);
Page<PhysicRecord> listPage(PhysicRecordQueryReq req);
PhysicRecord sign(PhysicRecordSignReq physicRecordSignReq);
PhysicRecord getInfo(Long id);
}
......@@ -3,10 +3,17 @@ package com.jmai.physic.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jmai.physic.dto.PhysicAmpouleQueryReq;
import com.jmai.physic.dto.PhysicStorageAmpouleCreateReq;
import com.jmai.physic.dto.PhysicStorageAmpouleSignReq;
import com.jmai.physic.entity.PhysicRecord;
import com.jmai.physic.entity.PhysicStorageAmpoule;
public interface PhysicStorageAmpouleService {
void create(PhysicStorageAmpouleCreateReq req);
Page<PhysicStorageAmpoule> listPage(PhysicAmpouleQueryReq req);
PhysicStorageAmpoule sign(PhysicStorageAmpouleSignReq physicStorageAmpouleSignReq);
PhysicStorageAmpoule getInfo(Long id);
}
......@@ -2,21 +2,29 @@ package com.jmai.physic.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jmai.physic.dto.PhysicAmpouleCreateReq;
import com.jmai.physic.dto.PhysicAmpouleQueryReq;
import com.jmai.api.exception.ServiceException;
import com.jmai.physic.cloudsign.CloudsignService;
import com.jmai.physic.dto.*;
import com.jmai.physic.entity.PhysicAmpoule;
import com.jmai.physic.entity.PhysicStorageAmpoule;
import com.jmai.physic.mapper.PhysicAmpouleMapper;
import com.jmai.physic.service.PhysicAmpouleService;
import com.jmai.physic.service.PhysicBillService;
import com.jmai.physic.vo.PhysicAmpouleUseVO;
import com.jmai.sys.AbstractService;
import com.jmai.sys.consts.enums.RoleTypeEum;
import com.jmai.sys.ctx.SpringContextUtils;
import com.jmai.sys.entity.SysUser;
import com.jmai.sys.mapper.SysUserMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.util.List;
@Service
......@@ -25,6 +33,15 @@ public class PhysicAmpouleServiceImpl extends AbstractService implements PhysicA
@Resource
private PhysicAmpouleMapper physicAmpouleMapper;
@Resource
private CloudsignService cloudsignService;
@Resource
private SysUserMapper sysUserMapper;
@Resource
private PhysicBillService physicBillService;
@Transactional
@Override
......@@ -59,6 +76,46 @@ public class PhysicAmpouleServiceImpl extends AbstractService implements PhysicA
return physicAmpouleUseVOS;
}
@Override
public PhysicAmpoule sign(PhysicAmpouleSignReq physicAmpouleSignReq) {
Boolean f = false;
Long userId = SpringContextUtils.getUserId();
String getstamp = cloudsignService.sign(physicAmpouleSignReq.getEncryptedToken(), physicAmpouleSignReq.getRelBizNo(), physicAmpouleSignReq.getBase64SourceData());
PhysicAmpoule ampoule = getInfo(physicAmpouleSignReq.getPhysicAmpouleId());
SysUser sysUser = sysUserMapper.selectById(userId);
if(ampoule.getStatus().equals(0)){
if(!(RoleTypeEum.isPass(sysUser.getRoleAsList(),RoleTypeEum.JS)|| RoleTypeEum.isPass(sysUser.getRoleAsList(),RoleTypeEum.TH))){
throw new ServiceException("需要接受或退回人权限才可进行签名");
}
ampoule.setStatus(1);
SignInfoDTO signInfoDTO = new SignInfoDTO(getstamp, LocalDateTime.now(),userId);
ampoule.setChUser(JSONUtil.toJsonStr(signInfoDTO));
}else if(ampoule.getStatus().equals(1)) {
if (!RoleTypeEum.isPass(sysUser.getRoleAsList(), RoleTypeEum.FH)) {
throw new ServiceException("需要复核人权限才可进行签名");
}
ampoule.setStatus(2);
SignInfoDTO signInfoDTO = new SignInfoDTO(getstamp, LocalDateTime.now(), userId);
ampoule.setFhUser(JSONUtil.toJsonStr(signInfoDTO));
f=true;
}
if(f){
BillDTO billDTO = new BillDTO();
BeanUtil.copyProperties(ampoule,billDTO);
billDTO.setType(ampoule.getType().equals("1")?5:6);
billDTO.setDeptId(ampoule.getDeptId());
billDTO.setRefId(ampoule.getId());
physicBillService.createBill(billDTO);
}
physicAmpouleMapper.updateById(ampoule);
return getInfo(ampoule.getId());
}
@Override
public PhysicAmpoule getInfo(Long id) {
PhysicAmpoule ampoule = physicAmpouleMapper.selectById(id);
return ampoule;
}
private String getRate(BigDecimal num1,BigDecimal num2){
return num1.divide(num2, 4, RoundingMode.HALF_UP)
.multiply(new BigDecimal(100))
......
......@@ -46,7 +46,7 @@ public class PhysicBillServiceImpl extends AbstractService implements PhysicBill
bill.setAcquireNum(billDTO.getPhysicNum());
bill.setBalance(batchNoSum+billDTO.getPhysicNum());
bill.setBalanceAll(sum+billDTO.getPhysicNum());
}else if(billDTO.getType()==3){
}else if(billDTO.getType()==3 || billDTO.getType()==4){
bill.setExpendNum(billDTO.getPhysicNum());
bill.setBalance(batchNoSum-billDTO.getPhysicNum());
bill.setBalanceAll(sum-billDTO.getPhysicNum());
......
package com.jmai.physic.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jmai.physic.dto.PhysicCheckQueryReq;
import com.jmai.physic.dto.PhysicDestroyCreateReq;
import com.jmai.api.exception.ServiceException;
import com.jmai.physic.cloudsign.CloudsignService;
import com.jmai.physic.dto.*;
import com.jmai.physic.entity.PhysicDestroy;
import com.jmai.physic.entity.PhysicRecord;
import com.jmai.physic.entity.PhysicWarehouse;
import com.jmai.physic.mapper.PhysicDestroyMapper;
import com.jmai.physic.service.PhysicBillService;
import com.jmai.physic.service.PhysicDestroyService;
import com.jmai.sys.AbstractService;
import com.jmai.sys.consts.enums.RoleTypeEum;
import com.jmai.sys.ctx.SpringContextUtils;
import com.jmai.sys.entity.SysUser;
import com.jmai.sys.mapper.SysUserMapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.LocalDateTime;
@Service
public class PhysicDestroyServiceImpl extends AbstractService implements PhysicDestroyService {
......@@ -25,6 +30,13 @@ public class PhysicDestroyServiceImpl extends AbstractService implements PhysicD
@Resource
private PhysicDestroyMapper physicDestroyMapper;
@Resource
private CloudsignService cloudsignService;
@Resource
private PhysicBillService physicBillService;
@Override
public void create(PhysicDestroyCreateReq req) {
Long userId = SpringContextUtils.getUserId();
......@@ -43,4 +55,48 @@ public class PhysicDestroyServiceImpl extends AbstractService implements PhysicD
Page<PhysicDestroy> destroyPage = physicDestroyMapper.selectDestroyPage(page, req);
return destroyPage;
}
@Override
public PhysicDestroy sign(PhysicDestroySignReq physicDestroySignReq) {
Boolean f = false;
Long userId = SpringContextUtils.getUserId();
String getstamp = cloudsignService.sign(physicDestroySignReq.getEncryptedToken(), physicDestroySignReq.getRelBizNo(), physicDestroySignReq.getBase64SourceData());
PhysicDestroy physicDestroy = physicDestroyMapper.selectById(physicDestroySignReq.getPhysicDestroyId());
SysUser sysUser = sysUserMapper.selectById(userId);
if(physicDestroy.getStatus().equals(0)){
if(!RoleTypeEum.isPass(sysUser.getRoleAsList(),RoleTypeEum.CZ)){
throw new ServiceException("需要操作人权限才可进行签名");
}
physicDestroy.setStatus(1);
SignInfoDTO signInfoDTO = new SignInfoDTO(getstamp, LocalDateTime.now(),userId);
physicDestroy.setCzUser(JSONUtil.toJsonStr(signInfoDTO));
}else if(physicDestroy.getStatus().equals(1)){
if(!RoleTypeEum.isPass(sysUser.getRoleAsList(),RoleTypeEum.XH)){
throw new ServiceException("需要验收人权限才可进行签名");
}
physicDestroy.setStatus(2);
SignInfoDTO signInfoDTO = new SignInfoDTO(getstamp, LocalDateTime.now(),userId);;
physicDestroy.setXhUser(JSONUtil.toJsonStr(signInfoDTO));
f = true;
}
if(f){
BillDTO billDTO = new BillDTO();
BeanUtil.copyProperties(physicDestroy,billDTO);
billDTO.setType(7);
billDTO.setDeptId(physicDestroy.getDeptId());
billDTO.setRefId(physicDestroy.getId());
physicBillService.createBill(billDTO);
}
physicDestroyMapper.updateById(physicDestroy);
return getInfo(physicDestroy.getId());
}
@Override
public PhysicDestroy getInfo(Long id) {
PhysicDestroy physicDestroy = physicDestroyMapper.selectById(id);
return physicDestroy;
}
}
......@@ -3,20 +3,30 @@ package com.jmai.physic.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jmai.physic.dto.PhysicRecordCreateReq;
import com.jmai.physic.dto.PhysicRecordQueryReq;
import com.jmai.api.exception.ServiceException;
import com.jmai.physic.cloudsign.CloudsignService;
import com.jmai.physic.dto.*;
import com.jmai.physic.entity.PhysicRecord;
import com.jmai.physic.entity.PhysicWarehouse;
import com.jmai.physic.mapper.PhysicRecordMapper;
import com.jmai.physic.service.PhysicBillService;
import com.jmai.physic.service.PhysicRecordService;
import com.jmai.sys.AbstractService;
import com.jmai.sys.consts.BizFileTypes;
import com.jmai.sys.consts.enums.RoleTypeEum;
import com.jmai.sys.ctx.SpringContextUtils;
import com.jmai.sys.entity.SysUser;
import com.jmai.sys.mapper.SysUserMapper;
import com.jmai.sys.service.BizFileService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@Service
......@@ -28,29 +38,40 @@ public class PhysicRecordServiceImpl extends AbstractService implements PhysicRe
@Resource
private BizFileService bizFileService;
@Resource
private CloudsignService cloudsignService;
@Resource
private SysUserMapper sysUserMapper;
@Resource
private PhysicBillService physicBillService;
@Transactional
@Override
public void PhysicRecordCreate(PhysicRecordCreateReq req) {
public List<PhysicRecord> physicRecordCreate(PhysicRecordCreateReq req) {
List<PhysicRecord> records = new ArrayList<>();
Long userId = SpringContextUtils.getUserId();
SysUser sysUser = sysUserMapper.selectById(userId);
for (PhysicRecordCreateReq.Physic physic : req.getPhysicList()) {
PhysicRecord record = new PhysicRecord();
BeanUtil.copyProperties(req,record);
record.setPhysicName(physic.getPhysicName());
record.setBatchNo(physic.getBatchNo());
record.setPhysicNum(physic.getPhysicNum());
record.setPhysiSpec(physic.getPhysicSpec());
record.setPhysicSpec(physic.getPhysicSpec());
record.setDeptId(sysUser.getDeptId());
physicRecordMapper.insert(record);
if(ObjectUtil.isNotEmpty(req.getPrescriptionImages())){
if (CollectionUtils.isNotEmpty(req.getPrescriptionImages())) {
bizFileService.addBizFilesIfAbsent(BizFileTypes.PHYSIC_RECORD_IMAGE,record.getId().toString(), req.getPrescriptionImages());
}
}
records.add(record);
}
return records;
}
@Override
......@@ -60,4 +81,45 @@ public class PhysicRecordServiceImpl extends AbstractService implements PhysicRe
return recordPage;
}
@Override
public PhysicRecord sign(PhysicRecordSignReq physicRecordSignReq) {
Boolean f = false;
Long userId = SpringContextUtils.getUserId();
String getstamp = cloudsignService.sign(physicRecordSignReq.getEncryptedToken(), physicRecordSignReq.getRelBizNo(), physicRecordSignReq.getBase64SourceData());
PhysicRecord physicRecord = getInfo(physicRecordSignReq.getPhysicRecordId());
SysUser sysUser = sysUserMapper.selectById(userId);
if(physicRecord.getStatus().equals(0)){
if(!RoleTypeEum.isPass(sysUser.getRoleAsList(),RoleTypeEum.DP)){
throw new ServiceException("需要调配人权限才可进行签名");
}
physicRecord.setStatus(1);
SignInfoDTO signInfoDTO = new SignInfoDTO(getstamp, LocalDateTime.now(),userId);
physicRecord.setDpUser(JSONUtil.toJsonStr(signInfoDTO));
}else if(physicRecord.getStatus().equals(1)) {
if (!RoleTypeEum.isPass(sysUser.getRoleAsList(), RoleTypeEum.FY)) {
throw new ServiceException("需要发药人权限才可进行签名");
}
physicRecord.setStatus(2);
SignInfoDTO signInfoDTO = new SignInfoDTO(getstamp, LocalDateTime.now(), userId);
physicRecord.setFyUser(JSONUtil.toJsonStr(signInfoDTO));
f=true;
}
if(f){
BillDTO billDTO = new BillDTO();
BeanUtil.copyProperties(physicRecord,billDTO);
billDTO.setType(4);
billDTO.setDeptId(physicRecord.getDeptId());
billDTO.setRefId(physicRecord.getId());
physicBillService.createBill(billDTO);
}
physicRecordMapper.updateById(physicRecord);
return getInfo(physicRecord.getId());
}
@Override
public PhysicRecord getInfo(Long id) {
PhysicRecord physicRecord = physicRecordMapper.selectById(id);
return physicRecord;
}
}
......@@ -2,18 +2,26 @@ package com.jmai.physic.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jmai.physic.dto.PhysicAmpouleQueryReq;
import com.jmai.physic.dto.PhysicStorageAmpouleCreateReq;
import com.jmai.api.exception.ServiceException;
import com.jmai.physic.cloudsign.CloudsignService;
import com.jmai.physic.dto.*;
import com.jmai.physic.entity.PhysicRecord;
import com.jmai.physic.entity.PhysicStorageAmpoule;
import com.jmai.physic.mapper.PhysicStorageAmpouleMapper;
import com.jmai.physic.service.PhysicBillService;
import com.jmai.physic.service.PhysicStorageAmpouleService;
import com.jmai.sys.AbstractService;
import com.jmai.sys.consts.enums.RoleTypeEum;
import com.jmai.sys.ctx.SpringContextUtils;
import com.jmai.sys.entity.SysUser;
import com.jmai.sys.mapper.SysUserMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.time.LocalDateTime;
@Service
public class PhysicStorageAmpouleServiceImpl extends AbstractService implements PhysicStorageAmpouleService {
......@@ -21,6 +29,15 @@ public class PhysicStorageAmpouleServiceImpl extends AbstractService implements
@Resource
private PhysicStorageAmpouleMapper physicStorageAmpouleMapper;
@Resource
private CloudsignService cloudsignService;
@Resource
private SysUserMapper sysUserMapper;
@Resource
private PhysicBillService physicBillService;
@Transactional
@Override
......@@ -32,7 +49,7 @@ public class PhysicStorageAmpouleServiceImpl extends AbstractService implements
ampoule.setPhysicName(physic.getPhysicName());
ampoule.setBatchNo(physic.getBatchNo());
ampoule.setPhysicNum(physic.getPhysicNum());
ampoule.setPhysiSpec(physic.getPhysicSpec());
ampoule.setPhysicSpec(physic.getPhysicSpec());
ampoule.setPhysicType(physic.getPhysicType());
physicStorageAmpouleMapper.insert(ampoule);
}
......@@ -46,4 +63,46 @@ public class PhysicStorageAmpouleServiceImpl extends AbstractService implements
Page<PhysicStorageAmpoule> ampoulePage= physicStorageAmpouleMapper.selectAmpoulePage(page, req);
return ampoulePage;
}
@Override
public PhysicStorageAmpoule sign(PhysicStorageAmpouleSignReq physicStorageAmpouleSignReq) {
Boolean f = false;
Long userId = SpringContextUtils.getUserId();
String getstamp = cloudsignService.sign(physicStorageAmpouleSignReq.getEncryptedToken(), physicStorageAmpouleSignReq.getRelBizNo(), physicStorageAmpouleSignReq.getBase64SourceData());
PhysicStorageAmpoule ampoule = getInfo(physicStorageAmpouleSignReq.getPhysicStorageAmpouleId());
SysUser sysUser = sysUserMapper.selectById(userId);
if(ampoule.getStatus().equals(0)){
if(!RoleTypeEum.isPass(sysUser.getRoleAsList(),RoleTypeEum.JS)){
throw new ServiceException("需要接收人权限才可进行签名");
}
ampoule.setStatus(1);
SignInfoDTO signInfoDTO = new SignInfoDTO(getstamp, LocalDateTime.now(),userId);
ampoule.setJsUser(JSONUtil.toJsonStr(signInfoDTO));
}else if(ampoule.getStatus().equals(1)) {
if (!RoleTypeEum.isPass(sysUser.getRoleAsList(), RoleTypeEum.TH)) {
throw new ServiceException("需要退回人权限才可进行签名");
}
ampoule.setStatus(2);
SignInfoDTO signInfoDTO = new SignInfoDTO(getstamp, LocalDateTime.now(), userId);
ampoule.setThUser(JSONUtil.toJsonStr(signInfoDTO));
f=true;
}
if(f){
BillDTO billDTO = new BillDTO();
BeanUtil.copyProperties(ampoule,billDTO);
billDTO.setType(ampoule.getType().equals("1")?5:7);
billDTO.setDeptId(ampoule.getDeptId());
billDTO.setRefId(ampoule.getId());
physicBillService.createBill(billDTO);
}
physicStorageAmpouleMapper.updateById(ampoule);
return getInfo(ampoule.getId());
}
@Override
public PhysicStorageAmpoule getInfo(Long id) {
PhysicStorageAmpoule ampoule = physicStorageAmpouleMapper.selectById(id);
return ampoule;
}
}
......@@ -6,7 +6,7 @@
<select id="selectAmpoulePage" resultType="com.jmai.physic.entity.PhysicAmpoule">
select * from physic_ampoule
where
del_flag 0
del_flag = 0
<if test="req.dateTime != null ">
and DATE_FORMAT(create_time, '%Y-%m-%d') = DATE_FORMAT(#{req.dateTime}, '%Y-%m-%d')
</if>
......
......@@ -6,7 +6,7 @@
<select id="selectAmpoulePage" resultType="com.jmai.physic.entity.PhysicStorageAmpoule">
select * from physic_storage_ampoule
where
del_flag 0
del_flag = 0
<if test="req.dateTime != null ">
and DATE_FORMAT(create_time, '%Y-%m-%d') = DATE_FORMAT(#{req.dateTime}, '%Y-%m-%d')
</if>
......
......@@ -29,6 +29,12 @@ public class UserCreateReq {
@ApiModelProperty(value = "盐",hidden = true)
private String salt;
@ApiModelProperty(value = "组织(ID)")
private Long deptId;
@ApiModelProperty(value = "用户角色(ID)列表(逗号隔开)")
private String roleList;
@ApiModelProperty(value = "状态:0 - 禁用,1 - 启用")
private Integer status;
......
......@@ -27,7 +27,7 @@ public class UserDto extends BaseDto implements IStatus {
@ApiModelProperty(value = "手机号")
private String mobile;
@ApiModelProperty(value = "组织")
@ApiModelProperty(value = "权限范围")
private String authDeptList;
@ApiModelProperty(value = "状态:0 - 禁用,1 - 启用")
......
......@@ -8,20 +8,9 @@ import lombok.Data;
@Data
@ApiModel(value = "UserQueryReq", description = "用户查询")
public class UserQueryReq extends PageReq {
@ApiModelProperty(value = "用户ID")
private Long userId;
@ApiModelProperty(value = "用户名称")
private String userName;
@ApiModelProperty(value = "用户类型")
private Long userType;
@ApiModelProperty(value = "手机号")
private String mobile;
@ApiModelProperty(value = "工号")
private String workNo;
@ApiModelProperty(value = "授权仓库/站点(ID)列表(逗号隔开)")
private String warehouse;
@ApiModelProperty(value = "用户名称")
private String keyword;
@ApiModelProperty(value = "状态:0 - 禁用,1 - 启用")
private Integer status;
}
......@@ -279,12 +279,10 @@ public class UserServiceImpl extends AbstractService implements UserService {
private Wrapper<SysUser> buildQuery(UserQueryReq req) {
return Wrappers.lambdaQuery(SysUser.class)
.eq(ObjectUtil.isNotEmpty(req.getUserId()), SysUser::getId, req.getUserId())
.like(ObjectUtil.isNotEmpty(req.getUserName()), SysUser::getName, req.getUserName())
.eq(ObjectUtil.isNotEmpty(req.getUserType()), SysUser::getType, req.getUserType())
.like(ObjectUtil.isNotEmpty(req.getKeyword()), SysUser::getName, req.getKeyword()).or()
.eq(ObjectUtil.isNotEmpty(req.getKeyword()), SysUser::getMobile, req.getKeyword())
// 过滤非系统管理员
.ne(!SpringContextUtils.isPlatformAdmin(), SysUser::getType, PLATFORM_ADMIN.getCode())
.like(ObjectUtil.isNotEmpty(req.getMobile()), SysUser::getMobile, req.getMobile())
.eq(ObjectUtil.isNotEmpty(req.getStatus()), SysUser::getStatus, req.getStatus());
}
......@@ -347,9 +345,10 @@ public class UserServiceImpl extends AbstractService implements UserService {
});
// 处理密码
String salt = PasswordUtil.newSalt();
String password = req.getPassword();
String password = SecureUtil.md5("123456");
String hash = PasswordUtil.hash(salt, password);
String md5Password = isMD5(password) ? SecureUtil.md5(hash) : "";
String md5Password = SecureUtil.md5(hash);
// 不能新建超管
Long userType = Optional.ofNullable(req.getUserType())
......@@ -364,7 +363,8 @@ public class UserServiceImpl extends AbstractService implements UserService {
user.setSalt(salt);
user.setPassword(md5Password);
user.setStatus(Optional.ofNullable(req.getStatus()).orElse(StatusEnum.ACTIVE.getCode()));
user.setRoleList(req.getRoleList());
user.setDeptId(req.getDeptId());
userMapper.insert(user);
return convertTo(user);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment