Selaa lähdekoodia

设备签收管理

haogh 1 vuosi sitten
vanhempi
commit
fa09ee7eb3

+ 11 - 1
sop-api/src/main/java/com/qmth/sop/server/api/DeviceDeliveryManageController.java

@@ -4,6 +4,8 @@ import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.sop.business.bean.params.DevicePlaceParam;
 import com.qmth.sop.business.bean.result.DevicePlaceResult;
 import com.qmth.sop.business.bean.result.DeviceSignResult;
+import com.qmth.sop.business.entity.SysUser;
+import com.qmth.sop.business.service.TBDeviceDeliveryService;
 import com.qmth.sop.common.annotation.OperationLog;
 import com.qmth.sop.common.contant.SystemConstant;
 import com.qmth.sop.common.enums.DeviceStatusEnum;
@@ -11,9 +13,11 @@ import com.qmth.sop.common.enums.LogTypeEnum;
 import com.qmth.sop.common.enums.TransferModeEnum;
 import com.qmth.sop.common.util.Result;
 import com.qmth.sop.common.util.ResultUtil;
+import com.qmth.sop.common.util.ServletUtil;
 import io.swagger.annotations.*;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import javax.validation.Valid;
 
 @Api(tags = "设备管理Controller")
@@ -21,12 +25,14 @@ import javax.validation.Valid;
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_DEVICE_MANAGE)
 public class DeviceDeliveryManageController {
 
+    @Resource
+    TBDeviceDeliveryService tbDeviceDeliveryService;
 
     @ApiOperation(value = "设备签收登记列表查询")
     @RequestMapping(value = "/sign/list", method = RequestMethod.POST)
     @ApiResponses({ @ApiResponse(code = 200, message = "返回信息", response = DeviceSignResult.class) })
     public Result signList(@ApiParam(value = "派单号") @RequestParam String crmNo) {
-        return ResultUtil.ok();
+        return ResultUtil.ok(tbDeviceDeliveryService.signList(crmNo));
     }
 
     @ApiOperation(value="设备签收")
@@ -34,6 +40,8 @@ public class DeviceDeliveryManageController {
     @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = Object.class)})
     @OperationLog(logType = LogTypeEnum.UPDATE)
     public Result sign(@ApiParam(value = "设备发货id", required = true) @RequestParam String id) {
+        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
+        tbDeviceDeliveryService.sign(id ,requestUser.getId());
         return ResultUtil.ok();
     }
 
@@ -42,6 +50,8 @@ public class DeviceDeliveryManageController {
     @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = Object.class)})
     @OperationLog(logType = LogTypeEnum.UPDATE)
     public Result unsigned(@ApiParam(value = "设备发货id", required = true) @RequestParam String id) {
+        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
+        tbDeviceDeliveryService.unsigned(id, requestUser.getId());
         return ResultUtil.ok();
     }
 

+ 5 - 5
sop-business/src/main/java/com/qmth/sop/business/bean/result/DeviceSignResult.java

