Переглянути джерело

Merge remote-tracking branch 'origin/matser' into matser

ZhuJiaHao 6 місяців тому
батько
коміт
623e0d875f

+ 1 - 0
ibps-api-root/modules/api-base/src/main/java/com/lc/ibps/api/base/constants/StateEnum.java

@@ -139,6 +139,7 @@ public enum StateEnum /*implements BaseEnum*/ {
 
 	, ERROR_BPMN_TASK(6050300, "流程任务异常")
 	, ERROR_BPMN_NO_TASK(6050301, "流程任务不存在或已被办理")
+	, ERROR_BPMN_DEALT_WITH(6000001, "流程任务不存在或已被办理")
 	, ERROR_BPMN_LOCKED_TASK(6050302, "流程任务被锁定")
 	, ERROR_BPMN_SUSPEND_TASK(6050303, "流程实例被挂起")
 	, ERROR_BPMN_PERMISSION_TASK(6050304, "流程任务无权限")

+ 3 - 0
ibps-bpmn-root/modules/bpmn-biz/src/main/java/com/lc/ibps/bpmn/repository/BpmInstRepository.java

@@ -358,4 +358,7 @@ public interface BpmInstRepository extends IRepository<String, BpmInstPo,BpmInst
 
 	public BpmInstPo getById(String id);
 
+
+	public BpmInstPo getByIdAndBiz(String id,String biz);
+
 }

+ 9 - 0
ibps-bpmn-root/modules/bpmn-biz/src/main/java/com/lc/ibps/bpmn/repository/impl/BpmInstRepositoryImpl.java

@@ -807,4 +807,13 @@ public class BpmInstRepositoryImpl extends AbstractRepository<String, BpmInstPo,
 		List<BpmInstPo> poList = findByKey("getById", "getById", b().a("id", id).p());
 		return poList.size() > 0 ? poList.get(0):po;
 	}
+
+	@Override
+	public BpmInstPo  getByIdAndBiz(String id,String biz) {
+		BpmInstPo po = new BpmInstPo();
+		List<BpmInstPo> poList = findByKey("getByIdAndBiz", "getByIdAndBiz",
+				b().a("id", id).a("biz",biz).p());
+		return poList.size() > 0 ? poList.get(0):po;
+	}
+
 }

+ 6 - 0
ibps-bpmnbase-root/modules/bpmn-model/src/main/resources/com/lc/ibps/bpmn/persistence/mapping/BpmInst.map.xml

@@ -942,5 +942,11 @@
 		FROM IBPS_BPM_INST
 		WHERE ID_ = #{id,jdbcType=VARCHAR}
 	</select>
+
+	<select id="getByIdAndBiz" resultMap="BpmInstPo">
+		SELECT <include refid="columns"/>
+		FROM IBPS_BPM_INST
+		WHERE ID_ = #{id} AND BIZ_KEY_ = #{biz} AND STATUS_ = 'running'
+	</select>
 	
 </mapper>

+ 27 - 1
ibps-provider-root/modules/provider-bpmn/src/main/java/com/lc/ibps/bpmn/provider/BpmInstProvider.java

@@ -10,7 +10,11 @@ import javax.annotation.Resource;
 
 import com.lc.ibps.api.base.model.DefaultNoneUser;
 import com.lc.ibps.form.data.exception.DataException;
