feat:交接

master
wanghao 2 months ago
parent 309e2ed1fc
commit f2060df134

@ -7,7 +7,7 @@ ruoyi:
# 版权年份
copyrightYear: 2026
# 实例演示开关
demoEnabled: true
demoEnabled: false
# 文件路径 示例( Windows配置D:/ruoyi/uploadPathLinux配置 /home/ruoyi/uploadPath
profile: F:/ruoyi/uploadPath
# 获取ip地址开关

@ -0,0 +1,137 @@
package com.ruoyi.manager.controller;
import java.util.List;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.manager.domain.BaseAirCode;
import com.ruoyi.manager.service.IBaseAirCodeService;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* Controller
*
* @author ruoyi
* @date 2026-05-08
*/
@Controller
@RequestMapping("/manager/air_code")
public class BaseAirCodeController extends BaseController
{
private String prefix = "manager/air_code";
@Autowired
private IBaseAirCodeService baseAirCodeService;
@RequiresPermissions("manager:air_code:view")
@GetMapping()
public String air_code()
{
return prefix + "/air_code";
}
/**
*
*/
@RequiresPermissions("manager:air_code:list")
@PostMapping("/list")
@ResponseBody
public TableDataInfo list(BaseAirCode baseAirCode)
{
startPage();
List<BaseAirCode> list = baseAirCodeService.selectBaseAirCodeList(baseAirCode);
return getDataTable(list);
}
/**
*
*/
@RequiresPermissions("manager:air_code:export")
@Log(title = "航司代码", businessType = BusinessType.EXPORT)
@PostMapping("/export")
@ResponseBody
public AjaxResult export(BaseAirCode baseAirCode)
{
List<BaseAirCode> list = baseAirCodeService.selectBaseAirCodeList(baseAirCode);
ExcelUtil<BaseAirCode> util = new ExcelUtil<BaseAirCode>(BaseAirCode.class);
return util.exportExcel(list, "航司代码数据");
}
/**
*
*/
@RequiresPermissions("manager:air_code:add")
@GetMapping("/add")
public String add()
{
return prefix + "/add";
}
/**
*
*/
@RequiresPermissions("manager:air_code:add")
@Log(title = "航司代码", businessType = BusinessType.INSERT)
@PostMapping("/add")
@ResponseBody
public AjaxResult addSave(BaseAirCode baseAirCode)
{
return toAjax(baseAirCodeService.insertBaseAirCode(baseAirCode));
}
/**
*
*/
@RequiresPermissions("manager:air_code:edit")
@GetMapping("/edit/{objid}")
public String edit(@PathVariable("objid") Long objid, ModelMap mmap)
{
BaseAirCode baseAirCode = baseAirCodeService.selectBaseAirCodeByObjid(objid);
mmap.put("baseAirCode", baseAirCode);
return prefix + "/edit";
}
/**
*
*/
@RequiresPermissions("manager:air_code:edit")
@Log(title = "航司代码", businessType = BusinessType.UPDATE)
@PostMapping("/edit")
@ResponseBody
public AjaxResult editSave(BaseAirCode baseAirCode)
{
return toAjax(baseAirCodeService.updateBaseAirCode(baseAirCode));
}
/**
*
*/
@RequiresPermissions("manager:air_code:remove")
@Log(title = "航司代码", businessType = BusinessType.DELETE)
@PostMapping( "/remove")
@ResponseBody
public AjaxResult remove(String ids)
{
return toAjax(baseAirCodeService.deleteBaseAirCodeByObjids(ids));
}
/**
*
*/
@PostMapping("/updateSort")
@ResponseBody
public AjaxResult updateSort(@RequestParam String[] ids, @RequestParam String[] changedOrderNums)
{
baseAirCodeService.updateSort(ids, changedOrderNums);
return success();
}
}

@ -0,0 +1,84 @@
package com.ruoyi.manager.domain;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* base_air_code
*
* @author ruoyi
* @date 2026-05-08
*/
public class BaseAirCode extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键 */
private Long objid;
/** 航司名称 */
@Excel(name = "航司名称")
private String airName;
/** 代码 */
@Excel(name = "代码")
private String airCode;
/** 排序 */
@Excel(name = "排序")
private Long orderNum;
public void setObjid(Long objid)
{
this.objid = objid;
}
public Long getObjid()
{
return objid;
}
public void setAirName(String airName)
{
this.airName = airName;
}
public String getAirName()
{
return airName;
}
public void setAirCode(String airCode)
{
this.airCode = airCode;
}
public String getAirCode()
{
return airCode;
}
public void setOrderNum(Long orderNum)
{
this.orderNum = orderNum;
}
public Long getOrderNum()
{
return orderNum;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("objid", getObjid())
.append("airName", getAirName())
.append("airCode", getAirCode())
.append("orderNum", getOrderNum())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.toString();
}
}

@ -21,12 +21,32 @@ public class RecordDeliveryTask extends BaseEntity
/** 交接码 */
@Excel(name = "交接码")
private String taskCode;
private String airCode;
/** 交接状态 */
@Excel(name = "交接状态")
private String taskState;
private String gpsLocation;
public void setDeliveryTaskId(Long deliveryTaskId)
public String getGpsLocation() {
return gpsLocation;
}
public void setGpsLocation(String gpsLocation) {
this.gpsLocation = gpsLocation;
}
public String getAirCode() {
return airCode;
}
public void setAirCode(String airCode) {
this.airCode = airCode;
}
public void setDeliveryTaskId(Long deliveryTaskId)
{
this.deliveryTaskId = deliveryTaskId;
}

