| | |
| | | @ValueTableShow(value = 16, name = "下次校准日期") |
| | | @ApiModelProperty(value = "下次校准日期") |
| | | private LocalDateTime nextCalibrationDateTwo; |
| | | |
| | | @ApiModelProperty(value = "校准提醒") |
| | | private String status; |
| | | } |
| | |
| | | SEPARATOR ';' |
| | | ) AS insProductItem, |
| | | u.name , |
| | | l.laboratory_name |
| | | l.laboratory_name, |
| | | cmr.next_calibration_date nextCalibrationDateTwo, |
| | | CASE |
| | | WHEN cmr.next_calibration_date IS NULL THEN 0 |
| | | WHEN cmr.next_calibration_date BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 45 DAY) THEN 1 |
| | | ELSE 0 |
| | | END AS status |
| | | FROM |
| | | device d |
| | | LEFT JOIN `user` u ON u.id = d.equipment_manager |
| | | LEFT JOIN laboratory l ON l.id = d.subordinate_departments_id |
| | | LEFT JOIN device_metric_record cmr ON d.id = cmr.device_id |
| | | LEFT JOIN (SELECT |
| | | device_id, |
| | | type, |
| | | MAX(next_calibration_date) AS next_calibration_date |
| | | FROM |
| | | device_metric_record |
| | | GROUP BY |
| | | device_id )cmr ON d.id = cmr.device_id |
| | | LEFT JOIN structure_item_parameter sip ON FIND_IN_SET(sip.id, d.ins_product_ids) |
| | | <where> |
| | | <if test="laboratoryNameIsNull != null and laboratoryNameIsNull == true"> |
| | |
| | | </where> |
| | | GROUP BY |
| | | d.id, |
| | | u.name, l.laboratory_name |
| | | u.name, l.laboratory_name,cmr.next_calibration_date,status |
| | | ) a |
| | | <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''"> |
| | | ${ew.customSqlSegment} |
| | |
| | | return Result.success(insOrderPlanService.verifyPlan(sampleId, laboratory, type, tell)); |
| | | } |
| | | |
| | | @ValueClassify("检验任务") |
| | | @ApiOperation(value = "纠正复核") |
| | | @PostMapping("/verifyPlan2") |
| | | public Result<?> verifyPlan2(Integer sampleId, String laboratory, Integer type, String tell) throws IOException { |
| | | return Result.success(insOrderPlanService.verifyPlan2(sampleId, laboratory, type, tell)); |
| | | } |
| | | |
| | | @ValueAuth |
| | | @ApiOperation(value = "校验检验任务提交") |
| | | @PostMapping("/checkSubmitPlan") |
| | |
| | | @ValueAuth |
| | | @PostMapping("/getInsProduct2") |
| | | @ApiOperation("查看检验历史") |
| | | //这里的id是样品id |
| | | public Result<?> getInsProduct2(Integer id, Integer type, String laboratory, HttpServletRequest request, Integer num) { |
| | | return Result.success(insOrderPlanService.getInsProduct2(id, type, laboratory, request, num)); |
| | | } |
| | |
| | | @ValueAuth |
| | | @PostMapping("/getCheckUser") |
| | | @ApiOperation("获取当前检验任务的所有检验员信息") |
| | | //这里的传参是样品id,等检验任务那块全改了之后这里就没问题 |
| | | public Result<?> getCheckUser(Integer id,String sonLaboratory) { |
| | | List<InsSampleUser> insSampleUsers = insSampleUserMapper.selectList(Wrappers.<InsSampleUser>lambdaQuery() |
| | | .eq(InsSampleUser::getState, 0) //检验人 |
| | |
| | | |
| | | @ValueClassify("样品管理") |
| | | @GetMapping("/selectWarehouse") |
| | | @ApiOperation("查询仓库") |
| | | @ApiOperation("查询仓库---仅查询为空货架") |
| | | public Result selectWarehouse() { |
| | | return Result.success(warehouseService.selectWarehouse()); |
| | | } |
| | | |
| | | |
| | | @ValueClassify("样品管理") |
| | | @PostMapping("/addShelf") |
| | | @ApiOperation("添加货架") |
| | |
| | | |
| | | import java.io.Serializable; |
| | | import java.time.LocalDateTime; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 货架 |
| | |
| | | * 外键:仓库id |
| | | */ |
| | | private Integer warehouseId; |
| | | |
| | | @TableField(select = false,exist = false) |
| | | List<WarehouseCell> warehouseCellList; |
| | | } |
| | |
| | | |
| | | int verifyPlan(Integer sampleId, String laboratory, Integer type, String tell) throws IOException; |
| | | |
| | | //纠正复核错误的情况 |
| | | int verifyPlan2(Integer sampleId, String laboratory, Integer type, String tell) throws IOException; |
| | | |
| | | int submitPlan(SubmitPlanDto submitPlanDto); |
| | | |
| | | //撤销提交 |
| | |
| | | .set(InsOrderState::getVerifyTell, tell) |
| | | .set(InsOrderState::getVerifyUser, userId)); |
| | | //如果订单类型是原理样机,则该订单直接闭环 |
| | | if (insOrder.getFormType().equals("原理样机")) { |
| | | //出库 |
| | | try { |
| | | List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, insSample.getInsOrderId())); |
| | | for (InsSample sample : insSamples) { |
| | | outInsOrderState(laboratory, sample.getSampleCode(), insOrder.getEntrustCode()); |
| | | } |
| | | } catch (Exception e) { |
| | | |
| | | } |
| | | } |
| | | insOrder.setState(4); |
| | | insOrderMapper.updateById(insOrder); |
| | |
| | | return 1; |
| | | } |
| | | |
| | | private void getTemplateThing(Set<Integer> set, Map<Integer, String> map2, List<InsProduct> insProducts) { |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public int verifyPlan2(Integer sampleId, String laboratory, Integer type, String tell) throws IOException { |
| | | Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId"); |
| | | InsSample insSample = insSampleMapper.selectById(sampleId); |
| | | InsOrder insOrder = insOrderMapper.selectById(insSample.getInsOrderId()); |
| | | /*type=0 再次试验; type=1 继续试验 ; type=2 结束试验*/ |
| | | // 查询根据 id 倒序排列的第一条记录 |
| | | InsOrderState record = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery() |
| | | .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId()) |
| | | .eq(InsOrderState::getInsSampleId, sampleId) |
| | | .eq(InsOrderState::getLaboratory, laboratory) |
| | | .orderByDesc(InsOrderState::getId) |
| | | .last("LIMIT 1")); // 确保只取一条记录 |
| | | if (record != null) { |
| | | //更新记录 |
| | | insOrderUserMapper.update(null, Wrappers.<InsOrderUser>lambdaUpdate() |
| | | .eq(InsOrderUser::getInsOrderStateId, record.getId()) |
| | | .eq(InsOrderUser::getNum, record.getNum()) |
| | | .set(InsOrderUser::getTell, tell)); |
| | | switch (type) { |
| | | case 0: |
| | | //再次试验:该单子退回到检验状态(排序改成当前的最后),次数递增(保留以前的数据); |
| | | insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate() |
| | | .eq(InsOrderState::getId, record.getId()) |
| | | .set(InsOrderState::getInsTime, LocalDateTime.now()) |
| | | .set(InsOrderState::getInsState, 4) |
| | | .set(InsOrderState::getVerifyTell, tell) |
| | | .set(InsOrderState::getVerifyUser, userId) |
| | | .set(InsOrderState::getNum, record.getNum() + 1)//次数加1 |
| | | .set(InsOrderState::getCreateTime, LocalDateTime.now())); |
| | | insOrder.setState(3); |
| | | break; |
| | | case 1: |
| | | //继续试验:该样品该站点任务结束(可以再次扫码检验); |
| | | //先判断上一个复核是什么结论 |
| | | if (record.getInsState()==4){ |
| | | insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate() |
| | | .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId()) |
| | | .eq(InsOrderState::getInsSampleId, sampleId) |
| | | .eq(InsOrderState::getLaboratory, laboratory) |
| | | .set(InsOrderState::getInsState, 6) |
| | | .set(InsOrderState::getVerifyTell, tell) |
| | | .set(InsOrderState::getNum, record.getNum() - 1)//次数-1 |
| | | .set(InsOrderState::getVerifyUser, userId)); |
| | | }else { |
| | | insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate() |
| | | .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId()) |
| | | .eq(InsOrderState::getInsSampleId, sampleId) |
| | | .eq(InsOrderState::getLaboratory, laboratory) |
| | | .set(InsOrderState::getInsState, 6) |
| | | .set(InsOrderState::getVerifyTell, tell) |
| | | .set(InsOrderState::getVerifyUser, userId)); |
| | | } |
| | | insOrder.setState(3); |
| | | break; |
| | | case 2: |
| | | //结束试验:此委托单停止试验(无法再次检验)。 |
| | | //先判断上一个复核是什么结论 |
| | | if (record.getInsState()==4){ |
| | | insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate() |
| | | .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId()) |
| | | .eq(InsOrderState::getInsSampleId, sampleId) |
| | | .eq(InsOrderState::getLaboratory, laboratory) |
| | | .set(InsOrderState::getInsState, 5) |
| | | .set(InsOrderState::getNum, record.getNum() - 1)//次数-1 |
| | | .set(InsOrderState::getVerifyTell, tell) |
| | | .set(InsOrderState::getVerifyUser, userId)); |
| | | }else { |
| | | insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate() |
| | | .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId()) |
| | | .eq(InsOrderState::getInsSampleId, sampleId) |
| | | .eq(InsOrderState::getLaboratory, laboratory) |
| | | .set(InsOrderState::getInsState, 5) |
| | | .set(InsOrderState::getVerifyTell, tell) |
| | | .set(InsOrderState::getVerifyUser, userId)); |
| | | } |
| | | //出库 |
| | | List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, insSample.getInsOrderId())); |
| | | for (InsSample sample : insSamples) { |
| | | outInsOrderState(laboratory, sample.getSampleCode(), insOrder.getEntrustCode()); |
| | | } |
| | | insOrder.setState(4); |
| | | break; |
| | | } |
| | | insOrderMapper.updateById(insOrder); |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | private void getTemplateThing |
| | | (Set<Integer> set, Map<Integer, String> map2, List<InsProduct> insProducts) { |
| | | for (InsProduct product : insProducts) { |
| | | if (product.getTemplateId() == null) { |
| | | product.setTemplate(new ArrayList<>()); |
| | |
| | | import com.yuanchu.mom.mapper.InsOrderMapper; |
| | | import com.yuanchu.mom.mapper.InsProductMapper; |
| | | import com.yuanchu.mom.mapper.InsSampleMapper; |
| | | import com.yuanchu.mom.mapper.WarehouseHistoryMapper; |
| | | import com.yuanchu.mom.pojo.InsOrder; |
| | | import com.yuanchu.mom.pojo.InsProduct; |
| | | import com.yuanchu.mom.pojo.InsSample; |
| | | import com.yuanchu.mom.pojo.WarehouseHistory; |
| | | import com.yuanchu.mom.service.InsProductService; |
| | | import com.yuanchu.mom.utils.QueryWrappers; |
| | | import com.yuanchu.mom.vo.InsOrderPlanVO; |
| | |
| | | private InsOrderMapper insOrderMapper; |
| | | |
| | | private InsSampleMapper insSampleMapper; |
| | | |
| | | private WarehouseHistoryMapper warehouseHistoryMapper; |
| | | |
| | | @Override |
| | | public int selectOrderManDay(Integer orderId) { |
| | |
| | | @Override |
| | | public void checkUpdate(Integer orderId, Integer state) { |
| | | InsOrder insOrder = insOrderMapper.selectById(orderId); |
| | | //通过 |
| | | if (state == 1) { |
| | | List<String> list = new ArrayList<>(); |
| | | try { |
| | |
| | | if (insProducts.stream().map(InsProduct::getId).collect(Collectors.toList()).equals(ids)) { |
| | | //如果该检验单下的所有项目全部都撤销,那么这个单子也需要撤销 |
| | | insOrder.setState(3); |
| | | } |
| | | else { |
| | | //出入库记录全部删掉 |
| | | warehouseHistoryMapper.delete(Wrappers.<WarehouseHistory>lambdaQuery().in(WarehouseHistory::getInsSampleId, collect)); |
| | | //全部撤销,样品和项目不能删掉,不然检验下单的撤销没有数据 |
| | | } else { |
| | | List<InsProduct> products = insProductMapper.selectBatchIds(ids); |
| | | //首先根据选择的项目id进行撤销项目 |
| | | updateBatchById(products.stream().map(insProduct -> { |
| | | insProduct.setState(0); |
| | | return insProduct; |
| | | }).collect(Collectors.toList())); |
| | | //如果该检验单某个样品下的项目全部都撤销了,那么这个样品也需要删掉 |
| | | //如果该检验单某个样品下的项目全部都撤销了,那么这个样品的出入库记录也需要删掉 |
| | | List<Integer> sampleIds = products.stream().map(InsProduct::getInsSampleId).distinct().collect(Collectors.toList()); |
| | | //项目删掉 |
| | | insProductMapper.deleteBatchIds(ids); |
| | | for (Integer sampleId : sampleIds) { |
| | | Long count = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery() |
| | | .eq(InsProduct::getInsSampleId, sampleId) |
| | | .eq(InsProduct::getState, 1)); |
| | | if(count<=0){ |
| | | //出入库记录全部删掉 |
| | | warehouseHistoryMapper.delete(Wrappers.<WarehouseHistory>lambdaQuery().eq(WarehouseHistory::getInsSampleId, sampleId)); |
| | | //对应的样品删掉 |
| | | insSampleMapper.deleteById(sampleId); |
| | | } |
| | | } |
| | | } |
| | | //insProductMapper.updateInspected(id); |
| | | } |
| | | //不通过 |
| | | insOrder.setIsRevocation(0); |
| | | insOrder.setIsRevocation(state); |
| | | insOrderMapper.updateById(insOrder); |
| | | |
| | | } |
| | |
| | | if(tree.length < 4){ |
| | | throw new ErrorException("库位选择错误"); |
| | | } |
| | | List<InsOrder> insOrders = insOrderMapper.selectList(Wrappers.<InsOrder>lambdaQuery().eq(InsOrder::getEntrustCode, entrustCode)); |
| | | List<InsOrder> insOrders = insOrderMapper.selectList(Wrappers.<InsOrder>lambdaQuery() |
| | | .ne(InsOrder::getState,3)//排除撤销的订单 |
| | | .eq(InsOrder::getEntrustCode, entrustCode)); |
| | | if(insOrders.size()!=1){ |
| | | throw new ErrorException("订单编号输入有误"); |
| | | throw new ErrorException("订单编号输入有误,或者该订单编号已经撤销"); |
| | | } |
| | | List<InsSample> samples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery() |
| | | .eq(InsSample::getSampleCode, sampleCode) |
| | |
| | | |
| | | @Override |
| | | public int outWarehouse(String sampleCode, boolean a,String entrustCode) { |
| | | List<InsOrder> insOrders = insOrderMapper.selectList(Wrappers.<InsOrder>lambdaQuery().eq(InsOrder::getEntrustCode, entrustCode)); |
| | | List<InsOrder> insOrders = insOrderMapper.selectList(Wrappers.<InsOrder>lambdaQuery() |
| | | .ne(InsOrder::getState,3)//排除撤销的订单 |
| | | .eq(InsOrder::getEntrustCode, entrustCode)); |
| | | if(insOrders.size()!=1){ |
| | | throw new ErrorException("订单编号输入有误"); |
| | | throw new ErrorException("订单编号输入有误,或者该订单编号已经撤销"); |
| | | } |
| | | List<InsSample> samples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery() |
| | | .eq(InsSample::getSampleCode, sampleCode) |
| | |
| | | PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.yuanchu.mom.mapper.WarehouseMapper"> |
| | | |
| | | <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.Warehouse"> |
| | | <id property="id" column="id" jdbcType="INTEGER"/> |
| | | <result property="name" column="name" jdbcType="VARCHAR"/> |
| | |
| | | <result property="name" column="sName" jdbcType="VARCHAR"/> |
| | | <result property="row" column="row" jdbcType="INTEGER"/> |
| | | <result property="col" column="col" jdbcType="INTEGER"/> |
| | | <collection property="warehouseCellList" resultMap="cell"/> |
| | | </resultMap> |
| | | |
| | | <resultMap id="cell" type="com.yuanchu.mom.pojo.WarehouseCell"> |
| | | <id property="id" column="cId" jdbcType="INTEGER"/> |
| | | <result property="row" column="crow" jdbcType="INTEGER"/> |
| | | <result property="col" column="ccol" jdbcType="INTEGER"/> |
| | | </resultMap> |
| | | |
| | | <select id="selectWarehouseList" resultMap="Warehouse"> |
| | | select w.id,w.name,ws.id sId,ws.name sName,ws.row,ws.col,ws.warehouse_id from warehouse w |
| | | select w.id, |
| | | w.name, |
| | | ws.id sId, |
| | | ws.name sName, |
| | | ws.row, |
| | | ws.col, |
| | | wc.id cId, |
| | | wc.row crow, |
| | | wc.col ccol |
| | | from warehouse w |
| | | left join warehouse_shelf ws on w.id = ws.warehouse_id |
| | | left join warehouse_cell wc on shelf_id = ws.id |
| | | left join |
| | | (select cell_id, count(*) num from warehouse_history group by cell_id) a on cell_id = wc.id |
| | | where num is null |
| | | or num % 2 = 0 |
| | | order by id, sId, crow, ccol |
| | | </select> |
| | | </mapper> |