Compare commits

...

4 Commits

Author SHA1 Message Date
lSun 12520642e4 人员库-全员重置密码 2025-08-28 16:44:57 +08:00
lSun 9e91f12009 人员库功能变更 2025-07-04 10:34:13 +08:00
lSun f99c80395a 人员库功能变更 2025-07-03 14:48:50 +08:00
lSun 96538cb264 体验预约人员导入功能 2025-06-30 14:57:30 +08:00
27 changed files with 514 additions and 88 deletions

View File

@ -19,6 +19,7 @@ import com.bonus.boot.manager.manager.utils.GlobalConst;
import com.bonus.boot.manager.task.UnifyTask; import com.bonus.boot.manager.task.UnifyTask;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -86,24 +87,26 @@ public class PersonnelLibraryController {
UnifyTask unifyTask = new UnifyTask(); UnifyTask unifyTask = new UnifyTask();
if (cb != 3 && cb != 5){ if (cb != 3 && cb != 5){
String token = login(); String token = login();
String isActive = addUser(bean.getPersonName(), bean.getPhone(),token); if(token!=null && token.length()>0 ){
if(isActive.equals("1")){ String isActive = addUser(bean.getPersonName(), bean.getPhone(),token);
ks = 1; if(isActive.equals("1")){
ar.setFailMsg(GlobalConst.INIT_SUCCEED); ks = 1;
}else{ ar.setFailMsg(GlobalConst.INIT_SUCCEED);
for (int i = 0; i < 3; i++) { }else{
isActive = addUser(bean.getPersonName(), bean.getPhone(),token); for (int i = 0; i < 3; i++) {
if(isActive.equals("1")){ isActive = addUser(bean.getPersonName(), bean.getPhone(),token);
ks = 1; if(isActive.equals("1")){
ar.setFailMsg(GlobalConst.INIT_SUCCEED); ks = 1;
break; ar.setFailMsg(GlobalConst.INIT_SUCCEED);
break;
}
} }
} }
} //三次都未推送成功 修改推送状态
//三次都未推送成功 修改推送状态 if(ks!=1){
if(ks!=1){ userService.updateUnify(Long.valueOf(bean.getHospId()));
userService.updateUnify(Long.valueOf(bean.getHospId())); ar.setFailMsg(GlobalConst.INIT_SUCCEED);
ar.setFailMsg(GlobalConst.INIT_SUCCEED); }
} }
}else { }else {
ar.setFailMsg(GlobalConst.DATA_FAIL); ar.setFailMsg(GlobalConst.DATA_FAIL);
@ -214,7 +217,7 @@ public class PersonnelLibraryController {
@LogAnnotation @LogAnnotation
@PostMapping("resetPassword") @PostMapping("resetPassword")
@ApiOperation(value = "体检人员库-删除") @ApiOperation(value = "体检人员库-重置密码")
public AjaxRes resetPassword(PersonnelLibraryBean bean) { public AjaxRes resetPassword(PersonnelLibraryBean bean) {
AjaxRes ar = new AjaxRes(); AjaxRes ar = new AjaxRes();
int result = service.resetPassword(bean); int result = service.resetPassword(bean);
@ -267,7 +270,10 @@ public class PersonnelLibraryController {
JSONObject object = JSON.parseObject(params); JSONObject object = JSON.parseObject(params);
String result = HttpClientUtils.doHttpPost(AddressConfiguration.UNIFICATION_URL + "/ynuw/sys/api/putUser", object, token); String result = HttpClientUtils.doHttpPost(AddressConfiguration.UNIFICATION_URL + "/ynuw/sys/api/putUser", object, token);
JSONObject jsonObject = JSONObject.parseObject(result); JSONObject jsonObject = JSONObject.parseObject(result);
String code = jsonObject.getString("code"); String code = "00";
if(jsonObject != null && jsonObject.containsKey("code")){
code = jsonObject.getString("code");
}
System.err.println("新增code="+code); System.err.println("新增code="+code);
if("200".equals(code)){ if("200".equals(code)){
JSONArray data = jsonObject.getJSONArray("data"); JSONArray data = jsonObject.getJSONArray("data");
@ -315,4 +321,19 @@ public class PersonnelLibraryController {
return isActive; return isActive;
} }
@LogAnnotation
@PostMapping("resetPasswordAll")
@ApiOperation(value = "体检人员库-重置密码-全员")
@PreAuthorize("hasAuthority('sys:reset:all')")
public AjaxRes resetPasswordAll(PersonnelLibraryBean bean) {
AjaxRes ar = new AjaxRes();
int result = service.resetPasswordAll(bean);
if (result > 0 ) {
ar.setSucceedMsg(GlobalConst.DATA_SUCCEED);
} else {
ar.setFailMsg(GlobalConst.DATA_FAIL);
}
return ar;
}
} }

View File

@ -97,4 +97,25 @@ public class importExcelController {
return ar; return ar;
} }
@LogAnnotation
@PostMapping("/reservationNew")
@ApiOperation(value = "体检人员库导入")
public AjaxRes reservationNew(@RequestParam("file") MultipartFile file, HttpServletRequest request, HttpServletResponse response) throws IOException {
int result = 1;
AjaxRes ar = new AjaxRes();
try {
List<JSONObject> lstObj = (List<JSONObject>) ImportNoPhotoExcelHelper.readExcel(file, PersonnelReservationBean.class);
String code = service.reservationNew(lstObj);
if ("导入成功".equals(code)){
ar.setSucceedMsg("导入成功");
}else{
ar.setFailMsg(code);
}
} catch (Exception e) {
e.printStackTrace();
ar.setFailMsg(e.getMessage());
}
return ar;
}
} }

View File

@ -55,4 +55,8 @@ public interface PersonnelLibraryDao {
int getPhoneBy(@Param("personName")String personName,@Param("phone")String phone); int getPhoneBy(@Param("personName")String personName,@Param("phone")String phone);
int getIdNumber(@Param("idNumber")String idNumber); int getIdNumber(@Param("idNumber")String idNumber);
PersonnelReservationBean getMealNameNew(@Param("setMeal")String setMeal);
int resetPasswordAll(PersonnelLibraryBean bean);
} }

View File

@ -116,4 +116,14 @@ public class PersonnelLibraryBean extends HospitalBean{
private String userId; private String userId;
/**
* 套餐名称
*/
private String typeName;
/**
* 套餐名称id
*/
private String baseNameId;
} }