@ -28,9 +28,20 @@ public class RecordDeliveryTaskBaseket extends BaseEntity
/** 资产ID */
@Excel(name = "资产ID")
private Long basketId;
private String waybillNumber;
private BaseBasketInfo baseBasketInfo;
public String getWaybillNumber() {
return waybillNumber;
}
public void setWaybillNumber(String waybillNumber) {
this.waybillNumber = waybillNumber;
}
public String getTaskCode() {
return taskCode;
}

@ -0,0 +1,64 @@
package com.ruoyi.manager.mapper;
import java.util.List;
import com.ruoyi.manager.domain.BaseAirCode;
/**
* Mapper
*
* @author ruoyi
* @date 2026-05-08
*/
public interface BaseAirCodeMapper
{
/**
*
*
* @param objid
* @return
*/
public BaseAirCode selectBaseAirCodeByObjid(Long objid);
/**
*
*
* @param baseAirCode
* @return
*/
public List<BaseAirCode> selectBaseAirCodeList(BaseAirCode baseAirCode);
/**
*
*
* @param baseAirCode
* @return
*/
public int insertBaseAirCode(BaseAirCode baseAirCode);
/**
*
*
* @param baseAirCode
* @return
*/
public int updateBaseAirCode(BaseAirCode baseAirCode);
/**
*
*
* @param objid
* @return
*/
public int deleteBaseAirCodeByObjid(Long objid);
/**
*
*
* @param objids
* @return
*/
public int deleteBaseAirCodeByObjids(String[] objids);
List<String> queryAirCode();
}

@ -72,4 +72,6 @@ public interface LedgerInstantBindingMapper
int updateTaskStatebyBasketID(@Param("ids") List<Long> ids);
List<LedgerInstantBinding> selectLedgerlistByCode(@Param("code") String code);
LedgerInstantBinding deliverySanEpcQueryBasketbyBasketId(Long objId);
}

@ -1,6 +1,8 @@
package com.ruoyi.manager.mapper;
import java.util.List;
import com.ruoyi.manager.domain.LedgerInstantBinding;
import com.ruoyi.manager.domain.RecordDeliveryTaskBaseket;
import org.apache.ibatis.annotations.Param;
@ -34,7 +36,7 @@ public interface RecordDeliveryTaskBaseketMapper
* @param recordDeliveryTaskBaseket
* @return
*/
public int insertRecordDeliveryTaskBaseket(@Param("taskCode") String taskCode,@Param("ids") List<Long> ids);
public int insertRecordDeliveryTaskBaseket(@Param("taskCode") String taskCode,@Param("ids") List<LedgerInstantBinding> ids);
/**
*
@ -60,5 +62,5 @@ public interface RecordDeliveryTaskBaseketMapper
*/
public int deleteRecordDeliveryTaskBaseketByObjids(String[] objids);
RecordDeliveryTaskBaseket selectRecordDeliveryTaskBaseketByBasket(Long basketId);
RecordDeliveryTaskBaseket selectRecordDeliveryTaskBaseketByBasket(RecordDeliveryTaskBaseket recordDeliveryTaskBaseket);
}

@ -62,5 +62,5 @@ public interface RecordDeliveryTaskMapper
int countNowDateTaskNumber();
int closeTaskByReceipt(@Param("taskCode") String taskCode, @Param("user") String user);
int closeTaskByReceipt(@Param("taskCode") String taskCode, @Param("user") String user, @Param("receiveGpsLocation") String receiveGpsLocation);
}

@ -0,0 +1,65 @@
package com.ruoyi.manager.service;
import java.util.List;
import com.ruoyi.manager.domain.BaseAirCode;
/**
* Service
*
* @author ruoyi
* @date 2026-05-08
*/
public interface IBaseAirCodeService
{
/**
*
*
* @param objid
* @return
*/
public BaseAirCode selectBaseAirCodeByObjid(Long objid);
/**
*
*
* @param baseAirCode
* @return
*/
public List<BaseAirCode> selectBaseAirCodeList(BaseAirCode baseAirCode);
/**
*
*
* @param baseAirCode
* @return
*/
public int insertBaseAirCode(BaseAirCode baseAirCode);
/**
*
*
* @param baseAirCode
* @return
*/
public int updateBaseAirCode(BaseAirCode baseAirCode);
/**
*
*
* @param objids
* @return
*/
public int deleteBaseAirCodeByObjids(String objids);
/**
*
*
* @param objid
* @return
*/
public int deleteBaseAirCodeByObjid(Long objid);
void updateSort(String[] ids, String[] changedOrderNums);
List<String> queryAirCode();
}

@ -71,4 +71,6 @@ public interface ILedgerInstantBindingService
int updateTaskStatebyBasketID(List<Long> ids);
List<LedgerInstantBinding> selectLedgerlistByCode(String code);
LedgerInstantBinding deliverySanEpcQueryBasketbyBasketId(Long objId);
}