@@ -15,7 +15,7 @@ public class DeviceSignResult implements Serializable {
     private Long id;
 
     @ApiModelProperty("派单号")
-    private String cmrNo;
+    private String crmNo;
 
     @ApiModelProperty("设备序列号")
     private String serialNo;
@@ -43,12 +43,12 @@ public class DeviceSignResult implements Serializable {
         this.id = id;
     }
 
-    public String getCmrNo() {
-        return cmrNo;
+    public String getCrmNo() {
+        return crmNo;
     }
 
-    public void setCmrNo(String cmrNo) {
-        this.cmrNo = cmrNo;
+    public void setCrmNo(String crmNo) {
+        this.crmNo = crmNo;
     }
 
     public String getSerialNo() {

+ 10 - 0
sop-business/src/main/java/com/qmth/sop/business/mapper/TBDeviceDeliveryMapper.java

@@ -2,6 +2,7 @@ package com.qmth.sop.business.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.qmth.sop.business.bean.result.DeviceSignResult;
 import com.qmth.sop.business.bean.result.TBDeviceDeliveryResult;
 import com.qmth.sop.business.entity.TBDeviceDelivery;
 import com.qmth.sop.common.enums.DeviceDeliveryStatusEnum;
@@ -82,4 +83,13 @@ public interface TBDeviceDeliveryMapper extends BaseMapper<TBDeviceDelivery> {
             @Param("receiveEndTime") Long receiveEndTime, @Param("consignee") String consignee, @Param("mailingAddress") String mailingAddress,
             @Param("deliveryType") InOutTypeEnum deliveryType, @Param("brand") String brand, @Param("model") String model,
             @Param("expressNo") String expressNo);
+
+    /**
+     * 设备签收列表
+     *
+     * @param crmNo     派单号
+     * @param statusList  设备状态
+     * @return 查询结果
+     */
+    List<DeviceSignResult> listDeviceSign(@Param("crmNo") String crmNo, @Param("statusList") List<DeviceDeliveryStatusEnum> statusList);
 }

+ 19 - 0
sop-business/src/main/java/com/qmth/sop/business/service/TBDeviceDeliveryService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.sop.business.bean.params.DeviceDeliveryParam;
 import com.qmth.sop.business.bean.params.DeviceInOutForm;
+import com.qmth.sop.business.bean.result.DeviceSignResult;
 import com.qmth.sop.business.bean.result.FlowTaskResult;
 import com.qmth.sop.business.bean.result.TBDeviceDeliveryResult;
 import com.qmth.sop.business.entity.SysUser;
@@ -190,4 +191,22 @@ public interface TBDeviceDeliveryService extends IService<TBDeviceDelivery> {
      * @return 设备返还表单
      */
     List<DeviceInOutForm> findDeviceReturnList(List<Long> deviceDeliveryIdList);
+
+    /**
+     * @param crmNo 派单号
+     * @return 设备签收登记列表
+     */
+    List<DeviceSignResult> signList(String crmNo);
+
+    /**
+     * @param  id 设备出库ID
+     * @param userId 操作用户ID
+     */
+    void sign(String id, Long userId);
+
+    /**
+     * @param  id 设备出库ID
+     * @param userId 操作用户ID
+     */
+    void unsigned(String id, Long userId);
 }

+ 69 - 0
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBDeviceDeliveryServiceImpl.java

@@ -13,6 +13,7 @@ import com.qmth.sop.business.bean.dto.DeviceInfoDto;
 import com.qmth.sop.business.bean.params.DeviceDeliveryParam;
 import com.qmth.sop.business.bean.params.DeviceInOutForm;
 import com.qmth.sop.business.bean.params.DeviceInOutSubmitParam;
+import com.qmth.sop.business.bean.result.DeviceSignResult;
 import com.qmth.sop.business.bean.result.FlowFormWidgetResult;
 import com.qmth.sop.business.bean.result.FlowTaskResult;
 import com.qmth.sop.business.bean.result.TBDeviceDeliveryResult;
@@ -26,6 +27,7 @@ import com.qmth.sop.common.util.FileUtil;
 import com.qmth.sop.common.util.GsonUtil;
 import com.qmth.sop.common.util.ServletUtil;
 import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.time.DateFormatUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -728,6 +730,73 @@ public class TBDeviceDeliveryServiceImpl extends ServiceImpl<TBDeviceDeliveryMap
         return deviceInOutFormList;
     }
 
+    @Override
+    public List<DeviceSignResult> signList(String crmNo) {
+        return baseMapper.listDeviceSign(crmNo,
+                Arrays.asList(DeviceDeliveryStatusEnum.DELIVER, DeviceDeliveryStatusEnum.USING));
+    }
+
+    @Override
+    public void sign(String id, Long userId) {
+        TBDeviceDelivery deviceDelivery = getById(id);
+        if (Objects.isNull(deviceDelivery)) {
+            throw ExceptionResultEnum.ERROR.exception(String.format("设备发货记录不存在,ID:[%s]", id));
+        }
+        if (deviceDelivery.getStatus() != null && !deviceDelivery.getStatus()
+                .equals(DeviceDeliveryStatusEnum.DELIVER)) {
+            throw ExceptionResultEnum.ERROR.exception("只能对未签收的设备做签收操作");
+        }
+        long now = System.currentTimeMillis();
+        if (deviceDelivery.getSourceId() != null) {
+            TBDeviceDelivery sourceDeviceDelivery = getById(deviceDelivery.getSourceId());
+            if (Objects.isNull(sourceDeviceDelivery)) {
+                throw ExceptionResultEnum.ERROR.exception(
+                        String.format("找不到中转设备的发货来源, 发货ID:[%s]", deviceDelivery.getSourceId()));
+            }
+            //中转设备的源记录的状态,修改为:中转已签收
+            this.update(new UpdateWrapper<TBDeviceDelivery>().lambda()
+                    .eq(TBDeviceDelivery::getId, deviceDelivery.getSourceId())
+                    .set(TBDeviceDelivery::getStatus, DeviceDeliveryStatusEnum.TRANSFER_SIGN)
+                    .set(TBDeviceDelivery::getReceiveUserId, userId).set(TBDeviceDelivery::getReceiveTime, now)
+                    .set(TBDeviceDelivery::getEffect, Boolean.FALSE).set(TBDeviceDelivery::getUpdateId, userId)
+                    .set(TBDeviceDelivery::getUpdateTime, now));
+        }
+        //更新设备状态为使用中
+        this.update(new UpdateWrapper<TBDeviceDelivery>().lambda().eq(TBDeviceDelivery::getId, id)
+                .set(TBDeviceDelivery::getStatus, DeviceDeliveryStatusEnum.USING)
+                .set(TBDeviceDelivery::getReceiveUserId, userId).set(TBDeviceDelivery::getReceiveTime, now)
+                .set(TBDeviceDelivery::getUpdateId, userId).set(TBDeviceDelivery::getUpdateTime, now));
+    }
+
+    @Override
+    public void unsigned(String id, Long userId) {
+        TBDeviceDelivery deviceDelivery = getById(id);
+        if (Objects.isNull(deviceDelivery)) {
+            throw ExceptionResultEnum.ERROR.exception(String.format("设备发货记录不存在,ID:[%s]", id));
+        }
+        if (deviceDelivery.getStatus() != null && !deviceDelivery.getStatus().equals(DeviceDeliveryStatusEnum.USING)) {
+            throw ExceptionResultEnum.ERROR.exception("只能对使用中的设备做未签收操作");
+        }
+        long now = System.currentTimeMillis();
+        if (deviceDelivery.getSourceId() != null) {
+            TBDeviceDelivery sourceDeviceDelivery = getById(deviceDelivery.getSourceId());
+            if (Objects.isNull(sourceDeviceDelivery)) {
+                throw ExceptionResultEnum.ERROR.exception(
+                        String.format("找不到中转设备的发货来源, 发货ID:[%s]", deviceDelivery.getSourceId()));
+            }
+            this.update(new UpdateWrapper<TBDeviceDelivery>().lambda()
+                    .eq(TBDeviceDelivery::getId, deviceDelivery.getSourceId())
+                    .set(TBDeviceDelivery::getStatus, DeviceDeliveryStatusEnum.TRANSFER)
+                    .set(TBDeviceDelivery::getEffect, Boolean.TRUE).set(TBDeviceDelivery::getUpdateId, userId)
+                    .set(TBDeviceDelivery::getUpdateTime, now));
+        }
+
+        this.update(new UpdateWrapper<TBDeviceDelivery>().lambda().eq(TBDeviceDelivery::getId, id)
+                .set(TBDeviceDelivery::getStatus, DeviceDeliveryStatusEnum.DELIVER)
+                .set(TBDeviceDelivery::getReceiveUserId, null).set(TBDeviceDelivery::getReceiveTime, null)
+                .set(TBDeviceDelivery::getUpdateId, userId).set(TBDeviceDelivery::getUpdateTime, now));
+    }
+
     /**
      * 补充结果信息
      *

+ 26 - 0
sop-business/src/main/resources/mapper/TBDeviceDeliveryMapper.xml

@@ -189,4 +189,30 @@
         </where>
         ORDER BY tbdd.update_time DESC
     </select>
+
+    <select id="listDeviceSign" resultType="com.qmth.sop.business.bean.result.DeviceSignResult">
+        SELECT
+            d.id,
+            d.crm_no crmNo,
+            d.serial_no serialNo,
+            se.model,
+            se.status deviceStatus,
+            sp.NAME supplierName,
+            d.express_no expressNo,
+            d.STATUS
+        FROM
+            t_b_device_delivery d,
+            sys_device se,
+            sys_supplier sp
+        WHERE
+            d.serial_no = se.serial_no
+          AND d.supplier_id = sp.id
+          AND d.crm_no = #{crmNo}
+          AND d.status in
+        <foreach collection="statusList" item="status" open="(" separator="," close=")">
+            #{status}
+        </foreach>
+        ORDER BY
+            d.create_time DESC
+    </select>
 </mapper>