View File

@ -13,4 +13,6 @@ public interface ImportExcelService {
String savenegativeResult(List<JSONObject> lstObj); String savenegativeResult(List<JSONObject> lstObj);
String reservation(List<JSONObject> lstObj); String reservation(List<JSONObject> lstObj);
String reservationNew(List<JSONObject> lstObj);
} }

View File

@ -19,4 +19,6 @@ public interface PersonnelLibraryService {
int resetPassword(PersonnelLibraryBean bean); int resetPassword(PersonnelLibraryBean bean);
List<ZNode> getDepartmentTree(); List<ZNode> getDepartmentTree();
int resetPasswordAll(PersonnelLibraryBean bean);
} }

View File

@ -460,6 +460,207 @@ public class ImportExcelServiceImpl implements ImportExcelService {
} }
@Override
public String reservationNew(List<JSONObject> lstObj) {
List<PersonnelReservationBean> validBeans = new ArrayList<>(); // 用于存储通过验证的数据
String res = "";
int team = 1;
int i = 0;
String personName = "";
String phone = "";
String idNumber = "";
String department = "";
String hospital = "";
String sex = "";
String setMeal = "";
boolean hasError = false; // 标志位用于记录是否有错误
try {
if (lstObj != null && lstObj.size() > 0) {
for (JSONObject obj : lstObj) {
i++;
PersonnelReservationBean bean = new PersonnelReservationBean(); // 每个对象创建一个新的Bean
personName = obj.getString("personName").trim();
idNumber = obj.getString("idNumber").trim();
sex = obj.getString("sex").trim();
department = obj.getString("department").trim();
hospital = obj.getString("hospital").trim();
setMeal = obj.getString("setMeal").trim();
phone = obj.getString("phone").trim();
// 判断姓名为空
if (StringHelper.isEmpty(personName)) {
res += "" + i + "行姓名为空;";
hasError = true;
}
bean.setPersonName(personName);
// 判断身份证为空
/*if (StringHelper.isEmpty(idNumber) || "0.0".equals(idNumber.trim())) {
res += "" + i + "" + personName + "行身份证为空;";
team = 2;
hasError = true;
} else if (idNumber.length() != 18) {
res += "" + i + "" + personName + "行身份证格式错误;";
team = 2;
hasError = true;
}
bean.setIdNumber(idNumber);*/
// 判断性别为空
/*if (StringHelper.isEmpty(sex)) {
res += "" + i + "" + personName + "行性别为空;";
team = 2;
hasError = true;
} else {
String a = getSexByIdcard(idNumber);
String b = "";
if (sex.equals("")) {
b = "0";
} else {
b = "1";
}
if (!a.equals(b)) {
res += "" + i + "" + personName + "行身份证与性别不匹配;";
hasError = true;
} else {
bean.setSex(b);
}
}*/
// 判断部门名称为空
/*if (!department.isEmpty()) {
String departmentName = dao.getdepartmentName(department);
if (StringHelper.isEmpty(departmentName) || "0.0".equals(departmentName.trim())) {
team = 2;
res += "" + i + "" + personName + "部门名称有误,请检查";
hasError = true;
} else {
bean.setDepartment(departmentName + "");
}
} else {
team = 2;
res += "" + i + "" + personName + "部门名称为空";
hasError = true;
}*/
// 判断医院名称为空
if (StringHelper.isEmpty(hospital)) {
res += "" + i + "" + personName + "行医院名称为空;";
team = 2;
hasError = true;
} else {
if (hospital.equals("1")) {
bean.setHospital("33");
} else if (hospital.equals("2")) {
bean.setHospital("34");
} else if (hospital.equals("3")) {
bean.setHospital("35");
} else {
res += "" + i + "" + personName + "行医院名称有误,请检查";
hasError = true;
}
}
String ifHighee = null; // 判断是否为高职
// 判断体检套餐为空
if (StringHelper.isEmpty(setMeal)) {
res += "" + i + "" + personName + "行体检套餐为空;";
team = 2;
hasError = true;
} else {
// PersonnelReservationBean bean1 = dao.getMealName(setMeal);
PersonnelReservationBean bean1 = dao.getMealNameNew(setMeal);
if(bean1!=null){
String setMealName = bean1.getSetMealId();
ifHighee = bean1.getIfHighee();
if (StringHelper.isEmpty(setMealName) || "0.0".equals(setMealName.trim())) {
team = 2;
res += "" + i + "" + personName + "体检套餐有误,请检查";
hasError = true;
} else {
bean.setSetMeal(setMealName + "");
bean.setCheckType(bean1.getCheckType());
bean.setCombName(setMeal);
}
}else{
team = 2;
res += "" + i + "" + personName + "体检套餐有误,请检查";
hasError = true;
}
}
// 判断手机号码为空
if (StringHelper.isEmpty(phone) || "0.0".equals(phone.trim())) {
res += "" + i + "" + personName + "行手机号码为空;";
team = 2;
hasError = true;
} else if (!isLegalMobileNumber(phone)) {
res += "" + i + "" + personName + "行手机号码格式错误;";
team = 2;
hasError = true;
}
bean.setPhone(phone);
// 查询通过身份证姓名电话去查询
int personNameNum = dao.getPersonNameBy(personName);
if (personNameNum > 0) {
} else {
res += "" + i + "" + personName + "行姓名有误。请检查";
team = 2;
hasError = true;
}
int phoneNum = dao.getPhoneBy(personName,phone);
if (phoneNum > 0) {
}else{
res += "" + i + "" + personName + "行手机号有误。请检查";
team = 2;
hasError = true;
}
if (team != 2) {
PersonnelReservationBean beans = dao.getInfoById(personName, "", phone,"");
if (beans != null) {
// 获取预约人的id
// bean.setId(beans.getId());
} else {
res += "" + i + "" + personName + "行身份证有误。请检查";
hasError = true;
}
PersonnelReservationBean beans1 = dao.getInfoById(personName, "", phone,"");
if (beans1 != null) {
// 获取预约人的id
bean.setId(beans1.getId());
} else {
res += "" + i + "" + personName + "行高职与非高职有误。请检查";
hasError = true;
}
}
// 只有在没有错误的情况下才执行新增操作
if (!hasError) {
validBeans.add(bean);
}
}
// 只有在没有错误的情况下才执行批量导入操作
if (!hasError) {
for (PersonnelReservationBean bean : validBeans) {
int k = dao.updateReservation(bean);
}
res = "导入成功";
}
}
} catch (Exception e) {
e.printStackTrace();
}
return res;
}
private String ChangepersonType(String personType) { private String ChangepersonType(String personType) {
String team; String team;
if (personType.equals("在职")) { if (personType.equals("在职")) {

View File

@ -32,7 +32,7 @@ public class PackageTypeServiceImpl implements PackageTypeService {
@Override @Override
public int addInfo(BaseTypePackageBean bean) { public int addInfo(BaseTypePackageBean bean) {
int num = utilDao.determineIfExists("pm_base_type_package","type_name",bean.getTypeName(),""); int num = utilDao.determineIfExists("pm_base_type_package_name","type_name",bean.getTypeName(),"");
if(num > 0){ if(num > 0){
num = 3; num = 3;
}else { }else {
@ -43,7 +43,7 @@ public class PackageTypeServiceImpl implements PackageTypeService {
@Override @Override
public int updateInfo(BaseTypePackageBean bean) { public int updateInfo(BaseTypePackageBean bean) {
int num = utilDao.determineIfExists("pm_base_type_package","type_name",bean.getTypeName(),bean.getId()+""); int num = utilDao.determineIfExists("pm_base_type_package_name","type_name",bean.getTypeName(),bean.getId()+"");
if(num > 0){ if(num > 0){
num = 3; num = 3;
}else { }else {

View File

@ -120,4 +120,11 @@ public class PersonnelLibraryServiceImpl implements PersonnelLibraryService {
public List<ZNode> getDepartmentTree() { public List<ZNode> getDepartmentTree() {
return dao.getDepartmentTree(); return dao.getDepartmentTree();
} }
@Override
public int resetPasswordAll(PersonnelLibraryBean bean) {
bean.setPassword(passwordEncoder.encode("YNsbd@123456"));
return dao.resetPasswordAll(bean);
}
} }

View File

@ -350,8 +350,12 @@ public class UserController {
// String result = HttpClientUtils.doHttpPost("http://112.29.103.165:1616/ynuw/sys/api/userLogin", object, null); // String result = HttpClientUtils.doHttpPost("http://112.29.103.165:1616/ynuw/sys/api/userLogin", object, null);
String result = HttpClientUtils.doHttpPost(AddressConfiguration.UNIFICATION_URL + "/ynuw/sys/api/userLogin", object, null); String result = HttpClientUtils.doHttpPost(AddressConfiguration.UNIFICATION_URL + "/ynuw/sys/api/userLogin", object, null);
JSONObject jsonObject = JSONObject.parseObject(result); JSONObject jsonObject = JSONObject.parseObject(result);
String string = JSONObject.parseObject(jsonObject.getString("data")).getString("token"); if(jsonObject == null || jsonObject.isEmpty()){
return string; return "";
}else{
String string = JSONObject.parseObject(jsonObject.getString("data")).getString("token");
return string;
}
} }
//统一平台后台新增接口 获取token //统一平台后台新增接口 获取token

View File

@ -107,5 +107,13 @@ public class UtilController {
List<MapBean> list = service.getSetMeal(o); List<MapBean> list = service.getSetMeal(o);
return R.okTable(list, list.size()); return R.okTable(list, list.size());
} }
@LogAnnotation
@PostMapping(value = "/getPackageTypeName")
@ApiOperation(value = "套餐类型select列表")
public List<MapBean> getPackageTypeName() {
List<MapBean> result = service.getPackageTypeName();
return result;
}
} }

View File

@ -62,4 +62,6 @@ public interface UtilDao {
List<MapBean> getExaminationHospital(); List<MapBean> getExaminationHospital();
List<MapBean> getNewHospitalSelect(MapBean bean); List<MapBean> getNewHospitalSelect(MapBean bean);
List<MapBean> getPackageTypeName();
} }

View File

@ -44,4 +44,6 @@ public interface UtilService {
List<MapBean> getExaminationHospital(); List<MapBean> getExaminationHospital();
List<MapBean> getNewHospitalSelect(MapBean o); List<MapBean> getNewHospitalSelect(MapBean o);
List<MapBean> getPackageTypeName();
} }

View File

@ -75,4 +75,9 @@ public class UtilServiceImpl implements UtilService {
bean.setHospitalId(hospiral); bean.setHospitalId(hospiral);
return utilDao.getNewHospitalSelect(bean); return utilDao.getNewHospitalSelect(bean);
} }
@Override
public List<MapBean> getPackageTypeName() {
return utilDao.getPackageTypeName();
}
} }

View File

@ -2,25 +2,24 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bonus.boot.manager.basic.dao.PackageTypeDao"> <mapper namespace="com.bonus.boot.manager.basic.dao.PackageTypeDao">
<insert id="addInfo"> <insert id="addInfo">
insert into pm_base_type_package (type_name,package_descri,is_active) insert into pm_base_type_package_name (type_name,is_active)
values (#{typeName},#{packageDescri},'1') values (#{typeName},'1')
</insert> </insert>
<update id="updateInfo"> <update id="updateInfo">
update pm_base_type_package set type_name = #{typeName},package_descri = #{packageDescri} update pm_base_type_package_name set type_name = #{typeName}
where id = #{id} where id = #{id}
</update> </update>
<delete id="delById"> <delete id="delById">
update pm_base_type_package set is_active = '0' where id = #{id} update pm_base_type_package_name set is_active = '0' where id = #{id}
</delete> </delete>
<select id="getList" resultType="com.bonus.boot.manager.basic.entity.BaseTypePackageBean"> <select id="getList" resultType="com.bonus.boot.manager.basic.entity.BaseTypePackageBean">
select select
id, id,
case when type_name = '1' then '标准套餐' when type_name = '2' then '个性化套餐' when type_name = '3' then '职业健康套餐' end as typeName, type_name as typeName
package_descri as packageDescri from pm_base_type_package_name
from pm_base_type_package
where is_active = '1' where is_active = '1'
<if test="typeName != null and typeName != ''"> <if test="typeName != null and typeName != ''">
AND type_name LIKE concat ('%',#{typeName},'%') AND type_name LIKE concat ('%',#{typeName},'%')
@ -30,9 +29,8 @@
<select id="getListById" resultType="com.bonus.boot.manager.basic.entity.BaseTypePackageBean"> <select id="getListById" resultType="com.bonus.boot.manager.basic.entity.BaseTypePackageBean">
select select
id, id,
type_name as typeName, type_name as typeName
package_descri as packageDescri from pm_base_type_package_name
from pm_base_type_package
where is_active = '1' and id = #{id} where is_active = '1' and id = #{id}
</select> </select>
</mapper> </mapper>

View File

@ -5,9 +5,9 @@
<insert id="addInfo" keyProperty="hospId" useGeneratedKeys="true"> <insert id="addInfo" keyProperty="hospId" useGeneratedKeys="true">
<!-- 插入到pm_base_physical表 --> <!-- 插入到pm_base_physical表 -->
insert into insert into
pm_base_physical(phy_name,idcard,age,depart_id,sex,if_higher,telep_number,if_job,special_job,phy_password,is_active,status,nosocomium,set_meal,personnel_type,pushStatus) pm_base_physical(phy_name,idcard,age,depart_id,sex,if_higher,telep_number,if_job,special_job,phy_password,is_active,status,nosocomium,personnel_type,pushStatus,base_name_id)
values values
(#{personName},#{idNumber},#{age},#{departmentId},#{sex},#{higherJob},#{phone},#{personType},#{specialPost},#{password},'1','1',#{hospital},#{setMeal},#{personnelType},'1') (#{personName},#{idNumber},#{age},#{departmentId},#{sex},#{higherJob},#{phone},#{personType},#{specialPost},#{password},'1','1',#{hospital},#{personnelType},'1',#{baseNameId})
</insert> </insert>
<insert id="addresult"> <insert id="addresult">
insert into pm_physical_result(physical_id) insert into pm_physical_result(physical_id)
@ -27,7 +27,7 @@
special_job = #{specialPost}, special_job = #{specialPost},
nosocomium = #{hospital}, nosocomium = #{hospital},
personnel_type = #{personnelType}, personnel_type = #{personnelType},
set_meal = #{setMeal} base_name_id = #{baseNameId}
where id = #{id} where id = #{id}
and is_active = '1' and is_active = '1'
</update> </update>
@ -92,12 +92,14 @@
when '2' then '肿瘤' when '2' then '肿瘤'
when '3' then '综合' when '3' then '综合'
else '' else ''
end as setMeal end as setMeal,
pn.type_name as typeName
from pm_base_physical pbp from pm_base_physical pbp
left join pm_base_hospital pbh on pbh.id = pbp.nosocomium left join pm_base_hospital pbh on pbh.id = pbp.nosocomium
left join sys_dic_detail sdd on sdd.id = pbp.if_job left join sys_dic_detail sdd on sdd.id = pbp.if_job
left join pm_base_special_job pbsj on pbsj.id = pbp.special_job and pbsj.is_active = '1' left join pm_base_special_job pbsj on pbsj.id = pbp.special_job and pbsj.is_active = '1'
left join pm_phy_organization po on po.id = pbp.depart_id left join pm_organization po on po.id = pbp.depart_id
LEFT JOIN pm_base_type_package_name pn on pn.id = pbp.base_name_id
where pbp.is_active = '1' where pbp.is_active = '1'
<if test="personName != null and personName != ''"> <if test="personName != null and personName != ''">
AND pbp.phy_name LIKE concat ('%',#{personName},'%') AND pbp.phy_name LIKE concat ('%',#{personName},'%')
@ -124,10 +126,13 @@
pbsj.job_name as specialPostName, pbsj.job_name as specialPostName,
pbp.nosocomium as hospital, pbp.nosocomium as hospital,
pbp.personnel_type as personnelType, pbp.personnel_type as personnelType,
pbp.set_meal as setMeal pbp.set_meal as setMeal,
pbp.base_name_id as baseNameId,
pn.type_name as typeName
from pm_base_physical pbp from pm_base_physical pbp
left join pm_base_special_job pbsj on pbsj.id = pbp.special_job and pbsj.is_active = '1' left join pm_base_special_job pbsj on pbsj.id = pbp.special_job and pbsj.is_active = '1'
left join pm_phy_organization po on po.id = pbp.depart_id left join pm_organization po on po.id = pbp.depart_id
LEFT JOIN pm_base_type_package_name pn on pn.id = pbp.base_name_id
where pbp.is_active = '1' where pbp.is_active = '1'
and pbp.id = #{id} and pbp.id = #{id}
</select> </select>
@ -147,7 +152,7 @@
</select> </select>
<select id="getdepartmentName" resultType="java.lang.String"> <select id="getdepartmentName" resultType="java.lang.String">
select id select id
from pm_phy_organization from pm_organization
where `name` = #{department} where `name` = #{department}
and is_active = '1' limit 1 and is_active = '1' limit 1
</select> </select>
@ -167,8 +172,12 @@
<select id="getInfoById" resultType="com.bonus.boot.manager.basic.entity.PersonnelReservationBean"> <select id="getInfoById" resultType="com.bonus.boot.manager.basic.entity.PersonnelReservationBean">
SELECT id SELECT id
from pm_base_physical from pm_base_physical
where is_active = '1' and if_job = '1' and phy_name = #{personName} and idcard = #{idNumber} where is_active = '1' and if_job = '1' and phy_name = #{personName}
and telep_number = #{phone} and telep_number = #{phone}
<if test="idNumber!=null and idNumber !='' and idNumber !='null' ">
and idcard = #{idNumber}
</if>
<if test="ifHighee!=null and ifHighee !='' and ifHighee !='null' "> <if test="ifHighee!=null and ifHighee !='' and ifHighee !='null' ">
and if_higher = #{ifHighee} and if_higher = #{ifHighee}
</if> </if>
@ -197,13 +206,23 @@
where is_active = '1' and idcard = #{idNumber} where is_active = '1' and idcard = #{idNumber}
</select> </select>
<select id="getMealNameNew" resultType="com.bonus.boot.manager.basic.entity.PersonnelReservationBean">
SELECT id as setMealId FROM `pm_base_type_package_name`
WHERE type_name LIKE concat ('%',#{setMeal},'%')
</select>
<update id="updateReservation"> <update id="updateReservation">
update pm_base_physical update pm_base_physical
set set
depart_id=#{department},
nosocomium=#{hospital}, nosocomium=#{hospital},
set_meal = #{checkType} base_name_id = #{setMeal}
where is_active = '1' and id=#{id} where is_active = '1' and id=#{id}
</update> </update>
<update id="resetPasswordAll">
update pm_base_physical
set phy_password = #{password}
where is_active = '1'
</update>
</mapper> </mapper>

View File

@ -70,6 +70,10 @@ select count(1) from pm_base_physical where telep_number=#{0} and is_active='1'
select id as `key`,hospital as `value` from pm_base_hospital where is_active ='1' select id as `key`,hospital as `value` from pm_base_hospital where is_active ='1'
</select> </select>
<select id="getPackageTypeName" resultType="com.bonus.boot.manager.basic.entity.MapBean">
select id as `key`,type_name AS `value` from pm_base_type_package_name where is_active ='1'
</select>
</mapper> </mapper>

View File

@ -6,7 +6,7 @@
SELECT a.phy_appont_time as `key`,COUNT(a.id) as `value` SELECT a.phy_appont_time as `key`,COUNT(a.id) as `value`
FROM pm_base_phy_appont a FROM pm_base_phy_appont a
LEFT JOIN pm_base_physical b on b.id = a.user_id LEFT JOIN pm_base_physical b on b.id = a.user_id
WHERE a.if_cancel ='2' and b.is_active = '1' and a.if_career_appoint = '2' WHERE a.if_cancel ='2' and b.is_active = '1'
<if test="hospitalId !=null and hospitalId !='null'"> <if test="hospitalId !=null and hospitalId !='null'">
<if test="type == 1"> <if test="type == 1">
@ -44,15 +44,17 @@
a.phy_name AS personName, a.phy_name AS personName,
a.idcard AS idNumber, a.idcard AS idNumber,
a.age, a.age,
CASE case when check_content_id != "" THEN '常规体检'
WHEN check_content_id = 1 THEN else '职业体检' END AS checkContentId,
'心血管' -- CASE
WHEN check_content_id = 2 THEN -- WHEN check_content_id = 1 THEN
'肿瘤' -- '心血管'
WHEN check_content_id = 3 THEN -- WHEN check_content_id = 2 THEN
'综合' -- '肿瘤'
ELSE -- WHEN check_content_id = 3 THEN
'' end AS checkContentId, -- '综合'
-- ELSE
-- '' end AS checkContentId,
IF (a.sex = '0', '男', '女') AS sex, IF (a.sex = '0', '男', '女') AS sex,
# IF (b.if_edu = '0', '否', '是') AS ifEdu, # IF (b.if_edu = '0', '否', '是') AS ifEdu,
IF(a.if_higher = '0', '否', '是') AS higherJob, IF(a.if_higher = '0', '否', '是') AS higherJob,
@ -75,7 +77,7 @@
WHERE WHERE
if_cancel = '2' AND (check_content_id != "" OR check_content_id IS NOT NULL) if_cancel = '2' AND (check_content_id != "" OR check_content_id IS NOT NULL)
) b ON a.id = b.user_id and a.is_active ='1' ) b ON a.id = b.user_id and a.is_active ='1'
LEFT JOIN pm_phy_organization pmo ON pmo.ID = a.depart_id and pmo.IS_ACTIVE ='1' LEFT JOIN pm_organization pmo ON pmo.ID = a.depart_id and pmo.IS_ACTIVE ='1'
LEFT JOIN pm_base_hospital pbh ON pbh.id = b.hospital_id and pbh.is_active = '1' LEFT JOIN pm_base_hospital pbh ON pbh.id = b.hospital_id and pbh.is_active = '1'
LEFT JOIN sys_user sysu ON sysu.id = b.appoint_name_id and sysu.is_active ='1' LEFT JOIN sys_user sysu ON sysu.id = b.appoint_name_id and sysu.is_active ='1'
WHERE WHERE

View File

@ -0,0 +1,3 @@
1.notMerge分支用于修改体检名称-施亮提出
2.不能与主分支master合并
3.更新日期 2025-06-30

View File

@ -223,4 +223,31 @@ function getHazard(form,hazard) {
console.log("获取危害因素下拉列表出错:", err); console.log("获取危害因素下拉列表出错:", err);
} }
}); });
}
function getPackageTypeName(form,baseNameId) {
$("#baseNameId").html("");
$.ajax({
type: 'post',
url: ctxPath + '/utilConnection/getPackageTypeName',
data: {
},
async: false,
success: function (data) {
var html = '<option value="">--请选择套餐类型--</option>';
for (var i = 0; i < data.length; i++) {
if (baseNameId == data[i].key) {
html += '<option selected="selected" value=\'' + data[i].key + '\'>' + data[i].value + '</option>';
} else {
html += '<option value=\'' + data[i].key + '\'>' + data[i].value + '</option>';
}
}
$("#baseNameId").html(html);
layui.form.render('select'); //这里就是我们要渲染的地方了
},
error: function (err) {
console.log("获取套餐类型下拉列表出错:", err);
}
});
} }