@ -1,6 +1,8 @@
package com.ruoyi.manager.service;
import java.util.List;
import com.ruoyi.manager.domain.LedgerInstantBinding;
import com.ruoyi.manager.domain.RecordDeliveryTaskBaseket;
/**
@ -59,7 +61,7 @@ public interface IRecordDeliveryTaskBaseketService
*/
public int deleteRecordDeliveryTaskBaseketByObjid(Long objid);
public int insertRecordDeliveryTaskBaseket(String taskCode, List<Long> ids);
public int insertRecordDeliveryTaskBaseket(String taskCode, List<LedgerInstantBinding> ids);
RecordDeliveryTaskBaseket selectRecordDeliveryTaskBaseketByBasket(Long basketId);
RecordDeliveryTaskBaseket selectRecordDeliveryTaskBaseketByBasket( RecordDeliveryTaskBaseket recordDeliveryTaskBaseket);
}

@ -61,5 +61,5 @@ public interface IRecordDeliveryTaskService
int countNowDateTaskNumber();
int closeTaskByReceipt(String taskCode, String user);
int closeTaskByReceipt(String taskCode, String user, String receiveGpsLocation);
}

@ -0,0 +1,115 @@
package com.ruoyi.manager.service.impl;
import com.ruoyi.common.core.domain.entity.SysMenu;
import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.ShiroUtils;
import com.ruoyi.manager.domain.BaseAirCode;
import com.ruoyi.manager.mapper.BaseAirCodeMapper;
import com.ruoyi.manager.service.IBaseAirCodeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* Service
*
* @author ruoyi
* @date 2026-05-08
*/
@Service
public class BaseAirCodeServiceImpl implements IBaseAirCodeService {
@Autowired
private BaseAirCodeMapper baseAirCodeMapper;
/**
*
*
* @param objid
* @return
*/
@Override
public BaseAirCode selectBaseAirCodeByObjid(Long objid) {
return baseAirCodeMapper.selectBaseAirCodeByObjid(objid);
}
/**
*
*
* @param baseAirCode
* @return
*/
@Override
public List<BaseAirCode> selectBaseAirCodeList(BaseAirCode baseAirCode) {
return baseAirCodeMapper.selectBaseAirCodeList(baseAirCode);
}
/**
*
*
* @param baseAirCode
* @return
*/
@Override
public int insertBaseAirCode(BaseAirCode baseAirCode) {
baseAirCode.setUpdateTime(DateUtils.getNowDate());
baseAirCode.setUpdateBy(ShiroUtils.getLoginName());
return baseAirCodeMapper.insertBaseAirCode(baseAirCode);
}
/**
*
*
* @param baseAirCode
* @return
*/
@Override
public int updateBaseAirCode(BaseAirCode baseAirCode) {
baseAirCode.setUpdateTime(DateUtils.getNowDate());
baseAirCode.setUpdateBy(ShiroUtils.getLoginName());
return baseAirCodeMapper.updateBaseAirCode(baseAirCode);
}
/**
*
*
* @param objids
* @return
*/
@Override
public int deleteBaseAirCodeByObjids(String objids) {
return baseAirCodeMapper.deleteBaseAirCodeByObjids(Convert.toStrArray(objids));
}
/**
*
*
* @param objid
* @return
*/
@Override
public int deleteBaseAirCodeByObjid(Long objid) {
return baseAirCodeMapper.deleteBaseAirCodeByObjid(objid);
}
@Override
public void updateSort(String[] ids, String[] changedOrderNums) {
try {
for (int i = 0; i < changedOrderNums.length; i++) {
BaseAirCode baseAirCode = new BaseAirCode();
baseAirCode.setObjid(Convert.toLong(ids[i]));
baseAirCode.setOrderNum(Long.valueOf(changedOrderNums[i]));
baseAirCodeMapper.updateBaseAirCode(baseAirCode);
}
} catch (Exception e) {
throw new ServiceException("保存排序异常,请联系管理员");
}
}
@Override
public List<String> queryAirCode() {
return baseAirCodeMapper.queryAirCode();
}
}

@ -125,4 +125,9 @@ public class LedgerInstantBindingServiceImpl implements ILedgerInstantBindingSer
public List<LedgerInstantBinding> selectLedgerlistByCode(String code) {
return ledgerInstantBindingMapper.selectLedgerlistByCode(code);
}
@Override
public LedgerInstantBinding deliverySanEpcQueryBasketbyBasketId(Long objId) {
return ledgerInstantBindingMapper.deliverySanEpcQueryBasketbyBasketId(objId);
}
}