+import com.lc.ibps.office.provider.BpmInitiatedProvider;
 import org.activiti.engine.ActivitiException;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.slf4j.event.Level;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -132,7 +136,9 @@ import net.sf.json.JSONObject;
 @Api(tags = "流程实例", value = "流程实例控制类")
 @Service
 public class BpmInstProvider extends GenericProvider implements IBpmInstService, IBpmInstMgrService {
-	
+
+	private static final Logger logger = LoggerFactory.getLogger(BpmInstProvider.class);
+
 	@Resource
 	private BpmInstRepository bpmInstRepository;
 	@Resource
@@ -278,6 +284,26 @@ public class BpmInstProvider extends GenericProvider implements IBpmInstService,
 		APIResult<Void> result = new APIResult<>();
 		try {
 			IbpsProcInstCmd cmd = this.getStartCmd(request);
+			String instId = cmd.getInstId(); //流程实例id
+			String id = "";
+			String businessKey = cmd.getBusData();
+			try {
+				ObjectMapper objectMapper = new ObjectMapper();
+				Map map = objectMapper.readValue(businessKey, Map.class);
+				id = map.get("id").toString();
+			}catch (Exception e){
+				logger.warn("流程实例数据转map失败");
+			}
+			if(BeanUtils.isNotEmpty(instId) && BeanUtils.isNotEmpty(id) ){ //流程实例id和boid均不为空则进行判断
+				BpmInstPo byIdAndBiz = bpmInstRepository.getByIdAndBiz(instId, id);
+				if(BeanUtils.isNotEmpty(byIdAndBiz) && instId.equals(byIdAndBiz.getId()) && id.equals(byIdAndBiz.getBizKey())){
+					//相同即表示同一条数据
+					logger.warn("当前选择数据已经提交,请确认后操作");
+					result.setMessage("当前选择数据中有已提交的数据,请刷新后在操作");
+					result.setState( StateEnum.WARN.getCode());
+					return result;
+				}
+			}
 			IBpmProcInst procInst = bpmProcInstService.saveDraft(cmd);
 			result.setMessage(I18nUtil.getMessage("com.lc.ibps.bpmn.provider.BpmInstProvider.saveDraft"));
 			result.addVariable("proInstId", procInst.getId());

+ 3 - 0
ibps-provider-root/modules/provider-bpmn/src/main/java/com/lc/ibps/bpmn/provider/BpmTaskProvider.java

@@ -2812,6 +2812,9 @@ public class BpmTaskProvider extends GenericProvider implements IBpmTaskService,
 		catch (HandlingTaskException e) {
 			setExceptionResult(result, StateEnum.ERROR_BPMN_HANDLING_TASK.getCode(), I18nUtil.getMessage(StateEnum.ERROR_BPMN_HANDLING_TASK.getCode()+""), e);
 		}
+		catch (RuntimeException e) { //提示信息更全
+			setExceptionResult(result, StateEnum.ERROR_BPMN_DEALT_WITH.getCode(), I18nUtil.getMessage(StateEnum.ERROR_BPMN_HANDLING_TASK.getCode()+""), e);
+		}
 		catch (Exception e) {
 			setExceptionResult(result, StateEnum.ERROR_BPMN_TASK.getCode(), I18nUtil.getMessage(StateEnum.ERROR_BPMN_TASK.getCode()+""), e);
 		}

+ 16 - 3
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/components/sqlzdy/Service/SwdlServiceImpl.java

@@ -18,6 +18,7 @@ import com.lc.ibps.cloud.provider.GenericProvider;
 import com.lc.ibps.org.api.IPartyPositionService;
 import com.lc.ibps.org.party.persistence.entity.PartyPositionPo;
 import com.lc.ibps.sysdata.dao.UpdateDataTableDao;
+import com.lc.ibps.untils.settingUtil;
 import io.swagger.annotations.ApiParam;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -125,9 +126,21 @@ public class SwdlServiceImpl extends GenericProvider implements SwdlService {
                 map.put("locationId", getDiDian());
             }
             Map mapDeal = getMap(map);
-            List<Map<String, Object>> list = updateDataTableDao.selectExInfoByLocation(mapDeal);
-            int totalCount = updateDataTableDao.selectExInfoByLocationCount(mapDeal);
-            int totalCountNull = updateDataTableDao.selectExInfoByLocationCountNull(mapDeal);
+            List<Map<String, Object>> list = new ArrayList<>();
+            String px = settingUtil.getPx();
+            int totalCount = 0;
+            int totalCountNull = 0;
+            if(BeanUtils.isNotEmpty(px) && "1".equals(px)){
+                list = updateDataTableDao.selectExInfoByNLocation(mapDeal);
+                totalCount = updateDataTableDao.selectExInfoByNLocationCount(mapDeal);
+                totalCountNull = updateDataTableDao.selectExInfoByNLocationCountNull(mapDeal);
+            }else{
+               list = updateDataTableDao.selectExInfoByLocation(mapDeal);
+                totalCount = updateDataTableDao.selectExInfoByLocationCount(mapDeal);
+                totalCountNull = updateDataTableDao.selectExInfoByLocationCountNull(mapDeal);
+            }
+            // totalCount = updateDataTableDao.selectExInfoByLocationCount(mapDeal);
+             //totalCountNull = updateDataTableDao.selectExInfoByLocationCountNull(mapDeal);
             APIPageList<Map<String, Object>> pageList = getAPIPageList(list);
             APIPageResult pageResult = new APIPageResult();
             pageResult.setTotalCount(totalCount+totalCountNull);

+ 6 - 0
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/sysdata/dao/UpdateDataTableDao.java

@@ -83,14 +83,20 @@ public interface UpdateDataTableDao {
 
     List<Map<String, Object>> selectExInfoByLocation(@Param("map") Map<String, Object> map);
 
+    List<Map<String, Object>>  selectExInfoByNLocation(@Param("map") Map<String, Object> map);
+
     int selectExInfoByLocationCount(@Param("map") Map<String,Object> map);
 
+    int selectExInfoByNLocationCount(@Param("map") Map<String,Object> map);
+
     List<Map<String, Object>> selectMobileInspection(@Param("map") Map<String, Object> map);
 
     int selectMobileInspectionCount(@Param("map") Map<String, Object> map);
 
     int selectExInfoByLocationCountNull(@Param("map") Map mapDeal);
 
+    int selectExInfoByNLocationCountNull(@Param("map") Map mapDeal);
+
     List<Map<String, Object>> selectMobileExInfo(@Param("map") Map mapDeal);
 
     int selectMobileExInfoCount(@Param("map") Map mapDeal);

+ 131 - 0
ibps-provider-root/modules/provider-business/src/main/resources/com/lc/ibps/klimsibps/mapping/UpdateDataTableMapper.xml

@@ -350,6 +350,76 @@
             </if>
         </where>
     </select>
+
+    <select id="selectExInfoByNLocation" resultType="java.util.Map" parameterType="java.util.Map">
+        select
+        qb.ti_ku_ming_cheng_ as bankName,
+        f.pei_xun_nei_rong_ as trainId,
+        ex.id_ as examId,
+        ex.ti_ku_id_ as bankId,
+        e.id_ as paperId,
+        ex.zhuang_tai_ as examState,
+        e.zhuang_tai_ as paperState,
+        qb.ti_shu_ as questionCount,
+        qb.zong_fen_ as totalScore,
+        ex.kao_shi_ming_chen as examName,
+        ex.kao_shi_lei_xing_ as examType,
+        ex.can_kao_ren_yuan_ as examinee,
+        e.kao_shi_ren_ as examineeId,
+        ex.create_by_ as createBy,
+        ex.chuang_jian_shi_j as createTime,
+        ex.fa_bu_shi_jian_ as publishDate,
+        ex.fa_bu_ren_ as publisher,
+        ex.xian_kao_shi_jian as limitDate,
+        ex.kao_shi_shi_chang as duration,
+        ex.xian_kao_ci_shu_ as limitCount,
+        ex.da_biao_zhan_bi_ as qualifiedRadio,
+        ex.ji_fen_fang_shi_ as scoringType,
+        ex.yun_xu_bao_ming_ as allowRegist,
+        ex.kao_shi_miao_shu_ as examDesc,
+        ex.shu_ju_yong_tu_ as dataType,
+        ex.sui_ji_chou_ti_ as isRand,
+        ex.chou_ti_fang_shi_ as randWay,
+        ex.sui_ji_ti_shu_ as randNumber,
+        ex.chou_ti_zong_fen_ as randScore,
+        ex.ti_mu_zong_shu_ as randTotal,
+        e.de_fen_ as score,
+        e.bao_ming_shi_jian as applyTime,
+        e.kai_shi_shi_jian_ as startTime,
+        e.jie_shu_shi_jian_ as endTime
+
+        from t_exams ex left join t_question_bank qb on ex.ti_ku_id_ = qb.id_
+        left join t_examination e on e.exam_id_ = ex.id_
+        left join t_lhrypxjlb f on f.id_=ex.guan_lian_id_
+        <where>
+            ex.di_dian_ = #{map.locationId}
+            <if test="@o.Ognl@isNotEmpty(map.kaoShiMingChen)">
+                and ex.kao_shi_ming_chen like CONCAT('%', #{map.kaoShiMingChen}, '%')
+            </if>
+            <if test="@o.Ognl@isNotEmpty(map.kaoShiLeiXing)">
+                AND FIND_IN_SET(ex.kao_shi_lei_xing_,#{map.kaoShiLeiXing})
+            </if>
+            <if test="@o.Ognl@isNotEmpty(map.zhuangTai)">
+                AND FIND_IN_SET(ex.zhuang_tai_,#{map.zhuangTai})
+            </if>
+            <if test="@o.Ognl@isNotEmpty(map.tiKuId)">
+                AND FIND_IN_SET(ex.ti_ku_id_,#{map.tiKuId})
+            </if>
+            <if test="@o.Ognl@isNotEmpty(map.chuangJianShiJUp)">
+                AND (ex.chuang_jian_shi_j >= #{map.chuangJianShiJUp} OR ex.chuang_jian_shi_j is null)
+            </if>
+            <if test="@o.Ognl@isNotEmpty(map.chuangJianShiJLower)">
+                AND (ex.chuang_jian_shi_j <![CDATA[ <= ]]> #{map.chuangJianShiJLower} OR ex.chuang_jian_shi_j is null)
+            </if>
+            <if test="@o.Ognl@isNotEmpty(map.faBuShiJianUp)">
+                AND (ex.fa_bu_shi_jian_ >= #{map.faBuShiJianUp} OR ex.chuang_jian_shi_j is null)
+            </if>
+            <if test="@o.Ognl@isNotEmpty(map.faBuShiJianLower)">
+                AND (ex.fa_bu_shi_jian_ <![CDATA[ <= ]]> #{map.faBuShiJianLower} OR ex.chuang_jian_shi_j is null)
+            </if>
+        </where>
+    </select>
+
     <select id="selectExInfoByLocationCount" resultType="java.lang.Integer" parameterType="java.util.Map">
         select
         count(*) as count
@@ -384,6 +454,42 @@
             </if>
         </where>
     </select>
+
+    <select id="selectExInfoByNLocationCount" resultType="java.lang.Integer" parameterType="java.util.Map">
+        select
+        count(*) as count
+        from t_exams ex left join t_question_bank qb on ex.ti_ku_id_ = qb.id_
+        left join t_examination e on e.exam_id_ = ex.id_
+        left join t_lhrypxjlb f on f.id_=ex.guan_lian_id_
+        <where>
+            ex.di_dian_ = #{map.locationId}
+            <if test="@o.Ognl@isNotEmpty(map.kaoShiMingChen)">
+                and ex.kao_shi_ming_chen like CONCAT('%', #{map.kaoShiMingChen}, '%')
+            </if>
+            <if test="@o.Ognl@isNotEmpty(map.kaoShiLeiXing)">
+                AND FIND_IN_SET(ex.kao_shi_lei_xing_,#{map.kaoShiLeiXing})
+            </if>
+            <if test="@o.Ognl@isNotEmpty(map.zhuangTai)">
+                AND FIND_IN_SET(ex.zhuang_tai_,#{map.zhuangTai})
+            </if>
+            <if test="@o.Ognl@isNotEmpty(map.tiKuId)">
+                AND FIND_IN_SET(ex.ti_ku_id_,#{map.tiKuId})
+            </if>
+            <if test="@o.Ognl@isNotEmpty(map.chuangJianShiJUp)">
+                AND ex.chuang_jian_shi_j >= #{map.chuangJianShiJUp}
+            </if>
+            <if test="@o.Ognl@isNotEmpty(map.chuangJianShiJLower)">
+                AND ex.chuang_jian_shi_j <![CDATA[ <= ]]> #{map.chuangJianShiJLower}
+            </if>
+            <if test="@o.Ognl@isNotEmpty(map.faBuShiJianUp)">
+                AND ex.fa_bu_shi_jian_ >= #{map.faBuShiJianUp}
+            </if>
+            <if test="@o.Ognl@isNotEmpty(map.faBuShiJianLower)">
+                AND ex.fa_bu_shi_jian_ <![CDATA[ <= ]]> #{map.faBuShiJianLower}
+            </if>
+        </where>
+    </select>
+
     <select id="selectExInfoByLocationCountNull" resultType="java.lang.Integer" parameterType="java.util.Map">
         select
         count(*) as count
@@ -407,6 +513,31 @@
             and ex.chuang_jian_shi_j is null or ex.fa_bu_shi_jian_ is null
         </where>
     </select>
+
+    <select id="selectExInfoByNLocationCountNull" resultType="java.lang.Integer" parameterType="java.util.Map">
+        select
+        count(*) as count
+        from t_exams ex left join t_question_bank qb on ex.ti_ku_id_ = qb.id_
+        left join t_examination e on e.exam_id_ = ex.id_
+        left join t_lhrypxjlb f on f.id_=ex.guan_lian_id_
+        <where>
+            ex.di_dian_ = #{map.locationId}
+            <if test="@o.Ognl@isNotEmpty(map.kaoShiMingChen)">
+                and ex.kao_shi_ming_chen like CONCAT('%', #{map.kaoShiMingChen}, '%')
+            </if>
+            <if test="@o.Ognl@isNotEmpty(map.kaoShiLeiXing)">
+                AND FIND_IN_SET(ex.kao_shi_lei_xing_,#{map.kaoShiLeiXing})
+            </if>
+            <if test="@o.Ognl@isNotEmpty(map.zhuangTai)">
+                AND FIND_IN_SET(ex.zhuang_tai_,#{map.zhuangTai})
+            </if>
+            <if test="@o.Ognl@isNotEmpty(map.tiKuId)">
+                AND FIND_IN_SET(ex.ti_ku_id_,#{map.tiKuId})
+            </if>
+            and ex.chuang_jian_shi_j is null or ex.fa_bu_shi_jian_ is null
+        </where>
+    </select>
+
     <select id="selectMobileInspection" resultType="java.util.Map" parameterType="java.util.Map">
         select
         *

+ 10 - 3
ibps-provider-root/modules/provider-platform/src/main/java/com/lc/ibps/platform/plan/job/EquipmentMaintenancePlanJob.java

@@ -352,7 +352,8 @@ public class EquipmentMaintenancePlanJob  extends AbstractJob {
         // 2025-04-10 修改  不再新增校准记录,用计划记录开流程
         String sql = "UPDATE t_mjsbjdxzjhzb a JOIN t_mjsbjdxzjh b ON a.parent_id_ = b.id_ SET a.marks_ = 'record' " +
                 "WHERE b.shi_fou_guo_shen_ = '已完成' and a.ji_hua_ri_qi_<>'' and a.ji_hua_ri_qi_ is not null " +
-                "AND a.ji_hua_ri_qi_ <= DATE_ADD(CURDATE(), INTERVAL 30 DAY) AND a.ji_hua_ri_qi_>= CURRENT_DATE AND a.shi_fou_guo_shen_='待处理'";
+                "AND a.ji_hua_ri_qi_ <= DATE_ADD(CURDATE(), INTERVAL 30 DAY) AND a.ji_hua_ri_qi_>= CURRENT_DATE AND a.shi_fou_guo_shen_='待处理' " +
+                "AND (a.dsrw_ is null or a.dsrw_ ='') ";
         commonDao.execute(sql);
 
         // 检定/校准计划与实施记录表_子表
@@ -533,7 +534,8 @@ public class EquipmentMaintenancePlanJob  extends AbstractJob {
     protected void startWorkflow(String tableName, String formKey, String defKey) {
         String fetchSql = "SELECT a.id_ id_ FROM t_mjsbjdxzjhzb a inner join t_mjsbjdxzjh b on a.parent_id_=b.id_ " +
                 "where b.shi_fou_guo_shen_='已完成' and a.marks_ = 'record' and a.ji_hua_ri_qi_<>'' and a.ji_hua_ri_qi_ is not null " +
-                " and a.ji_hua_ri_qi_<=DATE_ADD(CURDATE(),INTERVAL 30 DAY) and a.ji_hua_ri_qi_>=CURRENT_DATE and a.shi_fou_guo_shen_='待处理' ";
+                " and a.ji_hua_ri_qi_<=DATE_ADD(CURDATE(),INTERVAL 30 DAY) and a.ji_hua_ri_qi_>=CURRENT_DATE and a.shi_fou_guo_shen_='待处理' " +
+                " AND (a.dsrw_ is null or a.dsrw_ ='') ";
         fetchSql = String.format(fetchSql,tableName);
         List<Map<String, Object>> list = (List<Map<String, Object>>) commonDao.query(fetchSql);
         if (BeanUtils.isEmpty(list)) return;
@@ -545,7 +547,12 @@ public class EquipmentMaintenancePlanJob  extends AbstractJob {
         }
         for (Map<String, Object> objectMap : list) {
             APIResult<String> result = bpmInstService.startFlowFromList(new String[]{(String) objectMap.get("id_")}, formKey, defKey);
-            result.getState();
+            int state = result.getState();
+            if("200".equals(String.valueOf(state))){
+                //已经推送过流程的数据防止重复推送,dsrw_=1 表示数据是t_dsrw推送的数据
+                String sql = "UPDATE t_mjsbjdxzjhzb SET dsrw_ = '2' where id_= '"+(String) objectMap.get("id_")+"' ";
+                commonDao.execute(sql);
+            }
         }
     }