View File

@ -15,9 +15,8 @@ layui.use(['table', 'layer', 'laydate', 'jquery', 'form'], function () {
{ {
field: 'number', width:120,title: '序号', align: 'center', type: 'numbers' field: 'number', width:120,title: '序号', align: 'center', type: 'numbers'
} }
, {field: 'typeName', align: 'center', title: '类型名称'} , {field: 'typeName', align: 'center', title: '类型名称'}
, {field: 'packageDescri', align: 'center', title: '套餐描述'} , {fixed: 'right', title: '操作', align: 'center', toolbar: '#toolsBar'}
, {fixed: 'right', title: '操作', width: 200, align: 'center', toolbar: '#toolsBar'}
]] ]]
, id: 'menuTable' , id: 'menuTable'
, page: true //开启分页 , page: true //开启分页

View File

@ -38,7 +38,7 @@ layui.use(['table', 'layer', 'laydate', 'jquery', 'form'], function () {
, {field: 'personnelType', width: 120, align: 'center', title: '人员类型'} , {field: 'personnelType', width: 120, align: 'center', title: '人员类型'}
, {field: 'specialPost', width: 150, align: 'center', title: '是否特殊岗位'} , {field: 'specialPost', width: 150, align: 'center', title: '是否特殊岗位'}
, {field: 'hospital', width: 150, align: 'center', title: '体检医院'} , {field: 'hospital', width: 150, align: 'center', title: '体检医院'}
, {field: 'setMeal', width: 150, align: 'center', title: '体检套餐'} , {field: 'typeName', width: 150, align: 'center', title: '体检套餐'}
, {fixed: 'right',width: 270, title: '操作', align: 'center', toolbar: '#toolsBar'} , {fixed: 'right',width: 270, title: '操作', align: 'center', toolbar: '#toolsBar'}
]] ]]
, id: 'menuTable' , id: 'menuTable'
@ -261,4 +261,74 @@ function importExcelYu() {
} }
}); });
$("#articleImageFileYu").val(""); $("#articleImageFileYu").val("");
}
function fetchExcelNew(){
window.location.href = ctxPath + "/download/download?filename=预约体检模版.xlsx"
}
function importExcelNew() {
var formData = new FormData($('form')[0]);
var name = $("#articleImageFileNew").val();
if (name == null || name == "") {
layer.msg("请上传Excel表格(.xlsx)");
return;
}
if (!(name.endsWith(".xlsx"))) {
layer.msg("请上传正确的Excel表格(.xlsx)!");
$("#articleImageFileNew").val("");
return;
}
formData.append("file", $("#articleImageFileNew")[0].files[0]);
console.log(formData)
var idx = layer.msg('正在提交数据,请稍等...', {
icon: 16
, shade: 0.01
, time: '-1'
});
$.ajax({
url: ctxPath + "/export/reservationNew",
type: 'POST',
async: true,
data: formData,
timeout: 60 * 1000 * 10,
// 告诉jQuery不要去处理发送的数据
processData: false,
// 告诉jQuery不要去设置Content-Type请求头
contentType: false,
success: function (data) {
if (data.resMsg == '导入成功') {
showMessages('导入成功!', true);
setTimeout(() => {
window.location.reload();
}, 30001)
} else {
showMessage(data.resMsg, false);
}
console.log(data)
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log(JSON.stringify(errorThrown));
layer.close(idx);
}
});
$("#articleImageFileNew").val("");
}
/**
* 重置密码
* @param id
*/
function resetPasswordAll(){
layer.confirm('确定要重置密码吗?', {
btn : [ '确定', '取消' ]
}, function() {
ajaxCommonMethods('/personnelLibrary/resetPasswordAll',{},"重置成功","重置失败","1");
layer.close(1);
});
} }

