|  | @ -0,0 +1,176 @@
 | 
	
		
			
				|  |  | package com.yihu.wlyy.service.app.sign;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import com.alibaba.fastjson.JSONObject;
 | 
	
		
			
				|  |  | import com.yihu.wlyy.entity.patient.SignFamily;
 | 
	
		
			
				|  |  | import com.yihu.wlyy.entity.service.Service;
 | 
	
		
			
				|  |  | import com.yihu.wlyy.entity.service.ServiceItem;
 | 
	
		
			
				|  |  | import com.yihu.wlyy.entity.service.SignFamilyService;
 | 
	
		
			
				|  |  | import com.yihu.wlyy.entity.service.SignFamilyServiceItem;
 | 
	
		
			
				|  |  | import com.yihu.wlyy.repository.patient.SignFamilyDao;
 | 
	
		
			
				|  |  | import com.yihu.wlyy.repository.service.ServiceDao;
 | 
	
		
			
				|  |  | import com.yihu.wlyy.repository.service.ServiceItemDao;
 | 
	
		
			
				|  |  | import com.yihu.wlyy.repository.service.SignFamilyServiceDao;
 | 
	
		
			
				|  |  | import com.yihu.wlyy.repository.service.SignFamilyServiceItemDao;
 | 
	
		
			
				|  |  | import org.springframework.beans.BeanUtils;
 | 
	
		
			
				|  |  | import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | import org.springframework.jdbc.core.BeanPropertyRowMapper;
 | 
	
		
			
				|  |  | import org.springframework.jdbc.core.JdbcTemplate;
 | 
	
		
			
				|  |  | import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  | import org.springframework.util.StringUtils;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import java.util.ArrayList;
 | 
	
		
			
				|  |  | import java.util.Date;
 | 
	
		
			
				|  |  | import java.util.List;
 | 
	
		
			
				|  |  | import java.util.UUID;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | /**
 | 
	
		
			
				|  |  |  * Created by chenweida on 2017/8/8.
 | 
	
		
			
				|  |  |  * 签约服务 服务类型
 | 
	
		
			
				|  |  |  */
 | 
	
		
			
				|  |  | @org.springframework.stereotype.Service
 | 
	
		
			
				|  |  | public class SignFamilyServiceService {
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private ServiceDao serviceDao;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private ServiceItemDao serviceItemDao;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private SignFamilyDao signFamilyDao;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private SignFamilyServiceDao signFamilyServiceDao;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private SignFamilyServiceItemDao signFamilyServiceItemDao;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private JdbcTemplate jdbcTemplate;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 给患者批量分配服务
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param patients    患者code
 | 
	
		
			
				|  |  |      * @param serviceCode 服务code
 | 
	
		
			
				|  |  |      * @throws Exception
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     @Transactional
 | 
	
		
			
				|  |  |     public JSONObject patientsAddService(List<String> patients, String serviceCode) throws Exception {
 | 
	
		
			
				|  |  |         JSONObject jo = new JSONObject();
 | 
	
		
			
				|  |  |         List<String> errorPatient = new ArrayList<>();
 | 
	
		
			
				|  |  |         Service service = serviceDao.findByCode(serviceCode);
 | 
	
		
			
				|  |  |         List<ServiceItem> serviceItems = serviceItemDao.findByServiceCode(serviceCode);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         List<SignFamilyService> saveSignFamilyServiceList = new ArrayList<>();
 | 
	
		
			
				|  |  |         List<SignFamilyServiceItem> saveSignFamilyServiceItemeList = new ArrayList<>();
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         for (String patientCode : patients) {
 | 
	
		
			
				|  |  |             //判断患者是否有已经扣费的签约
 | 
	
		
			
				|  |  |             SignFamily sgnFamily = this.getSignFamily(patientCode);
 | 
	
		
			
				|  |  |             if (sgnFamily == null || sgnFamily.getNum() == 0 || sgnFamily.getNum() == null) {
 | 
	
		
			
				|  |  |                 errorPatient.add(patientCode);
 | 
	
		
			
				|  |  |                 continue;
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             //添加服务
 | 
	
		
			
				|  |  |             SignFamilyService signFamilyService = new SignFamilyService();
 | 
	
		
			
				|  |  |             signFamilyService.setServiceCode(service.getCode());
 | 
	
		
			
				|  |  |             String signServiceCode = UUID.randomUUID().toString();
 | 
	
		
			
				|  |  |             signFamilyService.setCode(signServiceCode);
 | 
	
		
			
				|  |  |             signFamilyService.setCreateTime(new Date());
 | 
	
		
			
				|  |  |             signFamilyService.setSignCode(sgnFamily.getCode());
 | 
	
		
			
				|  |  |             signFamilyService.setSignTime(new Date());
 | 
	
		
			
				|  |  |             signFamilyService.setDel(1);
 | 
	
		
			
				|  |  |             saveSignFamilyServiceList.add(signFamilyService);
 | 
	
		
			
				|  |  |             //添加服务项
 | 
	
		
			
				|  |  |             for (ServiceItem oneServiceItem : serviceItems) {
 | 
	
		
			
				|  |  |                 SignFamilyServiceItem signFamilyServiceItem = new SignFamilyServiceItem();
 | 
	
		
			
				|  |  |                 signFamilyServiceItem.setCode(UUID.randomUUID().toString());
 | 
	
		
			
				|  |  |                 signFamilyServiceItem.setCreateTime(new Date());
 | 
	
		
			
				|  |  |                 signFamilyServiceItem.setDel(1);
 | 
	
		
			
				|  |  |                 signFamilyServiceItem.setServiceCode(service.getCode());
 | 
	
		
			
				|  |  |                 signFamilyServiceItem.setServiceItemCode(oneServiceItem.getCode());
 | 
	
		
			
				|  |  |                 signFamilyServiceItem.setSignCode(sgnFamily.getCode());
 | 
	
		
			
				|  |  |                 signFamilyServiceItem.setSignServiceCode(signServiceCode);
 | 
	
		
			
				|  |  |                 saveSignFamilyServiceItemeList.add(signFamilyServiceItem);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         signFamilyServiceDao.save(saveSignFamilyServiceList);
 | 
	
		
			
				|  |  |         signFamilyServiceItemDao.save(saveSignFamilyServiceItemeList);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         jo.put("status", 1);//执行成功
 | 
	
		
			
				|  |  |         jo.put("errorPatients", errorPatient);//未成功的患者
 | 
	
		
			
				|  |  |         return jo;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 给患者分配服务
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param patient     患者code
 | 
	
		
			
				|  |  |      * @param serviceCode 服务code
 | 
	
		
			
				|  |  |      * @throws Exception
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     @Transactional
 | 
	
		
			
				|  |  |     public boolean patientAddService(String patient, String serviceCode) throws Exception {
 | 
	
		
			
				|  |  |         Service service = serviceDao.findByCode(serviceCode);
 | 
	
		
			
				|  |  |         List<ServiceItem> serviceItems = serviceItemDao.findByServiceCode(serviceCode);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         //判断患者是否有已经扣费的签约
 | 
	
		
			
				|  |  |         SignFamily sgnFamily = this.getSignFamily(patient);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         //添加服务
 | 
	
		
			
				|  |  |         SignFamilyService signFamilyService = new SignFamilyService();
 | 
	
		
			
				|  |  |         signFamilyService.setServiceCode(service.getCode());
 | 
	
		
			
				|  |  |         String signServiceCode = UUID.randomUUID().toString();
 | 
	
		
			
				|  |  |         signFamilyService.setCode(signServiceCode);
 | 
	
		
			
				|  |  |         signFamilyService.setCreateTime(new Date());
 | 
	
		
			
				|  |  |         signFamilyService.setSignCode(sgnFamily.getCode());
 | 
	
		
			
				|  |  |         signFamilyService.setSignTime(new Date());
 | 
	
		
			
				|  |  |         signFamilyService.setDel(1);
 | 
	
		
			
				|  |  |         //添加服务项
 | 
	
		
			
				|  |  |         List<SignFamilyServiceItem> saveSignFamilyServiceItemeList = new ArrayList<>();
 | 
	
		
			
				|  |  |         for (ServiceItem oneServiceItem : serviceItems) {
 | 
	
		
			
				|  |  |             SignFamilyServiceItem signFamilyServiceItem = new SignFamilyServiceItem();
 | 
	
		
			
				|  |  |             signFamilyServiceItem.setCode(UUID.randomUUID().toString());
 | 
	
		
			
				|  |  |             signFamilyServiceItem.setCreateTime(new Date());
 | 
	
		
			
				|  |  |             signFamilyServiceItem.setDel(1);
 | 
	
		
			
				|  |  |             signFamilyServiceItem.setServiceCode(service.getCode());
 | 
	
		
			
				|  |  |             signFamilyServiceItem.setServiceItemCode(oneServiceItem.getCode());
 | 
	
		
			
				|  |  |             signFamilyServiceItem.setSignCode(sgnFamily.getCode());
 | 
	
		
			
				|  |  |             signFamilyServiceItem.setSignServiceCode(signServiceCode);
 | 
	
		
			
				|  |  |             saveSignFamilyServiceItemeList.add(signFamilyServiceItem);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         signFamilyServiceDao.save(signFamilyService);
 | 
	
		
			
				|  |  |         signFamilyServiceItemDao.save(saveSignFamilyServiceItemeList);
 | 
	
		
			
				|  |  |         return true;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 查找患者有哪些服务项
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param patient     患者code
 | 
	
		
			
				|  |  |      * @param serviceCode 服务code
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      * @throws Exception
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public List<ServiceItem> getPatientServiceItem(String patient, String serviceCode) throws Exception {
 | 
	
		
			
				|  |  |         StringBuffer sql = new StringBuffer(" SELECT " +
 | 
	
		
			
				|  |  |                 "   s.* " +
 | 
	
		
			
				|  |  |                 " FROM " +
 | 
	
		
			
				|  |  |                 "   wlyy_service_item s, " +
 | 
	
		
			
				|  |  |                 "   wlyy_sign_family_service_item si " +
 | 
	
		
			
				|  |  |                 " WHERE " +
 | 
	
		
			
				|  |  |                 "   s.`code` = si.service_item_code ");
 | 
	
		
			
				|  |  |         if (!StringUtils.isEmpty(patient)) {
 | 
	
		
			
				|  |  |             sql.append(" and si.patient = '" + patient + "'");
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (!StringUtils.isEmpty(serviceCode)) {
 | 
	
		
			
				|  |  |             sql.append(" and si.service_code = '" + serviceCode + "'");
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         return jdbcTemplate.query(sql.toString(), new BeanPropertyRowMapper(ServiceItem.class));
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     private SignFamily getSignFamily(String patient) {
 | 
	
		
			
				|  |  |         String sql = "select count(id) num,code from wlyy_sign_family where patient='" + patient + "' ";
 | 
	
		
			
				|  |  |         List<SignFamily> signFamilies = jdbcTemplate.query(sql, new BeanPropertyRowMapper(SignFamily.class));
 | 
	
		
			
				|  |  |         return signFamilies.get(0);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | }
 |