@ -1,52 +1,51 @@
package com.ruoyi.manager.service.impl;
import java.util.List;
import com.ruoyi.common.core.text.Convert;
import com.ruoyi.manager.domain.LedgerInstantBinding;
import com.ruoyi.manager.domain.RecordDeliveryTaskBaseket;
import com.ruoyi.manager.mapper.RecordDeliveryTaskBaseketMapper;
import com.ruoyi.manager.service.IRecordDeliveryTaskBaseketService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.manager.mapper.RecordDeliveryTaskBaseketMapper;
import com.ruoyi.manager.domain.RecordDeliveryTaskBaseket;
import com.ruoyi.manager.service.IRecordDeliveryTaskBaseketService;
import com.ruoyi.common.core.text.Convert;
import java.util.List;
/**
* Service
*
*
* @author ruoyi
* @date 2026-03-04
*/
@Service
public class RecordDeliveryTaskBaseketServiceImpl implements IRecordDeliveryTaskBaseketService
{
public class RecordDeliveryTaskBaseketServiceImpl implements IRecordDeliveryTaskBaseketService {
@Autowired
private RecordDeliveryTaskBaseketMapper recordDeliveryTaskBaseketMapper;
/**
*
*
*
* @param objid
* @return
*/
@Override
public RecordDeliveryTaskBaseket selectRecordDeliveryTaskBaseketByObjid(Long objid)
{
public RecordDeliveryTaskBaseket selectRecordDeliveryTaskBaseketByObjid(Long objid) {
return recordDeliveryTaskBaseketMapper.selectRecordDeliveryTaskBaseketByObjid(objid);
}
/**
*
*
*
* @param recordDeliveryTaskBaseket
* @return
*/
@Override
public List<RecordDeliveryTaskBaseket> selectRecordDeliveryTaskBaseketList(RecordDeliveryTaskBaseket recordDeliveryTaskBaseket)
{
public List<RecordDeliveryTaskBaseket> selectRecordDeliveryTaskBaseketList(RecordDeliveryTaskBaseket recordDeliveryTaskBaseket) {
return recordDeliveryTaskBaseketMapper.selectRecordDeliveryTaskBaseketList(recordDeliveryTaskBaseket);
}
/**
*
*
*
* @param recordDeliveryTaskBaseket
* @return
*/
@ -58,47 +57,44 @@ public class RecordDeliveryTaskBaseketServiceImpl implements IRecordDeliveryTask
/**
*
*
*
* @param recordDeliveryTaskBaseket
* @return
*/
@Override
public int updateRecordDeliveryTaskBaseket(RecordDeliveryTaskBaseket recordDeliveryTaskBaseket)
{
public int updateRecordDeliveryTaskBaseket(RecordDeliveryTaskBaseket recordDeliveryTaskBaseket) {
return recordDeliveryTaskBaseketMapper.updateRecordDeliveryTaskBaseket(recordDeliveryTaskBaseket);
}
/**
*
*
*
* @param objids
* @return
*/
@Override
public int deleteRecordDeliveryTaskBaseketByObjids(String objids)
{
public int deleteRecordDeliveryTaskBaseketByObjids(String objids) {
return recordDeliveryTaskBaseketMapper.deleteRecordDeliveryTaskBaseketByObjids(Convert.toStrArray(objids));
}
/**
*
*
*
* @param objid
* @return
*/
@Override
public int deleteRecordDeliveryTaskBaseketByObjid(Long objid)
{
public int deleteRecordDeliveryTaskBaseketByObjid(Long objid) {
return recordDeliveryTaskBaseketMapper.deleteRecordDeliveryTaskBaseketByObjid(objid);
}
@Override
public int insertRecordDeliveryTaskBaseket(String taskCode, List<Long> ids) {
public int insertRecordDeliveryTaskBaseket(String taskCode, List<LedgerInstantBinding> ids) {
return recordDeliveryTaskBaseketMapper.insertRecordDeliveryTaskBaseket(taskCode, ids);
}
@Override
public RecordDeliveryTaskBaseket selectRecordDeliveryTaskBaseketByBasket(Long basketId) {
return recordDeliveryTaskBaseketMapper.selectRecordDeliveryTaskBaseketByBasket(basketId);
public RecordDeliveryTaskBaseket selectRecordDeliveryTaskBaseketByBasket( RecordDeliveryTaskBaseket recordDeliveryTaskBaseket) {
return recordDeliveryTaskBaseketMapper.selectRecordDeliveryTaskBaseketByBasket(recordDeliveryTaskBaseket);
}
}

@ -101,7 +101,7 @@ public class RecordDeliveryTaskServiceImpl implements IRecordDeliveryTaskService
}
@Override
public int closeTaskByReceipt(String taskCode, String user) {
return recordDeliveryTaskMapper.closeTaskByReceipt(taskCode,user);
public int closeTaskByReceipt(String taskCode, String user,String receiveGpsLocation) {
return recordDeliveryTaskMapper.closeTaskByReceipt(taskCode,user,receiveGpsLocation);
}
}

@ -132,4 +132,17 @@
join ledger_instant_binding t2 on t1.basket_id = t2.basket_id
where t2.waybill_number = #{code}
</select>
<select id="deliverySanEpcQueryBasketbyBasketId" parameterType="Long" resultMap="LedgerInstantBindingResult">
select rcb.basket_id,
bbi.self_code,
group_concat(rcb.waybill_number order by rcb.objid) as waybill_number
from ledger_instant_binding rcb
left join base_basket_info bbi on rcb.basket_id = bbi.obj_id
where rcb.basket_id = #{objId}
and rcb.task_state = 0
group by rcb.basket_id, bbi.self_code
</select>
</mapper>

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.manager.mapper.BaseAirCodeMapper">
<resultMap type="BaseAirCode" id="BaseAirCodeResult">
<result property="objid" column="objid" />
<result property="airName" column="air_name" />
<result property="airCode" column="air_code" />
<result property="orderNum" column="order_num" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>
<sql id="selectBaseAirCodeVo">
select objid, air_name, air_code, order_num, update_by, update_time from base_air_code
</sql>
<select id="queryAirCode" resultType="string">
select air_code from base_air_code
</select>
<select id="selectBaseAirCodeList" parameterType="BaseAirCode" resultMap="BaseAirCodeResult">
<include refid="selectBaseAirCodeVo"/>
<where>
<if test="airName != null and airName != ''"> and air_name like concat('%', #{airName}, '%')</if>
<if test="airCode != null and airCode != ''"> and air_code = #{airCode}</if>
</where>
</select>
<select id="selectBaseAirCodeByObjid" parameterType="Long" resultMap="BaseAirCodeResult">
<include refid="selectBaseAirCodeVo"/>
where objid = #{objid}
</select>
<insert id="insertBaseAirCode" parameterType="BaseAirCode" useGeneratedKeys="true" keyProperty="objid">
insert into base_air_code
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="airName != null">air_name,</if>
<if test="airCode != null">air_code,</if>
<if test="orderNum != null">order_num,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="airName != null">#{airName},</if>
<if test="airCode != null">#{airCode},</if>
<if test="orderNum != null">#{orderNum},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
</trim>
</insert>
<update id="updateBaseAirCode" parameterType="BaseAirCode">
update base_air_code
<trim prefix="SET" suffixOverrides=",">
<if test="airName != null">air_name = #{airName},</if>
<if test="airCode != null">air_code = #{airCode},</if>
<if test="orderNum != null">order_num = #{orderNum},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
</trim>
where objid = #{objid}
</update>
<delete id="deleteBaseAirCodeByObjid" parameterType="Long">
delete from base_air_code where objid = #{objid}
</delete>
<delete id="deleteBaseAirCodeByObjids" parameterType="String">
delete from base_air_code where objid in
<foreach item="objid" collection="array" open="(" separator="," close=")">
#{objid}
</foreach>
</delete>
</mapper>

@ -9,12 +9,20 @@
<result property="createTime" column="create_time"/>
<result property="basketId" column="basket_id"/>
<result property="taskCode" column="task_code"/>
<result property="waybillNumber" column="waybill_number"/>
<association property="baseBasketInfo" javaType="com.ruoyi.manager.domain.BaseBasketInfo"
resultMap="com.ruoyi.manager.mapper.BaseBasketInfoMapper.BaseBasketInfoResult"/>
</resultMap>
<sql id="selectRecordDeliveryTaskBaseketVo">
select objid, create_time, basket_id, basket_type, steel_grade, self_code, task_code
select objid,
create_time,
basket_id,
basket_type,
steel_grade,
self_code,
task_code,
waybill_number
from record_delivery_task_baseket rb
left join base_basket_info bbi on bbi.obj_id = rb.basket_id
</sql>
@ -36,9 +44,9 @@
</select>
<insert id="insertRecordDeliveryTaskBaseket">
insert into record_delivery_task_baseket(basket_id,task_code) values
insert into record_delivery_task_baseket(basket_id,waybill_number,task_code) values
<foreach collection="ids" item="item" separator=",">
(#{item},#{taskCode})
(#{item.basketId},#{item.waybillNumber},#{taskCode})
</foreach>
</insert>
@ -65,12 +73,16 @@
</foreach>
</delete>
<select id="selectRecordDeliveryTaskBaseketByBasket" resultMap="RecordDeliveryTaskBaseketResult">
<select id="selectRecordDeliveryTaskBaseketByBasket" resultMap="RecordDeliveryTaskBaseketResult" parameterType="RecordDeliveryTaskBaseket">
select rdtb.task_code
from record_delivery_task_baseket rdtb
left join record_delivery_task rdt on rdt.task_code = rdtb.task_code
where task_state = 0
and basket_id = #{basketId}
left join record_delivery_task rdt on rdt.task_code = rdtb.task_code
<where>
task_state = 0
<if test="basketId != null ">and basket_id = #{basketId}</if>
<if test="waybillNumber != null ">and waybill_number like concat('%', #{waybillNumber}, '%')</if>
</where>
order by rdt.create_time desc limit 1
</select>

@ -4,7 +4,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.manager.mapper.RecordDeliveryTaskMapper">
<resultMap type="RecordDeliveryTask" id="RecordDeliveryTaskResult">
<resultMap type="com.ruoyi.manager.domain.RecordDeliveryTask" id="RecordDeliveryTaskResult">
<result property="deliveryTaskId" column="delivery_task_id" />
<result property="taskCode" column="task_code" />
<result property="taskState" column="task_state" />
@ -12,10 +12,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="gpsLocation" column="gps_location" />
<result property="airCode" column="air_code" />
</resultMap>
<sql id="selectRecordDeliveryTaskVo">
select delivery_task_id, task_code, task_state, create_by, create_time, update_by, update_time from record_delivery_task
select delivery_task_id, task_code, task_state, create_by, create_time, update_by, update_time, gps_location, air_code from record_delivery_task
</sql>
<select id="selectRecordDeliveryTaskList" parameterType="RecordDeliveryTask" resultMap="RecordDeliveryTaskResult">
@ -36,6 +38,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="taskCode != null">task_code,</if>
<if test="taskState != null">task_state,</if>
<if test="airCode != null">air_code,</if>
<if test="gpsLocation != null">gps_location,</if>
<if test="createBy != null">create_by,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
@ -43,6 +47,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="taskCode != null">#{taskCode},</if>
<if test="taskState != null">#{taskState},</if>
<if test="airCode != null">#{airCode},</if>
<if test="gpsLocation != null">#{gpsLocation},</if>
<if test="createBy != null">#{createBy},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
@ -82,7 +88,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
UPDATE record_delivery_task
SET task_state = '1',
update_by = #{user},
update_time = now()
update_time = now(),
receive_gps_location = #{receiveGpsLocation}
WHERE task_code = #{taskCode}
</update>

@ -0,0 +1,22 @@
-- 菜单 SQL
insert into sys_menu (menu_name, parent_id, order_num, url, menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark)
values('航司代码', '2000', '1', '/manager/air_code', 'C', '0', 'manager:air_code:view', '#', 'admin', sysdate(), '', null, '航司代码菜单');
-- 按钮父菜单ID
SELECT @parentId := LAST_INSERT_ID();
-- 按钮 SQL
insert into sys_menu (menu_name, parent_id, order_num, url, menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark)
values('航司代码查询', @parentId, '1', '#', 'F', '0', 'manager:air_code:list', '#', 'admin', sysdate(), '', null, '');
insert into sys_menu (menu_name, parent_id, order_num, url, menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark)
values('航司代码新增', @parentId, '2', '#', 'F', '0', 'manager:air_code:add', '#', 'admin', sysdate(), '', null, '');
insert into sys_menu (menu_name, parent_id, order_num, url, menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark)
values('航司代码修改', @parentId, '3', '#', 'F', '0', 'manager:air_code:edit', '#', 'admin', sysdate(), '', null, '');
insert into sys_menu (menu_name, parent_id, order_num, url, menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark)
values('航司代码删除', @parentId, '4', '#', 'F', '0', 'manager:air_code:remove', '#', 'admin', sysdate(), '', null, '');
insert into sys_menu (menu_name, parent_id, order_num, url, menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark)
values('航司代码导出', @parentId, '5', '#', 'F', '0', 'manager:air_code:export', '#', 'admin', sysdate(), '', null, '');

@ -0,0 +1,49 @@
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<head>
<th:block th:include="include :: header('新增航司代码')" />
</head>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form class="form-horizontal m" id="form-air_code-add">
<div class="col-xs-6">
<div class="form-group">
<label class="col-sm-4 control-label">航司名称:</label>
<div class="col-sm-8">
<input name="airName" class="form-control" type="text">
</div>
</div>
</div>
<div class="col-xs-6">
<div class="form-group">
<label class="col-sm-4 control-label">代码:</label>
<div class="col-sm-8">
<input name="airCode" class="form-control" type="text">
</div>
</div>
</div>
<div class="col-xs-6">
<div class="form-group">
<label class="col-sm-4 control-label">排序:</label>
<div class="col-sm-8">
<input name="orderNum" class="form-control" type="text">
</div>
</div>
</div>
</form>
</div>
<th:block th:include="include :: footer" />
<script th:inline="javascript">
var prefix = ctx + "manager/air_code"
$("#form-air_code-add").validate({
focusCleanup: true
});
function submitHandler() {
if ($.validate.form()) {
$.operate.save(prefix + "/add", $('#form-air_code-add').serialize());
}
}
</script>
</body>
</html>

@ -0,0 +1,144 @@
<!DOCTYPE html>
<html lang="zh" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro" xmlns:th="http://www.thymeleaf.org">
<head>
<th:block th:include="include :: header('航司代码列表')"/>
</head>
<body class="gray-bg">
<div class="container-div">
<div class="row">
<div class="col-sm-12 search-collapse">
<form id="formId">
<div class="select-list">
<ul>
<li>
<label>航司名称:</label>
<input name="airName" type="text"/>
</li>
<li>
<label>代码:</label>
<input name="airCode" type="text"/>
</li>
<li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i
class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i
class="fa fa-refresh"></i>&nbsp;重置</a>
</li>
</ul>
</div>
</form>
</div>
<div class="btn-group-sm" id="toolbar" role="group">
<a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="manager:air_code:add">
<i class="fa fa-plus"></i> 添加
</a>
<a class="btn btn-primary single disabled" onclick="$.operate.edit()"
shiro:hasPermission="manager:air_code:edit">
<i class="fa fa-edit"></i> 修改
</a>
<a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()"
shiro:hasPermission="manager:air_code:remove">
<i class="fa fa-remove"></i> 删除
</a>
<a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="manager:air_code:export">
<i class="fa fa-download"></i> 导出
</a>
<a class="btn btn-info" onclick="saveSort()" shiro:hasPermission="manager:air_code:edit">
<i class="fa fa-save"></i> 保存排序
</a>
</div>
<div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table"></table>
</div>
</div>
</div>
<th:block th:include="include :: footer"/>
<script th:inline="javascript">
var editFlag = [[${@permission.hasPermi('manager:air_code:edit')}]];
var removeFlag = [[${@permission.hasPermi('manager:air_code:remove')}]];
var prefix = ctx + "manager/air_code";
var originalOrders = {};
$(function () {
var options = {
url: prefix + "/list",
createUrl: prefix + "/add",
updateUrl: prefix + "/edit/{id}",
removeUrl: prefix + "/remove",
exportUrl: prefix + "/export",
modalName: "航司代码",
sortName: "orderNum",
sortOrder: "asc",
columns: [{
checkbox: true
},
{
field: 'objid',
title: '主键',
visible: false
},
{
field: 'airName',
title: '航司名称'
},
{
field: 'airCode',
title: '代码'
},
{
field: 'orderNum',
title: '排序',
width: '10',
widthUnit: '%',
align: "center",
formatter: function (value, row, index) {
var airCodeIdText = $.common.sprintf("<input type='hidden' name='airCodeIds' value='%s'>", row.objid);
var orderNumText = $.common.sprintf("<input type='text' name='orderNums' value='%s' class='form-control' style='display: inline-block; width:60px; text-align:center;'>", row.orderNum);
originalOrders[row.objid] = row.orderNum;
return airCodeIdText + orderNumText;
}
},
{
field: 'updateBy',
title: '修改人'
},
{
field: 'updateTime',
title: '修改时间'
},
{
title: '操作',
align: 'center',
formatter: function (value, row, index) {
var actions = [];
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.objid + '\')"><i class="fa fa-edit"></i>编辑</a> ');
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.objid + '\')"><i class="fa fa-remove"></i>删除</a>');
return actions.join('');
}
}]
};
$.table.init(options);
});
/* 保存排序-航司代码 */
function saveSort() {
var changedIds = [];
var changedOrderNums = [];
$("input[name='airCodeIds']").each(function() {
var airCodeId = $(this).val();
var currentOrder = $(this).next("input[name='orderNums']").val();
if (originalOrders[airCodeId] !== currentOrder) {
changedIds.push(airCodeId);
changedOrderNums.push(currentOrder);
}
});
if (changedIds.length === 0) {
$.modal.alertWarning("未检测到排序修改");
return;
}
$.operate.post(prefix + "/updateSort", { "ids": changedIds.join(","), "changedOrderNums": changedOrderNums.join(",") });
}
</script>
</body>
</html>

@ -0,0 +1,50 @@
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<head>
<th:block th:include="include :: header('修改航司代码')" />
</head>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form class="form-horizontal m" id="form-air_code-edit" th:object="${baseAirCode}">
<input name="objid" th:field="*{objid}" type="hidden">
<div class="col-xs-6">
<div class="form-group">
<label class="col-sm-4 control-label">航司名称:</label>
<div class="col-sm-8">
<input name="airName" th:field="*{airName}" class="form-control" type="text">
</div>
</div>
</div>
<div class="col-xs-6">
<div class="form-group">
<label class="col-sm-4 control-label">代码:</label>
<div class="col-sm-8">
<input name="airCode" th:field="*{airCode}" class="form-control" type="text">
</div>
</div>
</div>
<div class="col-xs-6">
<div class="form-group">
<label class="col-sm-4 control-label">排序:</label>
<div class="col-sm-8">
<input name="orderNum" th:field="*{orderNum}" class="form-control" type="text">
</div>
</div>
</div>
</form>
</div>
<th:block th:include="include :: footer" />
<script th:inline="javascript">
var prefix = ctx + "manager/air_code";
$("#form-air_code-edit").validate({
focusCleanup: true
});
function submitHandler() {
if ($.validate.form()) {
$.operate.save(prefix + "/edit", $('#form-air_code-edit').serialize());
}
}
</script>
</body>
</html>

@ -24,6 +24,7 @@ import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* Created by wangh on 2020/7/17-15:18
@ -57,6 +58,8 @@ public class ApiController extends BaseController {
private IRecordBasketCheckTaskService recordBasketCheckTaskService;//盘点任务
@Autowired
private IRecordBasketCheckContentService recordBasketCheckContentService;//盘点内容
@Autowired
private IBaseAirCodeService baseAirCodeService;
@PostMapping("/findBindingList")
public AjaxResult findBindingList(String epc) {
@ -98,6 +101,7 @@ public class ApiController extends BaseController {
return AjaxResult.error("库位没有维护");
}
// 接货查询
@PostMapping("/jion/select")
public AjaxResult jionSelect(String user) {
@ -111,8 +115,8 @@ public class ApiController extends BaseController {
// 交货任务生成
@PostMapping("/delivery/createTask")
public AjaxResult createDeliveryTask(String json, String user, List<MultipartFile> files) {
List<Long> ids = JSONArray.parseArray(json, Long.class);
public AjaxResult createDeliveryTask(String json, String airCode, String gps, String user, List<MultipartFile> files) {
List<LedgerInstantBinding> ledgerInstantBindings = JSONArray.parseArray(json, LedgerInstantBinding.class);
// 生成任务编码
int taskNumber = recordDeliveryTaskService.countNowDateTaskNumber();
taskNumber++;
@ -121,24 +125,31 @@ public class ApiController extends BaseController {
RecordDeliveryTask recordDeliveryTask = new RecordDeliveryTask();
recordDeliveryTask.setTaskCode(taskCode);
recordDeliveryTask.setCreateBy(user);
recordDeliveryTask.setAirCode(airCode);
recordDeliveryTask.setGpsLocation(gps);
recordDeliveryTaskService.insertRecordDeliveryTask(recordDeliveryTask);
// 插入资产到任务表
recordDeliveryTaskBaseketService.insertRecordDeliveryTaskBaseket(taskCode, ids);
// 插入图片
String filePath = RuoYiConfig.getUploadPath() + "/task";
for (int i = 0; i < files.size(); i++) {
try {
String fileName = FileUploadUtils.upload(filePath, files.get(i));
RecordDeliveryTaskImg recordDeliveryTaskImg = new RecordDeliveryTaskImg();
recordDeliveryTaskImg.setTaskCode(taskCode);
recordDeliveryTaskImg.setImgPath(fileName);
recordDeliveryTaskImgService.insertRecordDeliveryTaskImg(recordDeliveryTaskImg);
} catch (IOException e) {
throw new RuntimeException(e);
recordDeliveryTaskBaseketService.insertRecordDeliveryTaskBaseket(taskCode, ledgerInstantBindings);
if (files != null && !files.isEmpty()) {
// 插入图片
String filePath = RuoYiConfig.getUploadPath() + "/task";
for (MultipartFile file : files) {
try {
String fileName = FileUploadUtils.upload(filePath, file);
RecordDeliveryTaskImg recordDeliveryTaskImg = new RecordDeliveryTaskImg();
recordDeliveryTaskImg.setTaskCode(taskCode);
recordDeliveryTaskImg.setImgPath(fileName);
recordDeliveryTaskImgService.insertRecordDeliveryTaskImg(recordDeliveryTaskImg);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
// ledgerInstantBindingService.deleteLedgerInstantByBasket(ids);// 删除实时绑定记录
// 更新状态
List<Long> ids = ledgerInstantBindings.stream().map(LedgerInstantBinding::getBasketId).collect(Collectors.toList());
ledgerInstantBindingService.updateTaskStatebyBasketID(ids);
return AjaxResult.success();
}
@ -166,13 +177,34 @@ public class ApiController extends BaseController {
}
// 远程接货扫描epc
@PostMapping("/receipt/scanEpc")
public AjaxResult ReceiptScanEpc(String epc) {
// 查询货框下的货物
@PostMapping("/delivery/sanEpcQueryBasket")
public AjaxResult deliverySanEpcQueryBasket(String epc) {
BaseBasketInfo baseBasketInfo = baseBasketInfoService.selectBaseBasketInfoByEpc(epc);
if (baseBasketInfo == null) return AjaxResult.error("RFID查询失败没有维护该资产");
Long objId = baseBasketInfo.getObjId();
RecordDeliveryTaskBaseket select1 = recordDeliveryTaskBaseketService.selectRecordDeliveryTaskBaseketByBasket(objId);//查询资产是否绑定任务
LedgerInstantBinding ledgerInstantBinding = ledgerInstantBindingService.deliverySanEpcQueryBasketbyBasketId(baseBasketInfo.getObjId());
if (ledgerInstantBinding == null) return AjaxResult.error("查询失败,没有绑定条码");
return AjaxResult.success(ledgerInstantBinding);
}
// 远程接货扫描epc
@PostMapping("/receipt/scanEpc")
public AjaxResult ReceiptScanEpc(@RequestParam(name = "epc", required = false, defaultValue = "") String epc,
@RequestParam(name = "waybillNumber", required = false, defaultValue = "") String waybillNumber) {
Long objId = null;
if (epc != null && !epc.equals("")) {
BaseBasketInfo baseBasketInfo = baseBasketInfoService.selectBaseBasketInfoByEpc(epc);
if (baseBasketInfo == null) return AjaxResult.error("RFID查询失败没有维护该资产");
objId = baseBasketInfo.getObjId();
}
//查询资产是否绑定任务
RecordDeliveryTaskBaseket recordDeliveryTaskBaseket = new RecordDeliveryTaskBaseket();
recordDeliveryTaskBaseket.setBasketId(objId);
recordDeliveryTaskBaseket.setWaybillNumber(waybillNumber);
RecordDeliveryTaskBaseket select1 = recordDeliveryTaskBaseketService.selectRecordDeliveryTaskBaseketByBasket(recordDeliveryTaskBaseket);
if (select1 == null) return AjaxResult.error("资产未绑定任务或任务已完成");
// 查询所有资产
List<RecordDeliveryTaskBaseket> list = recordDeliveryTaskBaseketService.selectRecordDeliveryTaskBaseketList(select1);
@ -188,13 +220,14 @@ public class ApiController extends BaseController {
return AjaxResult.success(map);
}
// 远程接货确认
@PostMapping("/receipt/submit")
public AjaxResult receiptSubmit(@RequestBody ReceiptSubmitBeen been) {
int i = service.joinShouSubmit(been);
String taskCode = been.getTaskCode();
String user = been.getUser();
recordDeliveryTaskService.closeTaskByReceipt(taskCode, user);//关闭任务
recordDeliveryTaskService.closeTaskByReceipt(taskCode, user, been.getReceiveGpsLocation());//关闭任务
return AjaxResult.success();
}
@ -376,6 +409,7 @@ public class ApiController extends BaseController {
/**
* -使
*
* @param code
* @return
*/
@ -387,7 +421,6 @@ public class ApiController extends BaseController {
return AjaxResult.success(ledgerInstantBindings);
}
// 解绑货物和货框
@PostMapping("/unbindingCargo")
public AjaxResult unbindingCargo(Long basketId) {
@ -451,6 +484,13 @@ public class ApiController extends BaseController {
return getDataTable(list);
}
// 查询航司代码
@PostMapping("/queryAirCode")
public AjaxResult queryAirCode() {
List<String> list = baseAirCodeService.queryAirCode();
return AjaxResult.success(list);
}
@GetMapping("/getVersion")
public String getVersion() {

@ -10,6 +10,15 @@ public class ReceiptSubmitBeen {
private String user;
private List<Long> list;
private String taskCode;
private String receiveGpsLocation;
public String getReceiveGpsLocation() {
return receiveGpsLocation;
}
public void setReceiveGpsLocation(String receiveGpsLocation) {
this.receiveGpsLocation = receiveGpsLocation;
}
public String getTaskCode() {
return taskCode;

Loading…
Cancel
Save