View File

@ -35,10 +35,19 @@ layui.use(['table', 'layer', 'laydate', 'jquery', 'form'], function () {
, {field: 'higherJob', width: 240, align: 'center', title: '是否高职'} , {field: 'higherJob', width: 240, align: 'center', title: '是否高职'}
, {field: 'reservationTime', width: 200, align: 'center', title: '预约体检时间'} , {field: 'reservationTime', width: 200, align: 'center', title: '预约体检时间'}
, {field: 'name', width: 200, align: 'center', title: '预约医院'} , {field: 'name', width: 200, align: 'center', title: '预约医院'}
, {field: 'checkContentId', width: 200, align: 'center', title: '预约套餐'} , {field: 'checkContentId', width: 200, align: 'center', title: '预约体检',
// templet:function(res){
// var checkContentId = res.checkContentId;
// if(checkContentId){
// return "常规体检";
// }else{
// return "职业体检";
// }
// }
}
, {field: 'combName', width: 200, align: 'center', title: '套餐名称'} , {field: 'combName', width: 200, align: 'center', title: '套餐名称'}
, {field: 'operateTime', width: 130, align: 'center', title: '操作时间'} , {field: 'operateTime', width: 130, align: 'center', title: '操作时间'}
, {field: 'operatePerson', width: 120, align: 'center', title: '操作人员'} // , {field: 'operatePerson', width: 120, align: 'center', title: '操作人员'}
]] ]]
,done: function (res, curr, count) { ,done: function (res, curr, count) {
var state = ""; var state = "";

View File

@ -44,22 +44,16 @@
<div class="layui-form-item" style="margin-top: 10%;"> <div class="layui-form-item" style="margin-top: 10%;">
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label"><i class="tip-required" style="color: red;font-size: 20px">*</i>类型名称:</label> <label class="layui-form-label"><i class="tip-required" style="color: red;font-size: 20px">*</i>类型名称:</label>
<!-- <input type="text" name="typeName" minlength="2" maxlength="10" title="字数2-10" lay-verify="required" id="typeName" required class="layui-input">--> <input type="text" name="typeName" maxlength="40" lay-verify="required" id="typeName" required class="layui-input">
<select class="layui-select" id="typeName" lay-verify="required" name="typeName">
<option value="">--请选择类型名称--</option>
<option value="1">标准套餐</option>
<option value="2">个性化套餐</option>
<option value="3">职业健康套餐</option>
</select>
</div> </div>
</div> </div>
<div class="layui-form-item" style="margin-top: 20px;"> <!--<div class="layui-form-item" style="margin-top: 20px;">
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label"><i class="tip-required" style="color: red;font-size: 20px">*</i>套餐描述:</label> <label class="layui-form-label"><i class="tip-required" style="color: red;font-size: 20px">*</i>套餐描述:</label>
<input type="text" name="packageDescri" minlength="4" maxlength="30" title="字数4-30" <input type="text" name="packageDescri" minlength="4" maxlength="30" title="字数4-30"
lay-verify="required" id="packageDescri" required class="layui-input"> lay-verify="required" id="packageDescri" required class="layui-input">
</div> </div>
</div> </div>-->
<div class="layui-form-item" style="display: none"> <div class="layui-form-item" style="display: none">
<div class="layui-input-block"> <div class="layui-input-block">
<button type="submit" class="layui-btn subBtn" id="commit" lay-submit lay-filter="formDemo">提交 <button type="submit" class="layui-btn subBtn" id="commit" lay-submit lay-filter="formDemo">提交
@ -196,8 +190,7 @@
var resMsg = data.resMsg; var resMsg = data.resMsg;
if ("数据获取成功" == resMsg) { if ("数据获取成功" == resMsg) {
let info = data.obj.BaseTypePackageBean; let info = data.obj.BaseTypePackageBean;
$("#typeName").find('option[value=\'' + info.typeName + '\']').prop("selected", "selected"); $("#typeName").val(info.typeName);
$("#packageDescri").val(info.packageDescri);
form.render(); form.render();
} }
}, },

View File

@ -93,13 +93,7 @@
<div class="layui-form-item"> <div class="layui-form-item">
<div class="layui-input-inline" style="width: 30%;"> <div class="layui-input-inline" style="width: 30%;">
<label class="layui-form-label" style="width: 37%;">套餐类型名称:</label> <label class="layui-form-label" style="width: 37%;">套餐类型名称:</label>
<!-- <input type="text" id="typeName" placeholder="请输入套餐类型名称" autocomplete="off" class="layui-input">--> <input type="text" id="typeName" maxlength="40" title="字数40" placeholder="请输入套餐类型名称" autocomplete="off" class="layui-input">
<select class="layui-select" id="typeName" name="typeName">
<option value="">--请选择类型名称--</option>
<option value="1">标准套餐</option>
<option value="2">个性化套餐</option>
<option value="3">职业健康套餐</option>
</select>
</div> </div>
<div class="layui-inline" style="width: 5%;margin-top: 4px"> <div class="layui-inline" style="width: 5%;margin-top: 4px">

View File

@ -145,20 +145,17 @@
<div class="layui-form-item" style="margin-top: 20px;"> <div class="layui-form-item" style="margin-top: 20px;">
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label">体检医院:</label> <label class="layui-form-label"><i class="tip-required" style="color: red;font-size: 20px">*</i>体检医院:</label>
<select id="hospital" class="layui-select" name="hospital"> <select id="hospital" class="layui-select" name="hospital" lay-verify="required">
</select> </select>
</div> </div>
</div> </div>
<div class="layui-form-item" style="margin-top: 20px;"> <div class="layui-form-item" style="margin-top: 20px;">
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label">体检套餐:</label> <label class="layui-form-label"><i class="tip-required" style="color: red;font-size: 20px">*</i>体检套餐:</label>
<select id="setMeal" name="setMeal"> <select id="baseNameId" name="baseNameId" lay-verify="required">
<option value="">选择套餐</option>
<option value="1">心血管</option>
<option value="2">肿瘤</option>
<option value="3">综合</option>
</select> </select>
</div> </div>
</div> </div>
@ -221,6 +218,12 @@
* 部门下拉树 * 部门下拉树
*/ */
loadOrgTree(); loadOrgTree();
/**
* 体检套餐下拉框
*/
getPackageTypeName(form,null)
/** /**
* 修改方法调用数据回显 * 修改方法调用数据回显
*/ */
@ -370,7 +373,10 @@
$("#idNumber").prop("readonly", true); $("#idNumber").prop("readonly", true);
$("#phone").prop("readonly", true); $("#phone").prop("readonly", true);
getExaminationHospital(form, info.hospital); getExaminationHospital(form, info.hospital);
$("#setMeal").find('option[value=\'' + info.setMeal + '\']').prop("selected", "selected");
getPackageTypeName(form, info.baseNameId)
// $("#setMeal").find('option[value=\'' + info.setMeal + '\']').prop("selected", "selected");
form.render(); form.render();
// isSpecial('higherJob'); // isSpecial('higherJob');
if (info.higherJob == '1'){ if (info.higherJob == '1'){

View File

@ -113,7 +113,7 @@
</div> </div>
<div class="layui-input-inline" style="width: 20%;"> <div class="layui-input-inline" style="width: 20%;">
<label class="layui-form-label" style="width: 30%;;padding: 12px 0px">高职人员:</label> <label class="layui-form-label" style="width: 30%;padding: 12px 0px">高职人员:</label>
<select class="layui-select" id="higherJob" name="higherJob"> <select class="layui-select" id="higherJob" name="higherJob">
<option value="">--请选择是否高职人员--</option> <option value="">--请选择是否高职人员--</option>
<option value="1"></option> <option value="1"></option>
@ -148,5 +148,18 @@
<button id="importExcelYu" style="margin-bottom: 3px" onclick="importExcelYu()" class="layui-btn layui-btn-sm" ><i class="layui-icon">&#xe601;</i>导入预约</button> <button id="importExcelYu" style="margin-bottom: 3px" onclick="importExcelYu()" class="layui-btn layui-btn-sm" ><i class="layui-icon">&#xe601;</i>导入预约</button>
</div> </div>
<div class="layui-inline" style="width: 6%;margin-top: 4px">
<button id="exportBtnNew" class="layui-btn layui-btn-sm" onclick="fetchExcelNew()" ><i class="layui-icon">&#xe67d;</i>导出预约模板-新</button>
</div>
<div class="layui-inline" >
<input id="articleImageFileNew" name="excelFile" type="file" class="form-control" style="width: 200px; padding-top: 8px;margin-left: 70px;" />
<button id="importExcelNew" style="margin-bottom: 3px" onclick="importExcelNew()" class="layui-btn layui-btn-sm" ><i class="layui-icon">&#xe601;</i>导入预约-新</button>
</div>
<div class="layui-inline">
<button class="layui-btn layui-btn-sm" onclick="resetPasswordAll()" permission="sys:reset:all" ><i class="layui-icon">&#xe67d;</i>全员重置密码</button>
</div>
</div> </div>
</script> </script>